diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index a73e712..54bcdbf 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/EvolutionDefs/ARA_Evolution.xml b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
index 0e2a17a..31c3503 100644
--- a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
+++ b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
@@ -401,7 +401,7 @@
ArachnaeBase_Race_Acidcut
4
- 1000
+ 250
@@ -638,7 +638,7 @@
ArachnaeBase_Race_Baneling
4
- 600
+ 200
@@ -1051,7 +1051,7 @@
ArachnaeBase_Race_Acidcut
4
- 1000
+ 200
@@ -1238,7 +1238,7 @@
ArachnaeBase_Race_Skyhive
4
- 800
+ 200
@@ -1348,7 +1348,7 @@
ArachnaeBase_Race_Skyhive
8
- 400
+ 200
@@ -1471,7 +1471,7 @@
ArachnaeBase_Race_Empsuicider
3
- 500
+ 200
@@ -1528,15 +1528,10 @@
-
- ArachnaeBase_Race_Acidcut
- 3
- 500
-
ArachnaeBase_Race_Locust
- 2
- 700
+ 5
+ 300
diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml
index 5179525..13ffd01 100644
--- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml
+++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml
@@ -290,11 +290,6 @@
true
true
-
- ARA_Cleaning
- true
- true
-
Haul
true
diff --git a/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml b/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml
index 1a4b2f1..ae29c16 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml
@@ -61,7 +61,7 @@
10
- 3
+ 1
@@ -115,7 +115,8 @@
- 25
+ 50
+ 1
@@ -131,6 +132,7 @@
25.0
+ 1
ARA_InsectJelly
@@ -139,7 +141,7 @@
虫蜜
true
true
- 5
+ 25
true
@@ -276,7 +278,7 @@
- 25
+ 50
@@ -290,6 +292,7 @@
25.0
+ 1
ARA_InsectJelly
diff --git a/1.6/1.6/Defs/Thing_building/ARA_Vat.xml b/1.6/1.6/Defs/Thing_building/ARA_Vat.xml
index df67c59..8ae2512 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_Vat.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_Vat.xml
@@ -77,7 +77,7 @@
ARA_RefuelingVat
一个特殊的活体建筑,可以置入阿拉克涅虫群的俘虏,使用缓慢而痛苦的方式提取其遗传物质,将其转换为精华素以供虫群使用。\n\n——怎么采集的你别问。
- ArachnaeSwarm.Building_CorpseVat
+ ArachnaeSwarm.Building_RefuelingVat
true
Normal
@@ -182,7 +182,7 @@
-
+
ArachnaeSwarm/Building/ARA_RefuelingVatTop
diff --git a/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml b/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml
index a8133aa..ee3927b 100644
--- a/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml
+++ b/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml
@@ -263,6 +263,7 @@
Idle
+
@@ -663,6 +664,7 @@
Idle
+
@@ -888,6 +890,7 @@
Idle
+
@@ -1248,6 +1251,8 @@
Idle
+
+
@@ -1522,6 +1527,7 @@
Idle
+
@@ -1792,6 +1798,13 @@
+
+
+
+
+
+
+
0.15
@@ -1825,6 +1838,7 @@
Idle
+
@@ -2131,6 +2145,7 @@
Idle
+
@@ -2405,6 +2420,7 @@
Idle
+
@@ -2679,6 +2695,7 @@
Idle
+
@@ -2986,6 +3003,7 @@
Idle
+
diff --git a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_Building_Ootheca.xml b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_Building_Ootheca.xml
index 2811907..e306ce4 100644
--- a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_Building_Ootheca.xml
+++ b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_Building_Ootheca.xml
@@ -245,4 +245,19 @@
【就绪】
孵化时间: {0}
【未选择目标】\n点击标题选择孵化目标
+
+ {0}/{1} 选中
+ 为 {0} 个选中的卵设置孵化目标
+ 为 {0} 个卵选择孵化目标
+ 清除选择
+ 已为 {0} 个卵设置目标: {1}
+ 已清除 {0} 个卵的目标
+ 已为 {0} 个卵呼叫幼虫
+ 已取消 {0} 个卵的孵化
+ 没有可用的目标
+
+
+ 多选 ({0}个)
+ 还有 {0} 个建筑...
+ 空闲
diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo
index 109b496..e9c2625 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 48d2466..320b115 100644
--- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
+++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
@@ -1,45 +1,69 @@
{
"Version": 1,
- "WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
+ "WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_corpsevat\\corpsevatextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\corpsevatextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_ootheca\\building_ootheca.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\\buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\jobs\\jobdriver_plant\\jobgiver_grower.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\\hediffs\\ara_configurablemutant\\necrotictransformationutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_configurablemutant\\necrotictransformationutility.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\\pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.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\\buildings\\building_ootheca\\gizmo_queuedincubationprogress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_queuedincubationprogress.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\\buildings\\building_ootheca\\gizmo_pawnprogressbar.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_pawnprogressbar.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\\buildings\\building_ootheca\\gizmo_neutronflux.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_neutronflux.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\\buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\building_equipmentootheca.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\\buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\building_corpsevat.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\\buildings\\building_corpsevat\\corpsevatextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\corpsevatextension.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_plant\\jobgiver_grower.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_plant\\jobgiver_grower.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\jobs\\jobdriver_clean\\jobgiver_cleaner.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_clean\\jobgiver_cleaner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_clean\\jobgiver_cleaner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\abilities\\ara_huggingface\\hediff_possession.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\\abilities\\ara_huggingface\\hediff_possession.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_huggingface\\hediff_possession.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\abilities\\ara_huggingface\\compabilityeffect_possess.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\\abilities\\ara_huggingface\\compabilityeffect_possess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_huggingface\\compabilityeffect_possess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\building_comps\\ara_buildingterrainspawn\\compdelayedterrainspawn.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\\building_comps\\ara_buildingterrainspawn\\compdelayedterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_buildingterrainspawn\\compdelayedterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\hediffs\\ara_hediffterrainspawn\\compproperties_hediffterrainspawn.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\\hediffs\\ara_hediffterrainspawn\\compproperties_hediffterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hediffterrainspawn\\compproperties_hediffterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\hediffs\\ara_hediffterrainspawn\\comphediffterrainspawn.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\\hediffs\\ara_hediffterrainspawn\\comphediffterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hediffterrainspawn\\comphediffterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
@@ -50,45 +74,123 @@
"DocumentGroups": [
{
"DockedWidth": 200,
- "SelectedChildIndex": 2,
+ "SelectedChildIndex": 6,
"Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "NecroticTransformationUtility.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ConfigurableMutant\\NecroticTransformationUtility.cs",
+ "RelativeDocumentMoniker": "Hediffs\\ARA_ConfigurableMutant\\NecroticTransformationUtility.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ConfigurableMutant\\NecroticTransformationUtility.cs",
+ "RelativeToolTip": "Hediffs\\ARA_ConfigurableMutant\\NecroticTransformationUtility.cs",
+ "ViewState": "AgIAAA8AAAAAAAAAAAAtwCIAAAAcAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-26T08:44:42.184Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "CompNodeSwarmLifetime.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
+ "RelativeDocumentMoniker": "Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
+ "RelativeToolTip": "Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
+ "ViewState": "AgIAADYAAAAAAAAAAAAtwEoAAAAbAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-26T08:44:35.266Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "Title": "Gizmo_QueuedIncubationProgress.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_QueuedIncubationProgress.cs",
+ "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Gizmo_QueuedIncubationProgress.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_QueuedIncubationProgress.cs",
+ "RelativeToolTip": "Buildings\\Building_Ootheca\\Gizmo_QueuedIncubationProgress.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAuAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-26T08:11:04.23Z",
+ "EditorCaption": ""
+ },
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
{
"$type": "Document",
- "DocumentIndex": 1,
- "Title": "CorpseVatExtension.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
- "RelativeToolTip": "Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAADwvx0AAAAoAAAAAAAAAA==",
+ "DocumentIndex": 4,
+ "Title": "Gizmo_PawnProgressBar.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs",
+ "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs",
+ "RelativeToolTip": "Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAmAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2026-01-23T10:25:01.777Z",
+ "WhenOpened": "2026-01-26T08:12:03.772Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 5,
+ "Title": "Gizmo_NeutronFlux.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_NeutronFlux.cs",
+ "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Gizmo_NeutronFlux.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_NeutronFlux.cs",
+ "RelativeToolTip": "Buildings\\Building_Ootheca\\Gizmo_NeutronFlux.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAiAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-26T08:11:53.324Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
+ "Title": "Building_Ootheca.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs",
+ "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Building_Ootheca.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs",
+ "RelativeToolTip": "Buildings\\Building_Ootheca\\Building_Ootheca.cs",
+ "ViewState": "AgIAABEBAAAAAAAAAAAswCoBAAAkAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-23T08:31:14.555Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 6,
+ "Title": "Building_EquipmentOotheca.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs",
+ "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs",
+ "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs",
+ "ViewState": "AgIAAEIBAAAAAAAAAAAAAEMBAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-26T07:52:41.869Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 7,
"Title": "Building_CorpseVat.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
"RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
"RelativeToolTip": "Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
- "ViewState": "AgIAAKAAAAAAAAAAAAAlwMkAAABLAAAAAAAAAA==",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAASAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-23T10:24:46.264Z",
"EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 3,
+ "DocumentIndex": 9,
"Title": "JobGiver_Grower.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\JobGiver_Grower.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\JobGiver_Grower.cs",
"RelativeDocumentMoniker": "Jobs\\JobDriver_Plant\\JobGiver_Grower.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\JobGiver_Grower.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\JobGiver_Grower.cs",
"RelativeToolTip": "Jobs\\JobDriver_Plant\\JobGiver_Grower.cs",
"ViewState": "AgIAAFMAAAAAAAAAAAAQwGkAAAANAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -96,11 +198,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 5,
+ "DocumentIndex": 11,
"Title": "Hediff_Possession.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\Hediff_Possession.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\Hediff_Possession.cs",
"RelativeDocumentMoniker": "Abilities\\ARA_HuggingFace\\Hediff_Possession.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\Hediff_Possession.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\Hediff_Possession.cs",
"RelativeToolTip": "Abilities\\ARA_HuggingFace\\Hediff_Possession.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -108,11 +210,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 6,
+ "DocumentIndex": 12,
"Title": "CompAbilityEffect_Possess.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs",
"RelativeDocumentMoniker": "Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs",
"RelativeToolTip": "Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs",
"ViewState": "AgIAAHcAAAAAAAAAAAAAAIkAAAA5AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -120,24 +222,23 @@
},
{
"$type": "Document",
- "DocumentIndex": 2,
- "Title": "Building_Ootheca.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Building_Ootheca.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs",
- "RelativeToolTip": "Buildings\\Building_Ootheca\\Building_Ootheca.cs",
- "ViewState": "AgIAABoBAAAAAAAAAAAvwEUBAAAIAAAAAAAAAA==",
+ "DocumentIndex": 8,
+ "Title": "CorpseVatExtension.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
+ "RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
+ "RelativeToolTip": "Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAADwvx0AAAAoAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2026-01-23T08:31:14.555Z",
- "EditorCaption": ""
+ "WhenOpened": "2026-01-23T10:25:01.777Z"
},
{
"$type": "Document",
- "DocumentIndex": 7,
+ "DocumentIndex": 13,
"Title": "CompDelayedTerrainSpawn.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"RelativeDocumentMoniker": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"RelativeToolTip": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"ViewState": "AgIAAFEAAAAAAAAAAAAAAF8AAAA+AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -145,11 +246,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 8,
+ "DocumentIndex": 14,
"Title": "CompProperties_HediffTerrainSpawn.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs",
"RelativeDocumentMoniker": "Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs",
"RelativeToolTip": "Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs",
"ViewState": "AgIAAAUAAAAAAAAAAAAtwBkAAAAxAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -157,11 +258,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 4,
+ "DocumentIndex": 10,
"Title": "JobGiver_Cleaner.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs",
"RelativeDocumentMoniker": "Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs",
"RelativeToolTip": "Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAABwAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -169,11 +270,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 9,
+ "DocumentIndex": 15,
"Title": "CompHediffTerrainSpawn.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
"RelativeDocumentMoniker": "Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
"RelativeToolTip": "Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
"ViewState": "AgIAAKIAAAAAAAAAAAAawLQAAAAMAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs
index 786d289..13521dc 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs
@@ -212,26 +212,6 @@ namespace ArachnaeSwarm
// 如果选择了多个,检查是否有其他卵已经启动召唤
if (selectedOothecas.Count > 1)
{
- // 检查是否有其他卵已经分配了幼虫
- foreach (var ootheca in selectedOothecas)
- {
- if (ootheca != this && ootheca.assignedLarva != null)
- {
- // 已经有其他卵开始召唤幼虫了,跳过
- return;
- }
- }
-
- // 检查是否有其他卵已经处于孵化状态
- foreach (var ootheca in selectedOothecas)
- {
- if (ootheca != this && ootheca.isIncubating)
- {
- // 已经有其他卵在孵化了,跳过
- return;
- }
- }
-
// 如果是同时按下gizmo,我们希望只有一个卵响应
// 我们可以使用一个简单的规则:只让最近选择的一个卵响应
// 这里我们选择第一个(可能是玩家最后点击的,取决于选择顺序)
@@ -311,6 +291,10 @@ namespace ArachnaeSwarm
{
if (pawn.def.defName == "ArachnaeBase_Race_Larva" && !pawn.Downed && !pawn.Dead)
{
+ if (pawn.CurJobDef.defName == "ARA_OperateIncubator")
+ {
+ continue;
+ }
if (Position.DistanceTo(pawn.Position) <= searchRadius)
return pawn;
}
@@ -575,92 +559,285 @@ namespace ArachnaeSwarm
}
return sb.ToString().TrimEndNewlines();
}
-
public override IEnumerable GetGizmos()
{
- foreach (var gizmo in base.GetGizmos())
- {
- if (gizmo is Command_Action cmd && cmd.defaultLabel != null)
- {
- string label = cmd.defaultLabel.ToString();
- if (label.Contains("拆除") || label.Contains("Deconstruct") || label.Contains("半径") || label.Contains("Radius"))
- continue;
- }
-
- // 强制将基础组件(如 Refuelable)甚至默认排序为 -100 的东西移到后面
- if (gizmo.Order >= -100f && gizmo.Order <= 0f)
- {
- gizmo.Order = -90f;
- }
-
- yield return gizmo;
- }
+ // 首先获取选中的同类建筑
+ var selectedOothecas = GetSelectedOothecas();
+ bool isMultiSelect = selectedOothecas.Count > 1;
if (Faction == Faction.OfPlayer)
{
- yield return new Gizmo_PawnProgressBar(this);
- yield return new Gizmo_NeutronFlux(this);
-
- var config = IncubatorData?.SelectedConfig;
-
- // 添加订单按钮(未孵化且未选目标,或已选目标但支持切换)
- if (!isIncubating && assignedLarva == null)
+ // 在多选时,只在第一个建筑上显示进度条和通量条
+ if (!isMultiSelect || (isMultiSelect && selectedOothecas.First() == this))
{
- yield return new Command_Action
- {
- defaultLabel = "ARA_Gizmo_AddOrder".Translate(config != null ? 1 : 0, 1),
- defaultDesc = "ARA_Gizmo_AddOrderDesc_Pawn".Translate(),
- icon = ContentFinder.Get("ArachnaeSwarm/UI/Commands/ARA_NodeSwarmIcon", false),
- action = () => IncubatorData?.ShowFloatMenu(),
- Order = 100f
- };
+ yield return new Gizmo_PawnProgressBar(this);
+ yield return new Gizmo_NeutronFlux(this);
}
- // 呼叫幼虫按钮逻辑
+ var config = IncubatorData?.SelectedConfig;
+
+ // 添加订单按钮(多选时合并)
+ if (!isIncubating && assignedLarva == null)
+ {
+ // 多选时,只在第一个建筑上显示
+ if (!isMultiSelect || (isMultiSelect && selectedOothecas.First() == this))
+ {
+ // 计算多选时的计数
+ int selectedCount = selectedOothecas.Count(o => !o.isIncubating && o.assignedLarva == null);
+ int selectedWithConfig = selectedOothecas.Count(o =>
+ !o.isIncubating && o.assignedLarva == null && o.IncubatorData?.SelectedConfig != null);
+
+ string label = isMultiSelect
+ ? $"ARA_Gizmo_AddOrder_Multi".Translate(selectedWithConfig, selectedCount)
+ : "ARA_Gizmo_AddOrder".Translate(config != null ? 1 : 0, 1);
+
+ string desc = isMultiSelect
+ ? "ARA_Gizmo_AddOrderDesc_Multi".Translate(selectedCount)
+ : "ARA_Gizmo_AddOrderDesc_Pawn".Translate();
+
+ yield return new Command_Action
+ {
+ defaultLabel = label,
+ defaultDesc = desc,
+ icon = ContentFinder.Get("ArachnaeSwarm/UI/Commands/ARA_NodeSwarmIcon", false),
+ action = () => ShowMultiSelectOrderMenu(selectedOothecas),
+ Order = 100f
+ };
+ }
+ }
+ // 呼叫幼虫按钮逻辑(多选时同样处理)
if (!isIncubating && config != null && config.IsResearchComplete)
{
if (assignedLarva == null)
{
- // 无幼虫,可以呼叫
- yield return new Command_Action
+ // 多选时只在第一个建筑上显示,但会为所有符合条件的建筑呼叫幼虫
+ if (!isMultiSelect || (isMultiSelect && selectedOothecas.First() == this))
{
- defaultLabel = "ARA_Gizmo_CallLarva".Translate(),
- defaultDesc = BuildCallLarvaDescription(config),
- icon = ContentFinder.Get("ArachnaeSwarm/UI/Commands/ARA_CallLarva", false),
- action = CallLarva,
- Order = 100f
- };
+ yield return new Command_Action
+ {
+ defaultLabel = "ARA_Gizmo_CallLarva".Translate(),
+ defaultDesc = BuildCallLarvaDescription(config),
+ icon = ContentFinder.Get("ArachnaeSwarm/UI/Commands/ARA_CallLarva", false),
+ action = () => CallLarvaForMultiSelect(selectedOothecas),
+ Order = 100f
+ };
+ }
}
else
{
// 幼虫在路上或工作中
- string statusText = larvaOperateTicksRemaining > 0
- ? "ARA_Gizmo_LarvaActivating".Translate()
+ string statusText = larvaOperateTicksRemaining > 0
+ ? "ARA_Gizmo_LarvaActivating".Translate()
: "ARA_Gizmo_LarvaOnTheWay".Translate();
- yield return new Command_Action
+
+ if (!isMultiSelect || (isMultiSelect && selectedOothecas.First() == this))
{
- defaultLabel = statusText,
- defaultDesc = "ARA_Gizmo_LarvaWorkingDesc".Translate(0),
- icon = ContentFinder.Get("ArachnaeSwarm/UI/Commands/ARA_CallLarva", false),
- Disabled = true,
- Order = 100f
- };
+ yield return new Command_Action
+ {
+ defaultLabel = statusText,
+ defaultDesc = "ARA_Gizmo_LarvaWorkingDesc".Translate(0),
+ icon = ContentFinder.Get("ArachnaeSwarm/UI/Commands/ARA_CallLarva", false),
+ Disabled = true,
+ Order = 100f
+ };
+ }
}
}
-
- if (isIncubating)
+ // 取消孵化按钮
+ if (isIncubating && (!isMultiSelect || (isMultiSelect && selectedOothecas.First() == this)))
{
yield return new Command_Action
{
defaultLabel = "ARA_OothecaIncubator.CancelIncubation".Translate(),
icon = ContentFinder.Get("UI/Commands/Cancel", false),
- action = CancelIncubation,
+ action = () => CancelIncubationForMultiSelect(selectedOothecas),
Order = 100f
};
}
}
}
+ ///
+ /// 为多选建筑显示订单菜单
+ ///
+ private void ShowMultiSelectOrderMenu(List oothecas)
+ {
+ if (oothecas == null || oothecas.Count == 0)
+ return;
+ // 获取第一个建筑的配置列表(假设所有建筑的配置相同)
+ var configs = IncubatorData?.IncubationConfigs;
+ if (configs == null || configs.Count == 0)
+ return;
+
+ List options = new List();
+
+ // 添加清除选项
+ options.Add(new FloatMenuOption(
+ "ARA_Menu_ClearSelection".Translate(),
+ () => ClearSelectionForMultiSelect(oothecas),
+ MenuOptionPriority.High
+ ));
+
+ options.Add(new FloatMenuOption(
+ "--------------------",
+ null
+ ));
+
+ // 添加配置选项
+ for (int i = 0; i < configs.Count; i++)
+ {
+ var cfg = configs[i];
+ int index = i;
+
+ string label = cfg.pawnKind.LabelCap;
+
+ if (cfg.requiredResearch != null && !cfg.requiredResearch.IsFinished)
+ {
+ label += " (" + "ARA_Menu_RequiresResearch".Translate(cfg.requiredResearch.LabelCap) + ")";
+ options.Add(new FloatMenuOption(label, null));
+ }
+ else
+ {
+ label += " (" + "ARA_Menu_Days".Translate(cfg.daysRequired.ToString("F1")) + ")";
+ options.Add(new FloatMenuOption(
+ label,
+ () => SetConfigForMultiSelect(oothecas, index, cfg)
+ ));
+ }
+ }
+
+ Find.WindowStack.Add(new FloatMenu(options, "ARA_Menu_SelectIncubationTarget_Multi".Translate(oothecas.Count)));
+ }
+ ///
+ /// 为多个建筑设置配置
+ ///
+ private void SetConfigForMultiSelect(List oothecas, int configIndex, IncubationConfig config)
+ {
+ int successCount = 0;
+
+ foreach (var ootheca in oothecas)
+ {
+ // 只对未孵化的建筑设置
+ if (!ootheca.isIncubating && ootheca.assignedLarva == null)
+ {
+ ootheca.IncubatorData?.SwitchToConfig(configIndex);
+ successCount++;
+ }
+ }
+
+ if (successCount > 0)
+ {
+ Messages.Message("ARA_Msg_MultiSelectConfigSet".Translate(successCount, config.pawnKind.LabelCap),
+ MessageTypeDefOf.PositiveEvent);
+ }
+ }
+ ///
+ /// 为多个建筑清除选择
+ ///
+ private void ClearSelectionForMultiSelect(List oothecas)
+ {
+ int clearedCount = 0;
+
+ foreach (var ootheca in oothecas)
+ {
+ if (!ootheca.isIncubating && ootheca.assignedLarva == null)
+ {
+ ootheca.IncubatorData?.SwitchToConfig(-1);
+ clearedCount++;
+ }
+ }
+
+ if (clearedCount > 0)
+ {
+ Messages.Message("ARA_Msg_MultiSelectConfigCleared".Translate(clearedCount),
+ MessageTypeDefOf.NeutralEvent);
+ }
+ }
+ ///
+ /// 为多个建筑呼叫幼虫
+ ///
+ private void CallLarvaForMultiSelect(List oothecas)
+ {
+ int calledCount = 0;
+ List calledOothecas = new List();
+
+ // 按位置排序,确保按顺序呼叫
+ var sortedOothecas = oothecas
+ .Where(o => !o.isIncubating && o.assignedLarva == null && o.IncubatorData?.SelectedConfig != null)
+ .OrderBy(o => o.Position.x).ThenBy(o => o.Position.z)
+ .ToList();
+
+ foreach (var ootheca in sortedOothecas)
+ {
+ // 确保不会为同一个建筑多次呼叫
+ if (ootheca.CallLarvaIfPossible())
+ {
+ calledOothecas.Add(ootheca);
+ calledCount++;
+
+ // 可以添加延迟,避免同时呼叫多个幼虫
+ // 但保持简单,让它们同时尝试
+ }
+ }
+
+ if (calledCount > 0)
+ {
+ Messages.Message("ARA_Msg_MultiCallLarva".Translate(calledCount),
+ MessageTypeDefOf.PositiveEvent);
+ }
+ else
+ {
+ Messages.Message("ARA_OothecaIncubator.NoValidTargets".Translate(),
+ MessageTypeDefOf.RejectInput);
+ }
+ }
+ ///
+ /// 为多个建筑取消孵化
+ ///
+ private void CancelIncubationForMultiSelect(List oothecas)
+ {
+ int cancelledCount = 0;
+
+ foreach (var ootheca in oothecas)
+ {
+ if (ootheca.isIncubating)
+ {
+ ootheca.CancelIncubation();
+ cancelledCount++;
+ }
+ }
+
+ if (cancelledCount > 0)
+ {
+ Messages.Message("ARA_Msg_MultiCancelIncubation".Translate(cancelledCount),
+ MessageTypeDefOf.NeutralEvent);
+ }
+ }
+ ///
+ /// 安全的呼叫幼虫方法
+ ///
+ public bool CallLarvaIfPossible()
+ {
+ // 检查是否已经有幼虫在操作或正在孵化
+ if (isIncubating || assignedLarva != null) return false;
+
+ // 检查是否有配置
+ if (IncubatorData?.SelectedConfig == null) return false;
+
+ // 检查研究是否完成
+ if (!IncubatorData.SelectedConfig.IsResearchComplete) return false;
+
+ var larva = FindLarva();
+ if (larva == null)
+ {
+ return false;
+ }
+
+ var job = JobMaker.MakeJob(ARA_JobDefOf.ARA_OperateIncubator, this);
+ larva.jobs.TryTakeOrderedJob(job, JobTag.MiscWork);
+ assignedLarva = larva;
+ return true;
+ }
public override void ExposeData()
{
base.ExposeData();
diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs
index 14ea652..5444d56 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs
@@ -1,5 +1,7 @@
+// 修改 Gizmo_PawnProgressBar.cs
using RimWorld;
using System.Collections.Generic;
+using System.Linq;
using UnityEngine;
using Verse;
@@ -7,6 +9,7 @@ namespace ArachnaeSwarm
{
///
/// 统一的双向进度条 Gizmo - 用于所有孵化建筑/组件
+ /// 支持多选显示
///
[StaticConstructorOnStartup]
public class Gizmo_PawnProgressBar : Gizmo
@@ -22,16 +25,219 @@ namespace ArachnaeSwarm
private static readonly Texture2D EmptyBarTex = SolidColorMaterials.NewSolidColorTexture(new Color(0.1f, 0.1f, 0.1f, 0.5f));
private readonly IOrderGizmoProvider provider;
+ private readonly Thing parentThing;
+
+ // 多选相关
+ private bool isMultiSelect = false;
+ private List multiSelectProviders = new List();
public Gizmo_PawnProgressBar(IOrderGizmoProvider provider)
{
this.provider = provider;
+ this.parentThing = provider as Thing;
this.Order = -140f;
+
+ // 检查是否是多个建筑被选中
+ UpdateMultiSelectInfo();
+ }
+
+ private void UpdateMultiSelectInfo()
+ {
+ if (Find.Selector == null || parentThing == null)
+ return;
+
+ // 获取选中的同类建筑
+ var selectedThings = Find.Selector.SelectedObjects
+ .Where(obj => obj is Thing thing &&
+ thing.def == parentThing.def &&
+ thing.Faction == Faction.OfPlayer)
+ .ToList();
+
+ isMultiSelect = selectedThings.Count > 1;
+
+ if (isMultiSelect)
+ {
+ multiSelectProviders.Clear();
+ foreach (var thing in selectedThings)
+ {
+ if (thing is IOrderGizmoProvider provider)
+ {
+ multiSelectProviders.Add(provider);
+ }
+ }
+ }
}
public override float GetWidth(float maxWidth) => Mathf.Min(Width, maxWidth);
public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth, GizmoRenderParms parms)
+ {
+ // 更新多选信息
+ UpdateMultiSelectInfo();
+
+ if (isMultiSelect)
+ {
+ return DrawMultiSelectGizmo(topLeft, maxWidth);
+ }
+ else
+ {
+ return DrawSingleSelectGizmo(topLeft, maxWidth);
+ }
+ }
+
+ private GizmoResult DrawMultiSelectGizmo(Vector2 topLeft, float maxWidth)
+ {
+ // 计算显示多少个建筑的进度
+ int displayCount = Mathf.Min(multiSelectProviders.Count, 4); // 最多显示4个
+
+ // 计算高度
+ float contentHeight = Padding * 2 + Text.LineHeight + Spacing; // 标题
+ contentHeight += displayCount * (BarHeight + Spacing + 14f); // 每个建筑的进度条
+ float totalHeight = Mathf.Max(75f, contentHeight);
+
+ Rect rect = new Rect(topLeft.x, topLeft.y - (totalHeight - 75f), GetWidth(maxWidth), totalHeight);
+ Widgets.DrawWindowBackground(rect);
+
+ Rect innerRect = rect.ContractedBy(Padding);
+ float curY = innerRect.y;
+
+ // === 多选标题区域 ===
+ Text.Font = GameFont.Small;
+ Rect titleRect = new Rect(innerRect.x, curY, innerRect.width, Text.LineHeight);
+
+ string title = "ARA_Gizmo_MultiSelectTitle".Translate(multiSelectProviders.Count);
+ GUI.color = new Color(0.7f, 0.9f, 1f);
+ Widgets.Label(titleRect, title);
+ GUI.color = Color.white;
+
+ curY += Text.LineHeight + Spacing;
+
+ // === 显示每个建筑的进度 ===
+ for (int i = 0; i < displayCount; i++)
+ {
+ var currentProvider = multiSelectProviders[i];
+ var orders = currentProvider.GetOrdersForGizmo();
+
+ if (orders.Count > 0)
+ {
+ // 建筑标签
+ Text.Font = GameFont.Tiny;
+ Rect buildingLabelRect = new Rect(innerRect.x, curY, innerRect.width, 12f);
+ string buildingLabel = $"{i+1}. {(currentProvider as Thing)?.LabelCap ?? "Unknown"}";
+ Widgets.Label(buildingLabelRect, buildingLabel);
+ curY += 12f;
+
+ // 显示第一个订单
+ var order = orders[0];
+ Rect orderRect = new Rect(innerRect.x, curY, innerRect.width, BarHeight + 14f);
+ DrawMultiSelectOrderItem(orderRect, order, currentProvider, i);
+ curY += BarHeight + 14f + Spacing;
+ }
+ else
+ {
+ // 无订单状态
+ Text.Font = GameFont.Tiny;
+ Rect emptyRect = new Rect(innerRect.x, curY, innerRect.width, 20f);
+ GUI.color = new Color(0.7f, 0.7f, 0.7f);
+ Widgets.Label(emptyRect, "ARA_Status_Empty".Translate());
+ GUI.color = Color.white;
+ curY += 20f + Spacing;
+ }
+
+ // 添加分隔线
+ if (i < displayCount - 1)
+ {
+ Widgets.DrawLineHorizontal(innerRect.x, curY - Spacing/2, innerRect.width);
+ curY += 2f;
+ }
+ }
+
+ // 如果有更多建筑,显示提示
+ if (multiSelectProviders.Count > displayCount)
+ {
+ Text.Font = GameFont.Tiny;
+ Rect moreRect = new Rect(innerRect.x, curY, innerRect.width, 14f);
+ GUI.color = new Color(0.5f, 0.5f, 0.5f);
+ Widgets.Label(moreRect, "ARA_Gizmo_MoreBuildings".Translate(multiSelectProviders.Count - displayCount));
+ GUI.color = Color.white;
+ }
+
+ Text.Font = GameFont.Small;
+ return new GizmoResult(GizmoState.Clear);
+ }
+
+ private void DrawMultiSelectOrderItem(Rect rect, PawnOrderDisplayInfo order, IOrderGizmoProvider provider, int index)
+ {
+ float labelHeight = 14f;
+
+ // 标签行
+ Text.Font = GameFont.Tiny;
+ Rect labelRect = new Rect(rect.x, rect.y, rect.width - 20f, labelHeight);
+
+ GUI.color = Color.white;
+ Widgets.Label(labelRect, $"{order.label} {order.progress.ToStringPercent("F0")}");
+
+ // 取消按钮(针对单个建筑)
+ Rect cancelRect = new Rect(rect.xMax - 16f, rect.y, 16f, labelHeight);
+ if (Widgets.ButtonText(cancelRect, "×", false))
+ {
+ provider.RemoveOrderByIndex(0);
+ }
+
+ // 进度条
+ Rect barRect = new Rect(rect.x, rect.y + labelHeight, rect.width, BarHeight);
+
+ if (order.status == OrderStatus.Incubating)
+ {
+ // 双向进度条:品质向左,进度向右
+ float midX = barRect.x + barRect.width / 2f;
+ float halfWidth = barRect.width / 2f;
+
+ // 背景
+ GUI.DrawTexture(barRect, EmptyBarTex);
+
+ // 品质进度(向左)
+ float qualityWidth = halfWidth * order.qualityProgress;
+ Rect qualityRect = new Rect(midX - qualityWidth, barRect.y, qualityWidth, barRect.height);
+ GUI.DrawTexture(qualityRect, QualityBarTex);
+
+ // 生产进度(向右)
+ float progressWidth = halfWidth * order.progress;
+ Rect progressRect = new Rect(midX, barRect.y, progressWidth, barRect.height);
+ GUI.DrawTexture(progressRect, ProgressBarTex);
+
+ // 中线
+ Widgets.DrawLineVertical(midX, barRect.y, barRect.height);
+
+ // 百分比文字
+ Text.Font = GameFont.Tiny;
+ Text.Anchor = TextAnchor.MiddleLeft;
+ GUI.color = new Color(0.8f, 0.9f, 1f);
+ Widgets.Label(new Rect(barRect.x + 2f, barRect.y, halfWidth - 4f, barRect.height),
+ order.qualityProgress.ToStringPercent("F0"));
+
+ Text.Anchor = TextAnchor.MiddleRight;
+ GUI.color = new Color(0.8f, 1f, 0.8f);
+ Widgets.Label(new Rect(midX + 2f, barRect.y, halfWidth - 4f, barRect.height),
+ order.progress.ToStringPercent("F0"));
+
+ Text.Anchor = TextAnchor.UpperLeft;
+ GUI.color = Color.white;
+ }
+ else
+ {
+ // 等待幼虫状态:显示等待指示
+ GUI.DrawTexture(barRect, EmptyBarTex);
+ Text.Font = GameFont.Tiny;
+ Text.Anchor = TextAnchor.MiddleCenter;
+ GUI.color = new Color(0.8f, 0.6f, 0.2f);
+ Widgets.Label(barRect, "ARA_Status_WaitingForLarva".Translate());
+ GUI.color = Color.white;
+ Text.Anchor = TextAnchor.UpperLeft;
+ }
+ }
+
+ private GizmoResult DrawSingleSelectGizmo(Vector2 topLeft, float maxWidth)
{
var orders = provider.GetOrdersForGizmo();
int orderCount = orders.Count;