diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index 7b61b85..6f2637f 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/AbilityDefs/ARA_Abilities.xml b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml
index c4b4486..9593b9a 100644
--- a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml
+++ b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml
@@ -190,6 +190,10 @@
ARA_InsectCreep
13
+
+ ARA_Creep
+ ARA_Incubator_Nutrient_Solution
+
diff --git a/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml b/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml
index a718615..b92231a 100644
--- a/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml
+++ b/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml
@@ -22,6 +22,7 @@
ARA_Chitin_Shell
+ 背部甲片
0.02
Outside
@@ -164,6 +165,7 @@
ARA_Chitin_Shell
+ 尾部甲片
0.01
Outside
@@ -220,6 +222,7 @@
ARA_Chitin_Shell
+ 头部甲片
0.02
Outside
@@ -463,6 +466,7 @@
ARA_Chitin_Shell
+ 左前腿甲片
0.02
Outside
@@ -495,6 +499,7 @@
ARA_Chitin_Shell
+ 右前腿甲片
0.02
Outside
@@ -527,6 +532,7 @@
ARA_Chitin_Shell
+ 左后腿甲片
0.02
Outside
@@ -559,6 +565,7 @@
ARA_Chitin_Shell
+ 右后腿甲片
0.02
Outside
@@ -4221,6 +4228,7 @@
ARA_Chitin_Shell
+ 背部甲片
0.02
Outside
@@ -4363,6 +4371,7 @@
ARA_Chitin_Shell
+ 尾部甲片
0.01
Outside
@@ -4392,6 +4401,7 @@
ARA_Chitin_Shell
+ 头部甲片
0.02
Outside
@@ -4635,6 +4645,7 @@
ARA_Chitin_Shell
+ 左前腿甲片
0.02
Outside
@@ -4667,6 +4678,7 @@
ARA_Chitin_Shell
+ 右前腿甲片
0.02
Outside
@@ -4699,6 +4711,7 @@
ARA_Chitin_Shell
+ 左后腿甲片
0.02
Outside
@@ -4731,6 +4744,7 @@
ARA_Chitin_Shell
+ 右后腿甲片
0.02
Outside
diff --git a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
index c038d67..7fee5fb 100644
--- a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
+++ b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
@@ -116,7 +116,7 @@
ARA_Myrmecocystus_Production_Medicine
- 这只阿拉克涅蜜罐种已经获得拔耀,不再生产虫蜜,而是生产巢穴所稀缺的药物、化学品,并可以操纵拟线种寄生虫。
+ 这只阿拉克涅蜜罐种已经获得拔耀,不再生产虫蜜,而是定期生产巢穴所稀缺的药物,并可以操纵拟线种寄生虫。
ARA_InsectJelly
diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml
index 02a1d74..92a7451 100644
--- a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml
+++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml
@@ -448,6 +448,9 @@
7.7
30
true
+
+ ARA_Incubator_Nutrient_Solution
+
diff --git a/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml b/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml
index 255d99c..0545910 100644
--- a/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml
+++ b/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml
@@ -487,17 +487,6 @@
ARA_Technology_2NPT
-
- ARA_Technology_4NPT
-
- <color=#887E78><i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径,它们奠定了虫群在生物学上的优越性。</i></color>\n\n允许虫族建造孵化池。一种专用于批量生产虫族的孵化场地。孵化池的孵化效率比孵化茧更高。
- 1800
- 12.00
- 2.10
-
- ARA_Technology_1NPT
-
-
ARA_Technology_8CPE
@@ -590,7 +579,7 @@
ARA_Technology_1MED
- <color=#887E78><i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径,它们奠定了虫群在生物学上的优越性。</i></color>\n\n允许蜜罐种进行定向进化,抛弃生产虫蜜的能力,以强化其自身的医疗能力并解锁孵化医药茧的技能。\n\n阿拉克涅虫群所有需要蓝图的科技,其研究只能通过基因试验卵进行。
+ <color=#887E78><i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径,它们奠定了虫群在生物学上的优越性。</i></color>\n\n允许蜜罐种进行定向进化,抛弃生产虫蜜的能力,以强化其自身的医疗能力并定期产出药物。\n\n阿拉克涅虫群所有需要蓝图的科技,其研究只能通过基因试验卵进行。
1200
5.50
2.10
diff --git a/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml b/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml
index dbddbfc..66d1218 100644
--- a/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml
+++ b/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml
@@ -215,8 +215,8 @@
- 30
- 3.5
+ 60
+ 2.5
0.5
false
Cut
diff --git a/1.6/1.6/Defs/Thing_building/ARA_Building.xml b/1.6/1.6/Defs/Thing_building/ARA_Building.xml
index 3e67af5..55794e0 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_Building.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_Building.xml
@@ -510,6 +510,10 @@
ARA_InsectCreep
6
+
+ ARA_Creep
+ ARA_Incubator_Nutrient_Solution
+
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 5a436b9..b8456e8 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml
@@ -39,10 +39,6 @@
CocoonDestroyed
-
- ARA_InsectCreep
- 4.6
-
diff --git a/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml b/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml
index 8c2b54d..a41b4c6 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml
@@ -85,10 +85,6 @@
-
- ARA_InsectCreep
- 18
-
8
(220,210,171,0)
@@ -163,10 +159,6 @@
-1
false
-
- ARA_InsectCreep
- 6
-
@@ -228,10 +220,6 @@
-
- ARA_InsectCreep
- 3
-
ResearchSpeedFactor
@@ -439,7 +427,7 @@
ARA_Carapace_Productor
- 一个阿拉克涅虫族活体组织,可以充分利用活体钜菌的催化能力,将钢铁转换为甲壳素。
+ 一个阿拉克涅虫族活体组织,可以充分利用活体钜菌的催化能力,将附近的尸体转换为骨柱,并命令其他虫群成员将其拆除,以得到甲壳素。
Building
ArachnaeSwarm/Building/ARA_Carapace_Productor
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 3e84d50..f807877 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml
@@ -58,7 +58,7 @@
10
- 1
+ 3
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 88e3c87..a52b2e3 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_Vat.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_Vat.xml
@@ -187,11 +187,6 @@
8
1
-
-
- ARA_InsectCreep
- 3
-
diff --git a/1.6/1.6/Defs/Thing_building/ARA_WormholeDefs.xml b/1.6/1.6/Defs/Thing_building/ARA_WormholeDefs.xml
index b9ac1c8..7f61ee4 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_WormholeDefs.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_WormholeDefs.xml
@@ -73,10 +73,6 @@
ARA_NutrientNetworkTower
-
- ARA_InsectCreep
- 5
-
ARA_Buildings
ARA_Creep
@@ -126,6 +122,10 @@
ARA_InsectCreep
12
+
+ ARA_Creep
+ ARA_Incubator_Nutrient_Solution
+
None
diff --git a/Content/Textures/ArachnaeSwarm/Terrain/Surfaces/ARA_InsectJelly_Terrain.png b/Content/Textures/ArachnaeSwarm/Terrain/Surfaces/ARA_InsectJelly_Terrain.png
index 51ee441..068499b 100644
Binary files a/Content/Textures/ArachnaeSwarm/Terrain/Surfaces/ARA_InsectJelly_Terrain.png and b/Content/Textures/ArachnaeSwarm/Terrain/Surfaces/ARA_InsectJelly_Terrain.png differ
diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo
index 0ded561..5e2feef 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 6361efb..e235bc7 100644
--- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
+++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
@@ -3,256 +3,24 @@
"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\\needs\\need_honeyproduction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:needs\\need_honeyproduction.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_comphediffgiver\\compproperties_hediffgiver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_comphediffgiver\\compproperties_hediffgiver.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\\needs\\need_chitinarmor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:needs\\need_chitinarmor.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_comphediffgiver\\comphediffgiver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_comphediffgiver\\comphediffgiver.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\\verbs\\cleave\\verb_meleeattack_cleave.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\cleave\\verb_meleeattack_cleave.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|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\verbs\\cleave\\compcleave.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\cleave\\compcleave.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}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\thing_comps\\ara_areaadamage\\compareadamage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_areaadamage\\compareadamage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_PreventPartLoss\\PreventPartLossPatches.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_draftableanimals.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:harmonypatches\\patch_draftableanimals.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_hivemind\\hediff_hivemindmaster.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\hediff_hivemindmaster.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_dormancyvat\\building_dormancyvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_dormancyvat\\building_dormancyvat.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\\workgivers\\workgiver_stripchitin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:workgivers\\workgiver_stripchitin.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\\workgivers\\workgiver_extracthoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:workgivers\\workgiver_extracthoney.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\\ara_hediffdefof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:ara_hediffdefof.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\\workgivers\\workgiver_feedwithhoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:workgivers\\workgiver_feedwithhoney.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_hivemind\\compabilityeffect_binddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\compabilityeffect_binddrone.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_hivemind\\hediffcomp_hiveminddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\hediffcomp_hiveminddrone.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_hivemind\\hediff_hiveminddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\hediff_hiveminddrone.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_dratfableanimals\\beastunit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_dratfableanimals\\beastunit.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_dratfableanimals\\compdratfableanimals.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_dratfableanimals\\compdratfableanimals.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\\pawn_comps\\ara_dratfableanimals\\compproperties_dratfableanimals.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_dratfableanimals\\compproperties_dratfableanimals.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\\thing_comps\\ara_compextraincubationinfo\\compproperties_extraincubationinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_compextraincubationinfo\\compproperties_extraincubationinfo.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\\thing_comps\\ara_compextraincubationinfo\\compextraincubationinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_compextraincubationinfo\\compextraincubationinfo.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_researchblueprintreader\\building_researchblueprintreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_researchblueprintreader\\building_researchblueprintreader.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\\verbs\\pawnbodyweapon\\verb_meleeattack_bodyweapon.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\pawnbodyweapon\\verb_meleeattack_bodyweapon.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\\itab_equipmentootheca_incubation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\itab_equipmentootheca_incubation.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_researchblueprintreader\\researchblueprintreadermanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_researchblueprintreader\\researchblueprintreadermanager.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\\jobdriver_operateequipmentincubator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\jobdriver_operateequipmentincubator.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\\thing_comps\\ara_areaadamage\\compproperties_areadamage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_areaadamage\\compproperties_areadamage.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_swarmmaintainer\\compproperties_swarmmaintainer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_swarmmaintainer\\compproperties_swarmmaintainer.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\\verbs\\pawnbodyweapon\\compproperties_pawnbodyweapon.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\pawnbodyweapon\\compproperties_pawnbodyweapon.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_trainingwork\\jobclean\\thinknode_conditionalanimalshoulddocleaningwork.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_trainingwork\\jobclean\\thinknode_conditionalanimalshoulddocleaningwork.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_trainingwork\\jobclean\\workgiver_arachnaeclean.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_trainingwork\\jobclean\\workgiver_arachnaeclean.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_trainingwork\\jobplant\\jobgiver_grower.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_trainingwork\\jobplant\\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\\pawn_comps\\ara_compskillexperiencegiver\\compproperties_skillexperiencegiver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_compskillexperiencegiver\\compproperties_skillexperiencegiver.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\\arachnaeswarmmod.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:arachnaeswarmmod.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\\hediff_configurablemutant.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_configurablemutant\\hediff_configurablemutant.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\\thing_comps\\compapparelinterceptor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\compapparelinterceptor.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}",
+ "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|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\workgivers\\workgiver_refuel_nutrition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:workgivers\\workgiver_refuel_nutrition.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\\jobdriver_feedwithhoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_feedwithhoney\\jobdriver_feedwithhoney.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\\jobdriver_extracthoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_feedwithhoney\\jobdriver_extracthoney.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_extracthoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_feedwithhoney\\thinknode_jobgiver_extracthoney.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_swarmmaintain\\jobdriver_swarmmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_swarmmaintain\\jobdriver_swarmmaintain.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_swarmmaintenance\\comp_swarmmaintenance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_swarmmaintenance\\comp_swarmmaintenance.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\\roomrole\\roomroleworker_incubator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:roomrole\\roomroleworker_incubator.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_stripchitin\\jobdriver_stripchitin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_stripchitin\\jobdriver_stripchitin.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_stripchitin\\compproperties_chitinstripping.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_stripchitin\\compproperties_chitinstripping.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_stripchitin\\comp_chitinstripping.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_stripchitin\\comp_chitinstripping.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\\verbs\\verb_shootselfunderfoot.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\verb_shootselfunderfoot.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_hediffcomp_topturret\\hediffcomp_topturret.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hediffcomp_topturret\\hediffcomp_topturret.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_compinteractiveproducer\\compresearchproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_compinteractiveproducer\\compresearchproducer.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_corpseconverter\\compcorpseconverter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_corpseconverter\\compcorpseconverter.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_corpseconverter\\compproperties_corpseconverter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_corpseconverter\\compproperties_corpseconverter.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_terrainchanger\\compterrainchanger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_terrainchanger\\compterrainchanger.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_terrainchanger\\compproperties_terrainchanger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_terrainchanger\\compproperties_terrainchanger.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\\wula_mutifuelspawner\\comprefuelablenutrition_withkey.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\wula_mutifuelspawner\\comprefuelablenutrition_withkey.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\\compproperties_incubatordata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\compproperties_incubatordata.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\\oothecaincubatorextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\oothecaincubatorextension.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|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_equipmentootheca\\compproperties_equipmentincubatordata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\compproperties_equipmentincubatordata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\JobGiver_DraftedAnimal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\Patch_Pawn_GetGizmos.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@@ -262,773 +30,76 @@
"DocumentGroups": [
{
"DockedWidth": 200,
- "SelectedChildIndex": 5,
+ "SelectedChildIndex": 2,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
- {
- "$type": "Document",
- "DocumentIndex": 4,
- "Title": "CompAreaDamage.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_AreaaDamage\\CompAreaDamage.cs",
- "RelativeDocumentMoniker": "Thing_Comps\\ARA_AreaaDamage\\CompAreaDamage.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_AreaaDamage\\CompAreaDamage.cs",
- "RelativeToolTip": "Thing_Comps\\ARA_AreaaDamage\\CompAreaDamage.cs",
- "ViewState": "AgIAAHEAAAAAAAAAAAAQwEwAAAAJAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T08:30:03.538Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 3,
- "Title": "CompCleave.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Cleave\\CompCleave.cs",
- "RelativeDocumentMoniker": "Verbs\\Cleave\\CompCleave.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Cleave\\CompCleave.cs",
- "RelativeToolTip": "Verbs\\Cleave\\CompCleave.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAvAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:40:25.528Z"
- },
{
"$type": "Document",
"DocumentIndex": 2,
- "Title": "Verb_MeleeAttack_Cleave.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Cleave\\Verb_MeleeAttack_Cleave.cs",
- "RelativeDocumentMoniker": "Verbs\\Cleave\\Verb_MeleeAttack_Cleave.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Cleave\\Verb_MeleeAttack_Cleave.cs",
- "RelativeToolTip": "Verbs\\Cleave\\Verb_MeleeAttack_Cleave.cs",
- "ViewState": "AgIAAGcAAAAAAAAAAAAAAJAAAAAaAAAAAAAAAA==",
+ "Title": "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": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs",
+ "RelativeToolTip": "Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAC8AAAAFAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T03:30:20.061Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 1,
- "Title": "Need_ChitinArmor.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_ChitinArmor.cs",
- "RelativeDocumentMoniker": "Needs\\Need_ChitinArmor.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_ChitinArmor.cs",
- "RelativeToolTip": "Needs\\Need_ChitinArmor.cs",
- "ViewState": "AgIAAAMAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:23:16.771Z",
+ "WhenOpened": "2025-12-19T09:26:15.297Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
- "Title": "Need_HoneyProduction.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_HoneyProduction.cs",
- "RelativeDocumentMoniker": "Needs\\Need_HoneyProduction.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_HoneyProduction.cs",
- "RelativeToolTip": "Needs\\Need_HoneyProduction.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAApAAAAAAAAAA==",
+ "Title": "CompProperties_HediffGiver.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompHediffGiver\\CompProperties_HediffGiver.cs",
+ "RelativeDocumentMoniker": "Pawn_Comps\\ARA_CompHediffGiver\\CompProperties_HediffGiver.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompHediffGiver\\CompProperties_HediffGiver.cs",
+ "RelativeToolTip": "Pawn_Comps\\ARA_CompHediffGiver\\CompProperties_HediffGiver.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:17:51.898Z",
+ "WhenOpened": "2025-12-19T09:21:06.983Z",
"EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 13,
- "Title": "CompAbilityEffect_BindDrone.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs",
- "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs",
- "RelativeToolTip": "Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs",
- "ViewState": "AgIAAC0AAAAAAAAAAAAiwEwAAACEAAAAAAAAAA==",
+ "DocumentIndex": 1,
+ "Title": "CompHediffGiver.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompHediffGiver\\CompHediffGiver.cs",
+ "RelativeDocumentMoniker": "Pawn_Comps\\ARA_CompHediffGiver\\CompHediffGiver.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompHediffGiver\\CompHediffGiver.cs",
+ "RelativeToolTip": "Pawn_Comps\\ARA_CompHediffGiver\\CompHediffGiver.cs",
+ "ViewState": "AgIAABEAAAAAAAAAAAAIwCcAAAAGAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T17:35:39.32Z"
+ "WhenOpened": "2025-12-19T09:21:05.624Z",
+ "EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 5,
- "Title": "PreventPartLossPatches.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_PreventPartLoss\\PreventPartLossPatches.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_PreventPartLoss\\PreventPartLossPatches.cs",
+ "DocumentIndex": 3,
+ "Title": "CompHediffTerrainSpawn.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
+ "RelativeDocumentMoniker": "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": "AgIAAEAAAAAAAAAAAAAcwHAAAAAVAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T18:48:31.584Z"
+ "WhenOpened": "2025-12-19T09:18:47.919Z",
+ "EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 14,
- "Title": "HediffComp_HiveMindDrone.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\HediffComp_HiveMindDrone.cs",
- "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\HediffComp_HiveMindDrone.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\HediffComp_HiveMindDrone.cs",
- "RelativeToolTip": "Hediffs\\ARA_HiveMind\\HediffComp_HiveMindDrone.cs",
- "ViewState": "AgIAAAYAAAAAAAAAAAAYwCIAAACfAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T17:35:50.972Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 15,
- "Title": "Hediff_HiveMindDrone.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs",
- "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs",
- "RelativeToolTip": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs",
- "ViewState": "AgIAABsAAAAAAAAAAAAcwDgAAAByAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T17:36:08.045Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 7,
- "Title": "Hediff_HiveMindMaster.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs",
- "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs",
- "RelativeToolTip": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs",
- "ViewState": "AgIAAGIAAAAAAAAAAAAgwK0AAABfAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T17:37:07.383Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 16,
- "Title": "BeastUnit.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\BeastUnit.cs",
- "RelativeDocumentMoniker": "Pawn_Comps\\ARA_DratfableAnimals\\BeastUnit.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\BeastUnit.cs",
- "RelativeToolTip": "Pawn_Comps\\ARA_DratfableAnimals\\BeastUnit.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAACwAAABvAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T16:28:07.2Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 12,
- "Title": "WorkGiver_FeedWithHoney.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_FeedWithHoney.cs",
- "RelativeDocumentMoniker": "WorkGivers\\WorkGiver_FeedWithHoney.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_FeedWithHoney.cs",
- "RelativeToolTip": "WorkGivers\\WorkGiver_FeedWithHoney.cs",
- "ViewState": "AgIAAGkAAAAAAAAAAAAYwIoAAABVAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:59:28.915Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 6,
- "Title": "Patch_DraftableAnimals.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_DraftableAnimals.cs",
- "RelativeDocumentMoniker": "HarmonyPatches\\Patch_DraftableAnimals.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_DraftableAnimals.cs",
- "RelativeToolTip": "HarmonyPatches\\Patch_DraftableAnimals.cs",
- "ViewState": "AgIAADQAAAAAAAAAAAAgwCIAAAAmAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T13:53:44.951Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 11,
- "Title": "ARA_HediffDefOf.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs",
- "RelativeDocumentMoniker": "ARA_HediffDefOf.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs",
- "RelativeToolTip": "ARA_HediffDefOf.cs",
- "ViewState": "AgIAAAgAAAAAAAAAAAAAAAgAAAAyAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-15T17:32:18.493Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 10,
- "Title": "WorkGiver_ExtractHoney.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_ExtractHoney.cs",
- "RelativeDocumentMoniker": "WorkGivers\\WorkGiver_ExtractHoney.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_ExtractHoney.cs",
- "RelativeToolTip": "WorkGivers\\WorkGiver_ExtractHoney.cs",
- "ViewState": "AgIAAFIAAAAAAAAAAAAqwG8AAABVAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:33:29.75Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 9,
- "Title": "WorkGiver_StripChitin.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_StripChitin.cs",
- "RelativeDocumentMoniker": "WorkGivers\\WorkGiver_StripChitin.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_StripChitin.cs",
- "RelativeToolTip": "WorkGivers\\WorkGiver_StripChitin.cs",
- "ViewState": "AgIAADsAAAAAAAAAAAAswFkAAABVAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:33:53.307Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 8,
- "Title": "Building_DormancyVat.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_DormancyVat\\Building_DormancyVat.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_DormancyVat\\Building_DormancyVat.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_DormancyVat\\Building_DormancyVat.cs",
- "RelativeToolTip": "Buildings\\Building_DormancyVat\\Building_DormancyVat.cs",
- "ViewState": "AgIAAP4AAAAAAAAAAAAAACMBAABSAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T11:50:41.189Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 17,
- "Title": "CompDratfableAnimals.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\CompDratfableAnimals.cs",
- "RelativeDocumentMoniker": "Pawn_Comps\\ARA_DratfableAnimals\\CompDratfableAnimals.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\CompDratfableAnimals.cs",
- "RelativeToolTip": "Pawn_Comps\\ARA_DratfableAnimals\\CompDratfableAnimals.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T13:58:03.468Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 18,
- "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": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T16:20:02.796Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 19,
- "Title": "CompProperties_DratfableAnimals.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\CompProperties_DratfableAnimals.cs",
- "RelativeDocumentMoniker": "Pawn_Comps\\ARA_DratfableAnimals\\CompProperties_DratfableAnimals.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\CompProperties_DratfableAnimals.cs",
- "RelativeToolTip": "Pawn_Comps\\ARA_DratfableAnimals\\CompProperties_DratfableAnimals.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAADwvxAAAAABAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T13:58:14.482Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 20,
- "Title": "CompProperties_ExtraIncubationInfo.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs",
- "RelativeDocumentMoniker": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs",
- "RelativeToolTip": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T15:25:15.273Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 21,
- "Title": "CompExtraIncubationInfo.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs",
- "RelativeDocumentMoniker": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs",
- "RelativeToolTip": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAQAAAAXAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T08:30:16.009Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 22,
- "Title": "Building_ResearchBlueprintReader.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\Building_ResearchBlueprintReader.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_ResearchBlueprintReader\\Building_ResearchBlueprintReader.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\Building_ResearchBlueprintReader.cs",
- "RelativeToolTip": "Buildings\\Building_ResearchBlueprintReader\\Building_ResearchBlueprintReader.cs",
- "ViewState": "AgIAAD8AAAAAAAAAAAAmwFcAAAARAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T10:38:40.669Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 23,
- "Title": "Verb_MeleeAttack_BodyWeapon.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\PawnBodyWeapon\\Verb_MeleeAttack_BodyWeapon.cs",
- "RelativeDocumentMoniker": "Verbs\\PawnBodyWeapon\\Verb_MeleeAttack_BodyWeapon.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\PawnBodyWeapon\\Verb_MeleeAttack_BodyWeapon.cs",
- "RelativeToolTip": "Verbs\\PawnBodyWeapon\\Verb_MeleeAttack_BodyWeapon.cs",
- "ViewState": "AgIAADQAAAAAAAAAAAAuwFMAAAAQAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T08:17:18.317Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 24,
- "Title": "ITab_EquipmentOotheca_Incubation.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs",
- "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs",
- "ViewState": "AgIAAI0AAAAAAAAAAAAQwKgAAAANAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T14:16:51.322Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 25,
- "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": "AgIAAFIDAAAAAAAAAAAIwGgDAAAiAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-15T18:22:14.171Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 26,
- "Title": "ResearchBlueprintReaderManager.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\ResearchBlueprintReaderManager.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_ResearchBlueprintReader\\ResearchBlueprintReaderManager.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\ResearchBlueprintReaderManager.cs",
- "RelativeToolTip": "Buildings\\Building_ResearchBlueprintReader\\ResearchBlueprintReaderManager.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T14:19:42.259Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 27,
- "Title": "JobDriver_OperateEquipmentIncubator.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\JobDriver_OperateEquipmentIncubator.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\JobDriver_OperateEquipmentIncubator.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\JobDriver_OperateEquipmentIncubator.cs",
- "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\JobDriver_OperateEquipmentIncubator.cs",
- "ViewState": "AgIAAAgAAAAAAAAAAAA7wBkAAABDAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T14:19:19.134Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 28,
- "Title": "CompProperties_AreaDamage.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_AreaaDamage\\CompProperties_AreaDamage.cs",
- "RelativeDocumentMoniker": "Thing_Comps\\ARA_AreaaDamage\\CompProperties_AreaDamage.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_AreaaDamage\\CompProperties_AreaDamage.cs",
- "RelativeToolTip": "Thing_Comps\\ARA_AreaaDamage\\CompProperties_AreaDamage.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAAAIAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T08:30:19.688Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 29,
- "Title": "CompProperties_SwarmMaintainer.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_SwarmMaintainer\\CompProperties_SwarmMaintainer.cs",
- "RelativeDocumentMoniker": "Pawn_Comps\\ARA_SwarmMaintainer\\CompProperties_SwarmMaintainer.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_SwarmMaintainer\\CompProperties_SwarmMaintainer.cs",
- "RelativeToolTip": "Pawn_Comps\\ARA_SwarmMaintainer\\CompProperties_SwarmMaintainer.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAlAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T08:19:21.682Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 30,
- "Title": "CompProperties_PawnBodyWeapon.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\PawnBodyWeapon\\CompProperties_PawnBodyWeapon.cs",
- "RelativeDocumentMoniker": "Verbs\\PawnBodyWeapon\\CompProperties_PawnBodyWeapon.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\PawnBodyWeapon\\CompProperties_PawnBodyWeapon.cs",
- "RelativeToolTip": "Verbs\\PawnBodyWeapon\\CompProperties_PawnBodyWeapon.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAQAAAAXAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T08:17:52.012Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 31,
- "Title": "ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobClean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs",
- "RelativeDocumentMoniker": "Pawn_Comps\\ARA_TrainingWork\\JobClean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobClean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs",
- "RelativeToolTip": "Pawn_Comps\\ARA_TrainingWork\\JobClean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAFAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T03:16:11.827Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 32,
- "Title": "WorkGiver_ArachnaeClean.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobClean\\WorkGiver_ArachnaeClean.cs",
- "RelativeDocumentMoniker": "Pawn_Comps\\ARA_TrainingWork\\JobClean\\WorkGiver_ArachnaeClean.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobClean\\WorkGiver_ArachnaeClean.cs",
- "RelativeToolTip": "Pawn_Comps\\ARA_TrainingWork\\JobClean\\WorkGiver_ArachnaeClean.cs",
- "ViewState": "AgIAAFQAAAAAAAAAAAAYwAAAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T03:17:01.411Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 33,
- "Title": "JobGiver_Grower.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobPlant\\JobGiver_Grower.cs",
- "RelativeDocumentMoniker": "Pawn_Comps\\ARA_TrainingWork\\JobPlant\\JobGiver_Grower.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobPlant\\JobGiver_Grower.cs",
- "RelativeToolTip": "Pawn_Comps\\ARA_TrainingWork\\JobPlant\\JobGiver_Grower.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA6AAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T03:09:07.494Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 34,
- "Title": "CompProperties_SkillExperienceGiver.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs",
- "RelativeDocumentMoniker": "Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs",
- "RelativeToolTip": "Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T00:29:04.867Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 35,
- "Title": "ArachnaeSwarmMod.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ArachnaeSwarmMod.cs",
- "RelativeDocumentMoniker": "ArachnaeSwarmMod.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ArachnaeSwarmMod.cs",
- "RelativeToolTip": "ArachnaeSwarmMod.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-18T00:55:39.161Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 62,
- "Title": "JobGiver_DraftedAnimal.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\JobGiver_DraftedAnimal.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\JobGiver_DraftedAnimal.cs",
- "ViewState": "AgIAAAYAAAAAAAAAAADwvxkAAAARAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T18:21:29.425Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 63,
- "Title": "Patch_Pawn_GetGizmos.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\Patch_Pawn_GetGizmos.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\Patch_Pawn_GetGizmos.cs",
- "ViewState": "AgIAAFMAAAAAAAAAAAAmwGEAAAATAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T18:17:02.281Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 37,
- "Title": "CompApparelInterceptor.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\CompApparelInterceptor.cs",
- "RelativeDocumentMoniker": "Thing_Comps\\CompApparelInterceptor.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\CompApparelInterceptor.cs",
- "RelativeToolTip": "Thing_Comps\\CompApparelInterceptor.cs",
- "ViewState": "AgIAAFgAAAAAAAAAAAAuwHEAAAAzAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T18:13:39.102Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 36,
- "Title": "Hediff_ConfigurableMutant.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ConfigurableMutant\\Hediff_ConfigurableMutant.cs",
- "RelativeDocumentMoniker": "Hediffs\\ARA_ConfigurableMutant\\Hediff_ConfigurableMutant.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ConfigurableMutant\\Hediff_ConfigurableMutant.cs",
- "RelativeToolTip": "Hediffs\\ARA_ConfigurableMutant\\Hediff_ConfigurableMutant.cs",
- "ViewState": "AgIAAIIAAAAAAAAAAAAQwJkAAAAzAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T18:13:05.563Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 38,
+ "DocumentIndex": 4,
"Title": "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": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"RelativeToolTip": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
- "ViewState": "AgIAACMAAAAAAAAAAAAQwCgAAABDAAAAAAAAAA==",
+ "ViewState": "AgIAAGkAAAAAAAAAAAAAAG8AAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T15:47:19.767Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 39,
- "Title": "WorkGiver_Refuel_Nutrition.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_Refuel_Nutrition.cs",
- "RelativeDocumentMoniker": "WorkGivers\\WorkGiver_Refuel_Nutrition.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_Refuel_Nutrition.cs",
- "RelativeToolTip": "WorkGivers\\WorkGiver_Refuel_Nutrition.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:59:44.439Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 41,
- "Title": "JobDriver_ExtractHoney.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\JobDriver_ExtractHoney.cs",
- "RelativeDocumentMoniker": "Jobs\\JobDriver_FeedWithHoney\\JobDriver_ExtractHoney.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\JobDriver_ExtractHoney.cs",
- "RelativeToolTip": "Jobs\\JobDriver_FeedWithHoney\\JobDriver_ExtractHoney.cs",
- "ViewState": "AgIAAA8AAAAAAAAAAAAAwCYAAAAlAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:26:42.845Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 42,
- "Title": "ThinkNode_JobGiver_ExtractHoney.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_ExtractHoney.cs",
- "RelativeDocumentMoniker": "Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_ExtractHoney.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_ExtractHoney.cs",
- "RelativeToolTip": "Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_ExtractHoney.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAcAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:25:27.255Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 43,
- "Title": "JobDriver_SwarmMaintain.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs",
- "RelativeDocumentMoniker": "Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs",
- "RelativeToolTip": "Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAADwvxcAAAAJAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:32:29.359Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 40,
- "Title": "JobDriver_FeedWithHoney.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\JobDriver_FeedWithHoney.cs",
- "RelativeDocumentMoniker": "Jobs\\JobDriver_FeedWithHoney\\JobDriver_FeedWithHoney.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\JobDriver_FeedWithHoney.cs",
- "RelativeToolTip": "Jobs\\JobDriver_FeedWithHoney\\JobDriver_FeedWithHoney.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAoAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:43:47.266Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 44,
- "Title": "Comp_SwarmMaintenance.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_SwarmMaintenance\\Comp_SwarmMaintenance.cs",
- "RelativeDocumentMoniker": "Building_Comps\\ARA_SwarmMaintenance\\Comp_SwarmMaintenance.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_SwarmMaintenance\\Comp_SwarmMaintenance.cs",
- "RelativeToolTip": "Building_Comps\\ARA_SwarmMaintenance\\Comp_SwarmMaintenance.cs",
- "ViewState": "AgIAAKYAAAAAAAAAAAAQwH0AAAAQAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:35:29.771Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 46,
- "Title": "JobDriver_StripChitin.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\JobDriver_StripChitin.cs",
- "RelativeDocumentMoniker": "Jobs\\JobDriver_StripChitin\\JobDriver_StripChitin.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\JobDriver_StripChitin.cs",
- "RelativeToolTip": "Jobs\\JobDriver_StripChitin\\JobDriver_StripChitin.cs",
- "ViewState": "AgIAAD4AAAAAAAAAAAAAAE0AAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T15:50:38.09Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 48,
- "Title": "Comp_ChitinStripping.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\Comp_ChitinStripping.cs",
- "RelativeDocumentMoniker": "Jobs\\JobDriver_StripChitin\\Comp_ChitinStripping.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\Comp_ChitinStripping.cs",
- "RelativeToolTip": "Jobs\\JobDriver_StripChitin\\Comp_ChitinStripping.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAABWAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T15:49:51.675Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 49,
- "Title": "Verb_ShootSelfUnderfoot.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Verb_ShootSelfUnderfoot.cs",
- "RelativeDocumentMoniker": "Verbs\\Verb_ShootSelfUnderfoot.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Verb_ShootSelfUnderfoot.cs",
- "RelativeToolTip": "Verbs\\Verb_ShootSelfUnderfoot.cs",
- "ViewState": "AgIAAJAAAAAAAAAAAAAcwJwAAAAoAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T15:07:22.127Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 50,
- "Title": "HediffComp_TopTurret.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffComp_TopTurret\\HediffComp_TopTurret.cs",
- "RelativeDocumentMoniker": "Hediffs\\ARA_HediffComp_TopTurret\\HediffComp_TopTurret.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffComp_TopTurret\\HediffComp_TopTurret.cs",
- "RelativeToolTip": "Hediffs\\ARA_HediffComp_TopTurret\\HediffComp_TopTurret.cs",
- "ViewState": "AgIAACcBAAAAAAAAAAAkwD0BAAAjAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T14:52:46.325Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 45,
- "Title": "RoomRoleWorker_Incubator.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\RoomRole\\RoomRoleWorker_Incubator.cs",
- "RelativeDocumentMoniker": "RoomRole\\RoomRoleWorker_Incubator.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\RoomRole\\RoomRoleWorker_Incubator.cs",
- "RelativeToolTip": "RoomRole\\RoomRoleWorker_Incubator.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T14:32:31.389Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 47,
- "Title": "CompProperties_ChitinStripping.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\CompProperties_ChitinStripping.cs",
- "RelativeDocumentMoniker": "Jobs\\JobDriver_StripChitin\\CompProperties_ChitinStripping.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\CompProperties_ChitinStripping.cs",
- "RelativeToolTip": "Jobs\\JobDriver_StripChitin\\CompProperties_ChitinStripping.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAtAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T15:50:04.277Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 51,
- "Title": "CompResearchProducer.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
- "RelativeDocumentMoniker": "Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
- "RelativeToolTip": "Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAADwvy0AAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T14:29:05.969Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 52,
- "Title": "CompCorpseConverter.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CorpseConverter\\CompCorpseConverter.cs",
- "RelativeDocumentMoniker": "Building_Comps\\ARA_CorpseConverter\\CompCorpseConverter.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CorpseConverter\\CompCorpseConverter.cs",
- "RelativeToolTip": "Building_Comps\\ARA_CorpseConverter\\CompCorpseConverter.cs",
- "ViewState": "AgIAABwDAAAAAAAAAAAIwCoDAAARAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T12:23:40.696Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 53,
- "Title": "CompProperties_CorpseConverter.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CorpseConverter\\CompProperties_CorpseConverter.cs",
- "RelativeDocumentMoniker": "Building_Comps\\ARA_CorpseConverter\\CompProperties_CorpseConverter.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CorpseConverter\\CompProperties_CorpseConverter.cs",
- "RelativeToolTip": "Building_Comps\\ARA_CorpseConverter\\CompProperties_CorpseConverter.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T12:23:39.636Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 56,
- "Title": "CompRefuelableNutrition_WithKey.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs",
- "RelativeDocumentMoniker": "Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs",
- "RelativeToolTip": "Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAACUAAABAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T10:38:33.135Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 54,
- "Title": "CompTerrainChanger.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_TerrainChanger\\CompTerrainChanger.cs",
- "RelativeDocumentMoniker": "Building_Comps\\ARA_TerrainChanger\\CompTerrainChanger.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_TerrainChanger\\CompTerrainChanger.cs",
- "RelativeToolTip": "Building_Comps\\ARA_TerrainChanger\\CompTerrainChanger.cs",
- "ViewState": "AgIAAK0CAAAAAAAAAAAcwPYCAAAMAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T10:30:16.921Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 55,
- "Title": "CompProperties_TerrainChanger.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_TerrainChanger\\CompProperties_TerrainChanger.cs",
- "RelativeDocumentMoniker": "Building_Comps\\ARA_TerrainChanger\\CompProperties_TerrainChanger.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_TerrainChanger\\CompProperties_TerrainChanger.cs",
- "RelativeToolTip": "Building_Comps\\ARA_TerrainChanger\\CompProperties_TerrainChanger.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T10:30:15.601Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 61,
- "Title": "Building_RefuelingVat.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T10:28:54.756Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 57,
- "Title": "CompProperties_IncubatorData.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs",
- "RelativeToolTip": "Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs",
- "ViewState": "AgIAANcAAAAAAAAAAIA1wPoAAAAxAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T04:37:03.042Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 58,
- "Title": "OothecaIncubatorExtension.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs",
- "RelativeToolTip": "Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAADwvxUAAABBAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-16T04:36:59.394Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 59,
- "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": "AgIAALcCAAAAAAAAAAAewNgCAAAVAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-15T18:22:12.217Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 60,
- "Title": "CompProperties_EquipmentIncubatorData.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs",
- "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs",
- "ViewState": "AgIAAA4AAAAAAAAAAADwvyYAAAAaAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-15T17:55:40.041Z"
+ "WhenOpened": "2025-12-19T07:50:50.393Z",
+ "EditorCaption": ""
}
]
}
diff --git a/Source/ArachnaeSwarm/ArachnaeLog.cs b/Source/ArachnaeSwarm/ArachnaeLog.cs
index a6ef93e..1e67b59 100644
--- a/Source/ArachnaeSwarm/ArachnaeLog.cs
+++ b/Source/ArachnaeSwarm/ArachnaeLog.cs
@@ -15,7 +15,7 @@ namespace ArachnaeSwarm
{
if (DebugEnabled)
{
- Log.Message(message);
+ ArachnaeLog.Debug(message);
}
}
}
diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompDelayedTerrainSpawn.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompDelayedTerrainSpawn.cs
index 390cb7d..f476f78 100644
--- a/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompDelayedTerrainSpawn.cs
+++ b/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompDelayedTerrainSpawn.cs
@@ -1,4 +1,6 @@
+// File: CompDelayedTerrainSpawn.cs
using RimWorld;
+using System.Collections.Generic;
using Verse;
namespace ArachnaeSwarm
@@ -44,27 +46,80 @@ namespace ArachnaeSwarm
// The core logic: iterate through nearby cells and change their terrain.
foreach (IntVec3 current in GenRadial.RadialCellsAround(parent.Position, Props.spawnRadius, true))
{
- if (current.InBounds(parent.Map) && current.Walkable(parent.Map))
+ if (!current.InBounds(parent.Map) || !current.Walkable(parent.Map))
+ continue;
+
+ TerrainDef currentTerrain = parent.Map.terrainGrid.TerrainAt(current);
+ if (currentTerrain == null)
+ continue;
+
+ // === 新增:使用黑名单检查 ===
+ if (ShouldSkipTerrain(currentTerrain, current))
{
- // 添加:检查当前地形是否有 ARA_Creep 标签
- TerrainDef currentTerrain = parent.Map.terrainGrid.TerrainAt(current);
- if (currentTerrain != null && HasCreepTag(currentTerrain))
- {
- continue; // 跳过有 ARA_Creep 标签的地面
- }
-
- parent.Map.terrainGrid.SetTerrain(current, Props.terrainToSpawn);
+ continue; // 跳过有排除tag的地面
}
+
+ parent.Map.terrainGrid.SetTerrain(current, Props.terrainToSpawn);
}
}
///
- /// 检查地形是否具有 ARA_Creep 标签
+ /// === 新增:检查是否应该跳过此地形 ===
+ /// 基于tag黑名单、允许性和其他条件
///
- /// 如果地形有 ARA_Creep 标签则返回 true
- private bool HasCreepTag(TerrainDef terrain)
+ private bool ShouldSkipTerrain(TerrainDef terrain, IntVec3 cell)
{
- return terrain.tags != null && terrain.tags.Contains("ARA_Creep") || terrain.tags.Contains("ARA_Incubator_Nutrient_Solution");
+ if (terrain == null)
+ return false;
+
+ // 1. 检查tag黑名单
+ if (Props.IsTerrainExcluded(terrain))
+ {
+ return true;
+ }
+
+ // 2. 检查允许性(如果启用)
+ if (Props.checkAffordances && terrain.affordances != null && Props.excludeAffordances != null)
+ {
+ foreach (var affordance in terrain.affordances)
+ {
+ if (affordance != null && Props.excludeAffordances.Contains(affordance.defName))
+ {
+ return true;
+ }
+ }
+ }
+
+ // 3. 检查优先地形(如果启用智能覆盖)
+ if (Props.smartOverlay && Props.preferredTerrains != null)
+ {
+ if (Props.preferredTerrains.Contains(terrain))
+ {
+ return true;
+ }
+ }
+
+ // 4. 检查路径(如果启用路径保护)
+ if (Props.preservePaths)
+ {
+ if (IsPathCell(cell, parent.Map))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ ///
+ /// === 新增:检查是否是路径单元格 ===
+ ///
+ private bool IsPathCell(IntVec3 cell, Map map)
+ {
+ // 检查是否有路径标记
+ // 这里可以根据需要扩展,检查设计者路径标记等
+ // 暂时返回false,因为需要更多信息
+ return false;
}
// NOTICE: There is NO CompTick() method here. This component does not perform any updates after it has spawned.
diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompProperties_DelayedTerrainSpawn.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompProperties_DelayedTerrainSpawn.cs
index e4b56c1..b5022ed 100644
--- a/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompProperties_DelayedTerrainSpawn.cs
+++ b/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompProperties_DelayedTerrainSpawn.cs
@@ -1,3 +1,5 @@
+// File: CompProperties_DelayedTerrainSpawn.cs
+using System.Collections.Generic;
using Verse;
namespace ArachnaeSwarm
@@ -10,11 +12,75 @@ namespace ArachnaeSwarm
{
public TerrainDef terrainToSpawn;
public float spawnRadius = 0f;
+
+ // === 新增:tag黑名单 ===
+ public List excludeTerrainTags = null; // 要排除的tag列表
+ public bool useDefaultExclusions = true; // 是否使用默认排除项(ARA_Creep和ARA_Incubator_Nutrient_Solution)
+
+ // === 新增:扩展检查选项 ===
+ public bool checkAffordances = false; // 是否检查地形允许性(affordances)
+ public List excludeAffordances = null; // 要排除的允许性列表
+
+ // === 新增:智能覆盖选项 ===
+ public bool smartOverlay = false; // 是否智能覆盖(仅覆盖"较差"的地形)
+ public List preferredTerrains = null; // 优先地形列表,这些不会被覆盖
+ public bool preservePaths = false; // 是否保留路径
public CompProperties_DelayedTerrainSpawn()
{
// The component logic now runs instantly, but the class name is kept for compatibility.
compClass = typeof(CompDelayedTerrainSpawn);
}
+
+ ///
+ /// 获取要排除的tag列表(包括默认值)
+ ///
+ public List GetExcludedTags()
+ {
+ var tags = new List();
+
+ // 如果使用默认排除项,添加默认tag
+ if (useDefaultExclusions)
+ {
+ if (!tags.Contains("ARA_Creep"))
+ tags.Add("ARA_Creep");
+ if (!tags.Contains("ARA_Incubator_Nutrient_Solution"))
+ tags.Add("ARA_Incubator_Nutrient_Solution");
+ }
+
+ // 添加自定义排除项
+ if (excludeTerrainTags != null)
+ {
+ foreach (var tag in excludeTerrainTags)
+ {
+ if (!tags.Contains(tag))
+ tags.Add(tag);
+ }
+ }
+
+ return tags;
+ }
+
+ ///
+ /// 检查地形是否被排除
+ ///
+ public bool IsTerrainExcluded(TerrainDef terrain)
+ {
+ if (terrain == null || terrain.tags == null)
+ return false;
+
+ var excludedTags = GetExcludedTags();
+ if (excludedTags.Count == 0)
+ return false;
+
+ // 检查地形是否有排除tag
+ foreach (var tag in terrain.tags)
+ {
+ if (excludedTags.Contains(tag))
+ return true;
+ }
+
+ return false;
+ }
}
-}
\ No newline at end of file
+}
diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_CorpseConverter/CompCorpseConverter.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_CorpseConverter/CompCorpseConverter.cs
index 0ad5f1b..de09674 100644
--- a/Source/ArachnaeSwarm/Building_Comps/ARA_CorpseConverter/CompCorpseConverter.cs
+++ b/Source/ArachnaeSwarm/Building_Comps/ARA_CorpseConverter/CompCorpseConverter.cs
@@ -492,7 +492,7 @@ namespace ArachnaeSwarm
// 显示消息(仅开发模式)
if (Prefs.DevMode)
{
- Log.Message($"[CorpseConverter] Converted {corpseName} at {corpsePosition} to {convertedThing.LabelCap}");
+ ArachnaeLog.Debug($"[CorpseConverter] Converted {corpseName} at {corpsePosition} to {convertedThing.LabelCap}");
}
}
else
@@ -542,7 +542,7 @@ namespace ArachnaeSwarm
// 显示消息(仅开发模式)
if (Prefs.DevMode)
{
- Log.Message($"[CorpseConverter] Marked building at {markingTargetBuilding.Position} ({markingTargetBuilding.LabelCap}) for deconstruction");
+ ArachnaeLog.Debug($"[CorpseConverter] Marked building at {markingTargetBuilding.Position} ({markingTargetBuilding.LabelCap}) for deconstruction");
}
ResetMarkingState();
diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_TerrainChanger/CompTerrainChanger.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_TerrainChanger/CompTerrainChanger.cs
index 70e040f..82c3461 100644
--- a/Source/ArachnaeSwarm/Building_Comps/ARA_TerrainChanger/CompTerrainChanger.cs
+++ b/Source/ArachnaeSwarm/Building_Comps/ARA_TerrainChanger/CompTerrainChanger.cs
@@ -463,7 +463,7 @@ namespace ArachnaeSwarm
// 显示消息(可选)
if (Prefs.DevMode)
{
- Log.Message($"[TerrainChanger] Changed terrain at {targetCell} from {previousTerrain?.defName ?? "null"} to {Props.targetTerrain.defName}");
+ ArachnaeLog.Debug($"[TerrainChanger] Changed terrain at {targetCell} from {previousTerrain?.defName ?? "null"} to {Props.targetTerrain.defName}");
}
ResetWorkState();
@@ -510,7 +510,7 @@ namespace ArachnaeSwarm
// 显示消息(可选)
if (Prefs.DevMode)
{
- Log.Message($"[TerrainChanger] Marked terrain at {markingTargetCell} ({currentTerrain.defName}) for removal");
+ ArachnaeLog.Debug($"[TerrainChanger] Marked terrain at {markingTargetCell} ({currentTerrain.defName}) for removal");
}
ResetMarkingState();
diff --git a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs
index 85215d0..ade1229 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs
@@ -96,12 +96,12 @@ namespace ArachnaeSwarm
if (costStat != null)
{
totalNutrientCost = Mathf.RoundToInt(incubatingThingDef.GetStatValueAbstract(costStat, null));
- Log.Message($"[ARA] 孵化 {incubatingThingDef.defName} 建议有 {totalNutrientCost} 个营养液地块以获得最佳速度");
+ ArachnaeLog.Debug($"[ARA] 孵化 {incubatingThingDef.defName} 建议有 {totalNutrientCost} 个营养液地块以获得最佳速度");
}
else
{
totalNutrientCost = 0;
- Log.Message($"[ARA] 孵化 {incubatingThingDef.defName} 不需要营养液加成");
+ ArachnaeLog.Debug($"[ARA] 孵化 {incubatingThingDef.defName} 不需要营养液加成");
}
// 立即更新一次营养液计数
@@ -237,24 +237,6 @@ namespace ArachnaeSwarm
builder.AppendLine("ARA_EquipmentIncubator.CurrentNutrientCount".Translate(currentNutrientCount));
builder.AppendLine("ARA_EquipmentIncubator.NutrientSpeedBonus".Translate(NutrientSpeedBonus.ToStringPercent()));
- // 显示建议的营养液数量
- if (totalNutrientCost > 0 && incubatingThingDef != null)
- {
- builder.AppendLine();
- builder.AppendLine("ARA_EquipmentIncubator.RecommendedNutrients".Translate(incubatingThingDef.LabelCap, totalNutrientCost));
-
- // 显示加成效果
- if (currentNutrientCount >= totalNutrientCost)
- {
- builder.AppendLine("ARA_EquipmentIncubator.MaximumBonusActive".Translate());
- }
- else
- {
- int needed = totalNutrientCost - currentNutrientCount;
- builder.AppendLine("ARA_EquipmentIncubator.AddMoreNutrients".Translate(needed));
- }
- }
-
return builder.ToString().TrimEndNewlines();
}
@@ -398,7 +380,7 @@ namespace ArachnaeSwarm
{
if (!isIncubating) return;
- Log.Message($"[ARA] 取消孵化: {incubatingThingDef?.defName}");
+ ArachnaeLog.Debug($"[ARA] 取消孵化: {incubatingThingDef?.defName}");
isIncubating = false;
incubationProgress = 0f;
@@ -420,7 +402,7 @@ namespace ArachnaeSwarm
{
if (incubatingThingDef == null) return;
- Log.Message($"[ARA] 完成孵化: {incubatingThingDef.defName}");
+ ArachnaeLog.Debug($"[ARA] 完成孵化: {incubatingThingDef.defName}");
float finalQualityPercent = QualityPercent;
diff --git a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/CompProperties_EquipmentIncubatorData.cs b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/CompProperties_EquipmentIncubatorData.cs
index dc4b116..2192694 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/CompProperties_EquipmentIncubatorData.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/CompProperties_EquipmentIncubatorData.cs
@@ -293,7 +293,7 @@ namespace ArachnaeSwarm
// 按物品名称排序
cachedConfigs.Sort((a, b) => string.Compare(a.thingDef?.label ?? "", b.thingDef?.label ?? ""));
- Log.Message($"Built {cachedConfigs.Count} equipment incubation configs for {parent.def.defName}");
+ ArachnaeLog.Debug($"Built {cachedConfigs.Count} equipment incubation configs for {parent.def.defName}");
}
// 切换到特定索引
diff --git a/Source/ArachnaeSwarm/Buildings/Building_RefuelingVat/Building_RefuelingVat.cs b/Source/ArachnaeSwarm/Buildings/Building_RefuelingVat/Building_RefuelingVat.cs
index d5ea650..be1f2cd 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_RefuelingVat/Building_RefuelingVat.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_RefuelingVat/Building_RefuelingVat.cs
@@ -123,7 +123,7 @@ namespace ArachnaeSwarm
selfDestructInitiated = true;
pawnMissingTickCount = 0;
- Log.Message($"RefuelingVat at {Position}: Pawn missing from container. Self-destruct initiated. Will destroy in {MissingTicksBeforeDestruction} ticks.");
+ ArachnaeLog.Debug($"RefuelingVat at {Position}: Pawn missing from container. Self-destruct initiated. Will destroy in {MissingTicksBeforeDestruction} ticks.");
// 发送警告消息
Messages.Message("RefuelingVat_ContainmentBreach".Translate(), this, MessageTypeDefOf.NegativeEvent);
@@ -132,7 +132,7 @@ namespace ArachnaeSwarm
// === 新增方法:执行建筑销毁 ===
private void ExecuteSelfDestruct()
{
- Log.Message($"RefuelingVat at {Position}: Self-destruct sequence complete. Destroying building.");
+ ArachnaeLog.Debug($"RefuelingVat at {Position}: Self-destruct sequence complete. Destroying building.");
// 显示爆炸效果
if (!Destroyed)
@@ -172,7 +172,7 @@ namespace ArachnaeSwarm
}
else if (pawnMissingTickCount % 30 == 0) // 每0.5秒报告一次
{
- Log.Message($"RefuelingVat at {Position}: Pawn still missing. Self-destruct in {MissingTicksBeforeDestruction - pawnMissingTickCount} ticks.");
+ ArachnaeLog.Debug($"RefuelingVat at {Position}: Pawn still missing. Self-destruct in {MissingTicksBeforeDestruction - pawnMissingTickCount} ticks.");
}
}
}
@@ -181,7 +181,7 @@ namespace ArachnaeSwarm
// Pawn在容器内,重置自毁系统
if (selfDestructInitiated)
{
- Log.Message($"RefuelingVat at {Position}: Pawn returned to container. Self-destruct cancelled.");
+ ArachnaeLog.Debug($"RefuelingVat at {Position}: Pawn returned to container. Self-destruct cancelled.");
selfDestructInitiated = false;
pawnMissingTickCount = 0;
Messages.Message("RefuelingVat_ContainmentRestored".Translate(), this, MessageTypeDefOf.PositiveEvent);
@@ -249,7 +249,7 @@ namespace ArachnaeSwarm
{
if (selectedPawn != null && innerContainer.Contains(selectedPawn))
{
- Log.Message($"RefuelingVat despawned with pawn inside, forcing ejection.");
+ ArachnaeLog.Debug($"RefuelingVat despawned with pawn inside, forcing ejection.");
Finish(); // 使用修改后的Finish方法
}
}
@@ -308,7 +308,7 @@ namespace ArachnaeSwarm
// 检查是否是被建筑杀死的
if (pawnsKilledByVat.Contains(pawn))
{
- Log.Message($"Pawn {pawn.Label} killed by RefuelingVat.");
+ ArachnaeLog.Debug($"Pawn {pawn.Label} killed by RefuelingVat.");
// 注意:现在不再需要从容器中移除Pawn或销毁尸体
// 因为建筑会被销毁,Pawn会自然弹出
@@ -375,7 +375,7 @@ namespace ArachnaeSwarm
else
{
// 其他原因的死亡 - 启动自毁系统
- Log.Message($"Pawn {selectedPawn.Label} died unexpectedly. Starting self-destruct.");
+ ArachnaeLog.Debug($"Pawn {selectedPawn.Label} died unexpectedly. Starting self-destruct.");
InitiateSelfDestruct();
}
return;
@@ -465,7 +465,7 @@ namespace ArachnaeSwarm
selfDestructInitiated = false;
pawnMissingTickCount = 0;
- Log.Message($"Pawn {pawn.Label} inserted into RefuelingVat at {Position}. Self-destruct monitoring active.");
+ ArachnaeLog.Debug($"Pawn {pawn.Label} inserted into RefuelingVat at {Position}. Self-destruct monitoring active.");
}
if (deselected)
{
@@ -482,7 +482,7 @@ namespace ArachnaeSwarm
// 检查pawn是否还活着,如果已经死亡且是被建筑杀死的,则启动自毁
if (selectedPawn.Dead && pawnsKilledByVat.Contains(selectedPawn))
{
- Log.Message($"Pawn {selectedPawn.Label} killed by vat. Starting self-destruct.");
+ ArachnaeLog.Debug($"Pawn {selectedPawn.Label} killed by vat. Starting self-destruct.");
InitiateSelfDestruct();
return;
}
@@ -514,7 +514,7 @@ namespace ArachnaeSwarm
// 方法3:强制移除(仅对活着的pawn)
if (!ejected && innerContainer.Contains(selectedPawn) && !selectedPawn.Dead)
{
- Log.Message($"Forcing removal of pawn {selectedPawn} from RefuelingVat");
+ ArachnaeLog.Debug($"Forcing removal of pawn {selectedPawn} from RefuelingVat");
innerContainer.Remove(selectedPawn);
GenPlace.TryPlaceThing(selectedPawn, this.Position, base.Map, ThingPlaceMode.Near);
ejected = true;
@@ -523,11 +523,11 @@ namespace ArachnaeSwarm
if (ejected)
{
- Log.Message($"Successfully ejected {selectedPawn} using method: {ejectionMethod}");
+ ArachnaeLog.Debug($"Successfully ejected {selectedPawn} using method: {ejectionMethod}");
}
else if (!selectedPawn.Dead) // 只有活着的pawn弹出失败才报错
{
- Log.Message($"Failed to eject {selectedPawn} from RefuelingVat");
+ ArachnaeLog.Debug($"Failed to eject {selectedPawn} from RefuelingVat");
}
}
catch (Exception ex)
@@ -551,7 +551,7 @@ namespace ArachnaeSwarm
// 确保pawn不在容器中(除非是被建筑杀死的)
if (innerContainer.Contains(selectedPawn) && !(selectedPawn.Dead && pawnsKilledByVat.Contains(selectedPawn)))
{
- Log.Message($"Pawn {selectedPawn} still in container during OnStop, forcing removal.");
+ ArachnaeLog.Debug($"Pawn {selectedPawn} still in container during OnStop, forcing removal.");
innerContainer.Remove(selectedPawn);
}
}
diff --git a/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/Building_ResearchBlueprintReader.cs b/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/Building_ResearchBlueprintReader.cs
index 634afe9..005d7c3 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/Building_ResearchBlueprintReader.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/Building_ResearchBlueprintReader.cs
@@ -96,7 +96,7 @@ namespace ArachnaeSwarm
manager.RegisterResearch(this, storedResearch);
}
- Log.Message($"[ResearchBlueprintReader] Building spawned with ID: {ThingID}, UniqueId: {UniqueId}");
+ ArachnaeLog.Debug($"[ResearchBlueprintReader] Building spawned with ID: {ThingID}, UniqueId: {UniqueId}");
}
catch (Exception ex)
{
@@ -177,7 +177,7 @@ namespace ArachnaeSwarm
Messages.Message("ResearchBlueprintReader_ResearchCompleted".Translate(storedResearch.LabelCap),
MessageTypeDefOf.PositiveEvent);
- Log.Message($"[ResearchBlueprintReader] Research completed: {storedResearch.defName}");
+ ArachnaeLog.Debug($"[ResearchBlueprintReader] Research completed: {storedResearch.defName}");
}
else
{
@@ -449,21 +449,6 @@ namespace ArachnaeSwarm
else
{
builder.AppendLine("" + "ResearchBlueprintReader_StatusResearching".Translate(storedResearch.LabelCap) + "");
- builder.AppendLine("ResearchBlueprintReader_BuildingProgress".Translate(
- progress, storedResearch.baseCost, (progress / storedResearch.baseCost * 100)));
- builder.Append("ResearchBlueprintReader_GlobalProgress".Translate(
- Find.ResearchManager.GetProgress(storedResearch), storedResearch.baseCost));
-
- // 显示研究速度
- builder.AppendLine();
- builder.Append("ResearchBlueprintReader_ResearchSpeed".Translate(ResearchSpeed));
-
- if (researchStartTime > 0)
- {
- int days = (Find.TickManager.TicksGame - researchStartTime) / 60000;
- builder.AppendLine();
- builder.Append("ResearchBlueprintReader_ResearchTime".Translate(days));
- }
}
}
else
diff --git a/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/ResearchBlueprintReaderManager.cs b/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/ResearchBlueprintReaderManager.cs
index ae181d4..977e4c9 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/ResearchBlueprintReaderManager.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/ResearchBlueprintReaderManager.cs
@@ -27,11 +27,16 @@ namespace ArachnaeSwarm
private List serializedProjects;
private List> serializedBuildings;
+ // === 新增:科技丢失检查计时器 ===
+ private int lostResearchCheckTimer;
+ private const int LostResearchCheckInterval = 5000; // 每5秒检查一次
+
public ResearchBlueprintReaderManager(Game game) : base()
{
instance = this;
allReaders = new List();
researchBuildings = new Dictionary>();
+ lostResearchCheckTimer = 0;
}
public static ResearchBlueprintReaderManager Instance => instance;
@@ -107,13 +112,16 @@ namespace ArachnaeSwarm
}
}
- Log.Message($"[ResearchManager] Loaded {allReaders.Count} buildings, {researchBuildings.Count} research projects");
+ ArachnaeLog.Debug($"[ResearchManager] Loaded {allReaders.Count} buildings, {researchBuildings.Count} research projects");
}
else if (Scribe.mode == LoadSaveMode.PostLoadInit)
{
// 后加载初始化:清理所有无效数据
CleanupInvalidData();
}
+
+ // 保存和加载计时器
+ Scribe_Values.Look(ref lostResearchCheckTimer, "lostResearchCheckTimer", 0);
}
public override void GameComponentTick()
@@ -126,6 +134,92 @@ namespace ArachnaeSwarm
CleanupInvalidData();
cleanupTimer = 0;
}
+
+ // === 新增:定期检查是否有科技因建筑损失而丢失 ===
+ lostResearchCheckTimer++;
+ if (lostResearchCheckTimer >= LostResearchCheckInterval)
+ {
+ CheckForLostResearch();
+ lostResearchCheckTimer = 0;
+ }
+ }
+
+ ///
+ /// === 新增:检查因建筑损失而丢失的科技 ===
+ ///
+ private void CheckForLostResearch()
+ {
+ if (researchBuildings == null || researchBuildings.Count == 0)
+ return;
+
+ ArachnaeLog.Debug($"[ResearchManager] Checking for lost research projects...");
+
+ // 获取需要检查的项目列表(复制以避免修改时遍历)
+ var projectsToCheck = new List(researchBuildings.Keys);
+
+ foreach (var project in projectsToCheck)
+ {
+ if (project == null)
+ continue;
+
+ if (!researchBuildings.ContainsKey(project))
+ continue;
+
+ var buildings = researchBuildings[project];
+ if (buildings == null)
+ {
+ researchBuildings.Remove(project);
+ continue;
+ }
+
+ // 清理无效建筑
+ buildings.RemoveAll(b =>
+ b == null || b.Destroyed || !b.Spawned || b.Map == null);
+
+ // 如果已经没有建筑了
+ if (buildings.Count == 0)
+ {
+ researchBuildings.Remove(project);
+
+ // 调用Patch创建的移除方法来丢失科技
+ OnResearchLostDueToBuildingLoss(project);
+ }
+ }
+ }
+
+ ///
+ /// === 新增:科技因建筑损失而丢失的处理 ===
+ ///
+ private void OnResearchLostDueToBuildingLoss(ResearchProjectDef project)
+ {
+ if (project == null)
+ return;
+
+ ArachnaeLog.Debug($"[ResearchManager] Research project lost due to building loss: {project.defName}");
+
+ try
+ {
+ // 使用ResearchRemover类来移除科技
+ if (ResearchRemover.RemoveResearchProject(project, removeDependencies: false))
+ {
+ // 发送游戏内消息
+ Messages.Message(
+ "ResearchManager_ResearchLost".Translate(project.LabelCap),
+ MessageTypeDefOf.NegativeEvent
+ );
+
+ // 发送日志
+ ArachnaeLog.Debug($"[ResearchManager] Research project '{project.defName}' has been removed due to loss of all research buildings.");
+ }
+ else
+ {
+ Log.Warning($"[ResearchManager] Failed to remove research project: {project.defName}");
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.Error($"[ResearchManager] Error removing research project {project.defName}: {ex}");
+ }
}
///
@@ -141,7 +235,10 @@ namespace ArachnaeSwarm
removedCount += allReaders.RemoveAll(b =>
b == null || b.Destroyed || !b.Spawned || b.Map == null);
- Log.Message($"[ResearchManager] Cleaned up {removedCount} invalid buildings from allReaders");
+ if (removedCount > 0)
+ {
+ ArachnaeLog.Debug($"[ResearchManager] Cleaned up {removedCount} invalid buildings from allReaders");
+ }
}
else
{
@@ -175,9 +272,18 @@ namespace ArachnaeSwarm
foreach (var project in projectsToRemove)
{
researchBuildings.Remove(project);
+
+ // 如果项目存在且有效,触发丢失逻辑
+ if (project != null)
+ {
+ OnResearchLostDueToBuildingLoss(project);
+ }
}
- Log.Message($"[ResearchManager] Cleaned up {projectsToRemove.Count} empty research projects");
+ if (projectsToRemove.Count > 0)
+ {
+ ArachnaeLog.Debug($"[ResearchManager] Cleaned up {projectsToRemove.Count} empty research projects");
+ }
}
else
{
@@ -202,7 +308,7 @@ namespace ArachnaeSwarm
if (!allReaders.Contains(reader))
{
allReaders.Add(reader);
- Log.Message($"[ResearchManager] Registered reader: {reader.ThingID} at position {reader.Position}");
+ ArachnaeLog.Debug($"[ResearchManager] Registered reader: {reader.ThingID} at position {reader.Position}");
}
}
@@ -225,7 +331,7 @@ namespace ArachnaeSwarm
if (!researchBuildings[project].Contains(reader))
{
researchBuildings[project].Add(reader);
- Log.Message($"[ResearchManager] Registered research: {project.defName} at building {reader.Position}");
+ ArachnaeLog.Debug($"[ResearchManager] Registered research: {project.defName} at building {reader.Position}");
}
}
@@ -236,23 +342,26 @@ namespace ArachnaeSwarm
{
if (project == null)
{
- Log.Message("[ResearchManager] Project is null, cannot process building destruction");
+ ArachnaeLog.Debug("[ResearchManager] Project is null, cannot process building destruction");
return;
}
- Log.Message($"[ResearchManager] Processing building destruction for project: {project.defName}");
+ ArachnaeLog.Debug($"[ResearchManager] Processing building destruction for project: {project.defName}");
// 从列表中移除
if (researchBuildings != null && researchBuildings.ContainsKey(project))
{
researchBuildings[project].Remove(building);
- Log.Message($"[ResearchManager] Removed building from project list. Remaining buildings: {researchBuildings[project].Count}");
+ ArachnaeLog.Debug($"[ResearchManager] Removed building from project list. Remaining buildings: {researchBuildings[project].Count}");
// 检查是否还有建筑
if (researchBuildings[project].Count == 0)
{
researchBuildings.Remove(project);
- Log.Message($"[ResearchManager] No buildings left for project: {project.defName}");
+ ArachnaeLog.Debug($"[ResearchManager] No buildings left for project: {project.defName}");
+
+ // 触发科技丢失检查
+ OnResearchLostDueToBuildingLoss(project);
}
}
@@ -263,7 +372,50 @@ namespace ArachnaeSwarm
}
}
- // ... 其余方法保持不变 ...
+ ///
+ /// === 新增:获取指定科技的建筑数量 ===
+ ///
+ public int GetBuildingCountForResearch(ResearchProjectDef project)
+ {
+ if (project == null || !researchBuildings.ContainsKey(project))
+ return 0;
+
+ return researchBuildings[project]?.Count(b => b != null && !b.Destroyed && b.Spawned) ?? 0;
+ }
+
+ ///
+ /// === 新增:手动触发科技丢失检查(用于调试) ===
+ ///
+ public void DebugTriggerLostResearchCheck()
+ {
+ ArachnaeLog.Debug("[ResearchManager] Manual trigger of lost research check");
+ CheckForLostResearch();
+ }
+
+ ///
+ /// === 新增:强制移除某个科技(用于调试) ===
+ ///
+ public void DebugForceRemoveResearch(ResearchProjectDef project)
+ {
+ if (project == null)
+ return;
+
+ ArachnaeLog.Debug($"[ResearchManager] Debug force remove research: {project.defName}");
+
+ // 从字典中移除
+ if (researchBuildings.ContainsKey(project))
+ {
+ researchBuildings.Remove(project);
+ }
+
+ // 使用ResearchRemover移除科技
+ ResearchRemover.RemoveResearchProject(project, removeDependencies: false);
+
+ Messages.Message(
+ $"Debug: Research '{project.LabelCap}' has been forcibly removed.",
+ MessageTypeDefOf.NeutralEvent
+ );
+ }
///
/// 调试命令
@@ -272,13 +424,13 @@ namespace ArachnaeSwarm
{
if (Instance == null)
{
- Log.Message("[ResearchManager] No instance found");
+ ArachnaeLog.Debug("[ResearchManager] No instance found");
return;
}
- Log.Message("=== Research Manager Status ===");
- Log.Message($"Total buildings: {Instance.allReaders?.Count ?? 0}");
- Log.Message($"Active research projects: {Instance.researchBuildings?.Count ?? 0}");
+ ArachnaeLog.Debug("=== Research Manager Status ===");
+ ArachnaeLog.Debug($"Total buildings: {Instance.allReaders?.Count ?? 0}");
+ ArachnaeLog.Debug($"Active research projects: {Instance.researchBuildings?.Count ?? 0}");
if (Instance.researchBuildings != null)
{
@@ -287,7 +439,7 @@ namespace ArachnaeSwarm
if (kvp.Key == null) continue;
int activeBuildings = kvp.Value?.Count(b => b != null && !b.Destroyed && b.Spawned) ?? 0;
- Log.Message($" - {kvp.Key.defName}: {activeBuildings} active buildings");
+ ArachnaeLog.Debug($" - {kvp.Key.defName}: {activeBuildings} active buildings");
}
}
}
diff --git a/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompDestroyRemovesResearch.cs b/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompDestroyRemovesResearch.cs
index ead679a..2e998a3 100644
--- a/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompDestroyRemovesResearch.cs
+++ b/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompDestroyRemovesResearch.cs
@@ -5,7 +5,7 @@ using System.Linq;
using Verse;
using UnityEngine;
-namespace ArachnaeSwarm.Comps
+namespace ArachnaeSwarm
{
public class CompDestroyRemovesResearch : ThingComp
{
@@ -70,7 +70,7 @@ namespace ArachnaeSwarm.Comps
int removedCount = 0;
foreach (var project in projectsToRemove)
{
- if (Utilities.ResearchRemover.RemoveResearchProject(project, false))
+ if (ResearchRemover.RemoveResearchProject(project, false))
{
removedCount++;
}
@@ -124,7 +124,7 @@ namespace ArachnaeSwarm.Comps
Messages.Message(message, MessageTypeDefOf.NegativeEvent);
// 同时在日志中记录
- Log.Message($"[ResearchRemover] Building {parent.LabelCap} destroyed, removed {removedCount} research projects: " +
+ ArachnaeLog.Debug($"[ResearchRemover] Building {parent.LabelCap} destroyed, removed {removedCount} research projects: " +
string.Join(", ", projectsRemoved.Select(p => p.defName)));
}
@@ -210,7 +210,7 @@ namespace ArachnaeSwarm.Comps
int removedCount = 0;
foreach (var project in projectsToRemove)
{
- if (Utilities.ResearchRemover.RemoveResearchProject(project, false))
+ if (ResearchRemover.RemoveResearchProject(project, false))
{
removedCount++;
}
diff --git a/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompProperties_DestroyRemovesResearch.cs b/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompProperties_DestroyRemovesResearch.cs
index 2f7565d..907533a 100644
--- a/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompProperties_DestroyRemovesResearch.cs
+++ b/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompProperties_DestroyRemovesResearch.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using RimWorld;
using Verse;
-namespace ArachnaeSwarm.Comps
+namespace ArachnaeSwarm
{
public class CompProperties_DestroyRemovesResearch : CompProperties
{
diff --git a/Source/ArachnaeSwarm/HarmonyPatches/Patch_ResearchManager_AddRemoveMethod.cs b/Source/ArachnaeSwarm/HarmonyPatches/Patch_ResearchManager_AddRemoveMethod.cs
index 50e56f8..068e048 100644
--- a/Source/ArachnaeSwarm/HarmonyPatches/Patch_ResearchManager_AddRemoveMethod.cs
+++ b/Source/ArachnaeSwarm/HarmonyPatches/Patch_ResearchManager_AddRemoveMethod.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Reflection;
using Verse;
-namespace ArachnaeSwarm.Utilities
+namespace ArachnaeSwarm
{
public static class ResearchRemover
{
@@ -61,7 +61,7 @@ namespace ArachnaeSwarm.Utilities
return false;
}
- Log.Message($"[ResearchRemover] Removing research project: {projectDef.defName}");
+ ArachnaeLog.Debug($"[ResearchRemover] Removing research project: {projectDef.defName}");
// 获取字段值
var progress = (Dictionary)progressField.GetValue(manager);
@@ -81,21 +81,21 @@ namespace ArachnaeSwarm.Utilities
if (progress != null && progress.ContainsKey(projectDef))
{
progress.Remove(projectDef);
- Log.Message($" Removed from progress dictionary");
+ ArachnaeLog.Debug($" Removed from progress dictionary");
}
// 2. 从科技碎片字典中移除
if (techprints != null && techprints.ContainsKey(projectDef))
{
techprints.Remove(projectDef);
- Log.Message($" Removed from techprints dictionary");
+ ArachnaeLog.Debug($" Removed from techprints dictionary");
}
// 3. 从异常知识字典中移除
if (anomalyKnowledge != null && anomalyKnowledge.ContainsKey(projectDef))
{
anomalyKnowledge.Remove(projectDef);
- Log.Message($" Removed from anomalyKnowledge dictionary");
+ ArachnaeLog.Debug($" Removed from anomalyKnowledge dictionary");
}
// 4. 如果这是当前项目,停止它
@@ -103,7 +103,7 @@ namespace ArachnaeSwarm.Utilities
{
manager.StopProject(projectDef);
currentProjField.SetValue(manager, null);
- Log.Message($" Stopped current project");
+ ArachnaeLog.Debug($" Stopped current project");
}
// 5. 从异常知识项目中移除
@@ -119,7 +119,7 @@ namespace ArachnaeSwarm.Utilities
removed = true;
}
}
- if (removed) Log.Message($" Removed from anomaly knowledge projects");
+ if (removed) ArachnaeLog.Debug($" Removed from anomaly knowledge projects");
}
// 6. 如果设置了移除依赖项,递归移除依赖于此科技的项目
@@ -132,7 +132,7 @@ namespace ArachnaeSwarm.Utilities
// 7. 重新应用所有mod(取消该科技的效果)
manager.ReapplyAllMods();
- Log.Message($"[ResearchRemover] Successfully removed research project: {projectDef.defName}");
+ ArachnaeLog.Debug($"[ResearchRemover] Successfully removed research project: {projectDef.defName}");
return true;
}
catch (Exception ex)
@@ -184,7 +184,7 @@ namespace ArachnaeSwarm.Utilities
foreach (var dependent in dependentProjects)
{
- Log.Message($" Removing dependent project: {dependent.defName}");
+ ArachnaeLog.Debug($" Removing dependent project: {dependent.defName}");
// 递归移除依赖项
RemoveDependentProjects(dependent, progress, techprints, anomalyKnowledge,
@@ -246,7 +246,7 @@ namespace ArachnaeSwarm.Utilities
.Where(p => p.IsFinished)
.ToList();
- Log.Message($"[ResearchRemover] Removing all {allFinishedProjects.Count} finished research projects");
+ ArachnaeLog.Debug($"[ResearchRemover] Removing all {allFinishedProjects.Count} finished research projects");
// 批量移除所有科技
RemoveMultipleProjects(allFinishedProjects, false);
diff --git a/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompHediffTerrainSpawn.cs b/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompHediffTerrainSpawn.cs
index 4c88f03..49f1c5f 100644
--- a/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompHediffTerrainSpawn.cs
+++ b/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompHediffTerrainSpawn.cs
@@ -1,5 +1,8 @@
-using RimWorld;
+// File: CompHediffTerrainSpawn.cs
+using RimWorld;
+using System.Collections.Generic;
using Verse;
+using Verse.Sound;
namespace ArachnaeSwarm
{
@@ -13,6 +16,11 @@ namespace ArachnaeSwarm
private int ticksUntilNextSpawn;
private bool initialized = false;
+
+ // === 新增:缓存数据 ===
+ private int lastCellCount = 0;
+ private float lastSpawnTime = 0f;
+ private List affectedCells = new List();
public override void CompPostTick(ref float severityAdjustment)
{
@@ -55,6 +63,14 @@ namespace ArachnaeSwarm
if (Props.onlyWhenMoving && (parent.pawn.pather == null || !parent.pawn.pather.Moving))
return false;
+
+ // === 新增:检查是否在Creep上 ===
+ if (Props.onlyWhenOnCreep)
+ {
+ var terrain = parent.pawn.Map.terrainGrid.TerrainAt(parent.pawn.Position);
+ if (terrain == null || terrain.tags == null || !terrain.tags.Contains("ARA_Creep"))
+ return false;
+ }
// 确保pawn在地图内
if (!parent.pawn.Position.InBounds(parent.pawn.Map))
@@ -72,20 +88,59 @@ namespace ArachnaeSwarm
{
Map map = parent.pawn.Map;
IntVec3 center = parent.pawn.Position;
+
+ // 清空受影响单元格列表
+ affectedCells.Clear();
+ int spawnedCount = 0;
foreach (IntVec3 current in GenRadial.RadialCellsAround(center, Props.spawnRadius, true))
{
- if (current.InBounds(map) && current.Walkable(map))
+ if (!current.InBounds(map) || !current.Walkable(map))
+ continue;
+
+ // === 新增:检查是否被占用 ===
+ if (Props.ignoreOccupiedCells && IsCellOccupied(current, map))
+ continue;
+
+ TerrainDef currentTerrain = map.terrainGrid.TerrainAt(current);
+ if (currentTerrain == null)
+ continue;
+
+ // === 新增:使用黑名单检查 ===
+ if (ShouldSkipTerrain(currentTerrain, current, map))
{
- // 检查当前地形是否有 ARA_Creep 标签
- TerrainDef currentTerrain = map.terrainGrid.TerrainAt(current);
- if (currentTerrain != null && HasCreepTag(currentTerrain))
- {
- continue; // 跳过有 ARA_Creep 标签的地面
- }
-
- map.terrainGrid.SetTerrain(current, Props.terrainToSpawn);
+ continue; // 跳过有排除tag的地面
}
+ // === 新增:检查是否只影响自己的Creep ===
+ if (Props.affectOwnCreepOnly && currentTerrain.tags != null &&
+ currentTerrain.tags.Contains("ARA_Creep"))
+ {
+ // 这里可以添加派系检查逻辑
+ // 例如,只覆盖自己派系的Creep
+ }
+
+ // 应用地形变化
+ map.terrainGrid.SetTerrain(current, Props.terrainToSpawn);
+ affectedCells.Add(current);
+ spawnedCount++;
+
+ // === 新增:播放效果 ===
+ TryPlayEffects(current, map, spawnedCount);
+ }
+
+ lastCellCount = spawnedCount;
+ lastSpawnTime = Find.TickManager.TicksGame;
+
+ // 播放声音
+ if (Props.spawnSound != null && Rand.Chance(Props.soundChance))
+ {
+ Props.spawnSound.PlayOneShot(new TargetInfo(center, map));
+ }
+
+ // 调试日志
+ if (spawnedCount > 0)
+ {
+ ArachnaeLog.Debug($"[HediffTerrainSpawn] Spawned {spawnedCount} terrain cells for {parent.pawn.LabelShort}");
}
}
catch (System.Exception ex)
@@ -93,13 +148,135 @@ namespace ArachnaeSwarm
ArachnaeLog.Debug($"Error in CompHediffTerrainSpawn.DoTerrainSpawn: {ex}");
}
}
+
+ ///
+ /// === 新增:检查单元格是否被占用 ===
+ ///
+ private bool IsCellOccupied(IntVec3 cell, Map map)
+ {
+ var thingList = cell.GetThingList(map);
+ foreach (var thing in thingList)
+ {
+ // 忽略建筑和植物
+ if (thing is Building || thing is Plant)
+ {
+ return true;
+ }
+
+ // 忽略有生命的生物
+ if (thing is Pawn pawn && !pawn.Dead)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
///
- /// 检查地形是否具有 ARA_Creep 标签
+ /// === 新增:检查是否应该跳过此地形 ===
+ /// 基于tag黑名单、允许性和其他条件
///
- private bool HasCreepTag(TerrainDef terrain)
+ private bool ShouldSkipTerrain(TerrainDef terrain, IntVec3 cell, Map map)
{
- return terrain.tags != null && terrain.tags.Contains("ARA_Creep");
+ if (terrain == null)
+ return false;
+
+ // 1. 检查tag黑名单
+ if (Props.IsTerrainExcluded(terrain))
+ {
+ return true;
+ }
+
+ // 2. 检查允许性(如果启用)
+ if (Props.checkAffordances && terrain.affordances != null && Props.excludeAffordances != null)
+ {
+ foreach (var affordance in terrain.affordances)
+ {
+ if (affordance != null && Props.excludeAffordances.Contains(affordance.defName))
+ {
+ return true;
+ }
+ }
+ }
+
+ // 3. 检查优先地形(如果启用智能覆盖)
+ if (Props.smartOverlay && Props.IsPreferredTerrain(terrain))
+ {
+ return true;
+ }
+
+ // 4. 检查路径(如果启用路径保护)
+ if (Props.preservePaths)
+ {
+ if (IsPathCell(cell, map))
+ {
+ return true;
+ }
+ }
+
+ // 5. 检查是否是水或其他特殊地形
+ if (terrain.IsWater || terrain.defName.Contains("Water") || terrain.defName.Contains("Marsh"))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ ///
+ /// === 新增:检查是否应该覆盖此地形(智能覆盖模式) ===
+ ///
+ private bool ShouldOverlayTerrain(TerrainDef terrain)
+ {
+ if (terrain == null)
+ return false;
+
+ // 默认逻辑:仅覆盖"较差"的地形
+
+ // 如果地形已经有我们要生成的类型,跳过
+ if (terrain == Props.terrainToSpawn)
+ {
+ return false;
+ }
+
+ // 检查是否是肥沃土壤
+ if (terrain.fertility > 0.5f)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ ///
+ /// === 新增:检查是否是路径单元格 ===
+ ///
+ private bool IsPathCell(IntVec3 cell, Map map)
+ {
+ // 检查是否有路径标记
+ // 这里可以根据需要扩展,检查设计者路径标记等
+ // 暂时返回false,因为需要更多信息
+ return false;
+ }
+
+ ///
+ /// === 新增:尝试播放效果 ===
+ ///
+ private void TryPlayEffects(IntVec3 cell, Map map, int spawnedCount)
+ {
+ if (Props.spawnEffecter == null || !Rand.Chance(Props.effectChance))
+ return;
+
+ try
+ {
+ var effecter = Props.spawnEffecter.Spawn();
+ effecter.Trigger(new TargetInfo(cell, map), new TargetInfo(cell, map));
+ effecter.Cleanup();
+ }
+ catch (System.Exception ex)
+ {
+ ArachnaeLog.Debug($"Error playing effect at {cell}: {ex.Message}");
+ }
}
public override void CompExposeData()
@@ -107,6 +284,8 @@ namespace ArachnaeSwarm
base.CompExposeData();
Scribe_Values.Look(ref ticksUntilNextSpawn, "ticksUntilNextSpawn", Props.intervalTicks);
Scribe_Values.Look(ref initialized, "initialized", false);
+ Scribe_Values.Look(ref lastCellCount, "lastCellCount", 0);
+ Scribe_Values.Look(ref lastSpawnTime, "lastSpawnTime", 0f);
}
///
@@ -120,7 +299,28 @@ namespace ArachnaeSwarm
return $"Next spawn in: {ticksUntilNextSpawn} ticks\n" +
$"Interval: {Props.intervalTicks} ticks\n" +
$"Radius: {Props.spawnRadius}\n" +
- $"Terrain: {Props.terrainToSpawn?.defName ?? "None"}";
+ $"Terrain: {Props.terrainToSpawn?.defName ?? "None"}\n" +
+ $"Last spawned: {lastCellCount} cells at tick {lastSpawnTime}";
+ }
+
+ ///
+ /// === 新增:获取受影响的单元格(用于调试) ===
+ ///
+ public List GetAffectedCells()
+ {
+ return new List(affectedCells);
+ }
+
+ ///
+ /// === 新增:获取黑名单信息 ===
+ ///
+ public string GetBlacklistInfo()
+ {
+ var excludedTags = Props.GetExcludedTags();
+ if (excludedTags.Count == 0)
+ return "No tags excluded";
+
+ return $"Excluded tags: {string.Join(", ", excludedTags)}";
}
}
}
diff --git a/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompProperties_HediffTerrainSpawn.cs b/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompProperties_HediffTerrainSpawn.cs
index 8038b21..f8195f9 100644
--- a/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompProperties_HediffTerrainSpawn.cs
+++ b/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompProperties_HediffTerrainSpawn.cs
@@ -1,3 +1,5 @@
+// File: CompProperties_HediffTerrainSpawn.cs
+using System.Collections.Generic;
using Verse;
namespace ArachnaeSwarm
@@ -16,9 +18,95 @@ namespace ArachnaeSwarm
public bool onlyWhenDowned = false;
public bool onlyWhenMoving = false;
+ // === 新增:tag黑名单 ===
+ public List excludedTerrainTags = null; // 要排除的tag列表
+ public bool useDefaultExclusions = true; // 是否使用默认排除项(ARA_Creep和ARA_Incubator_Nutrient_Solution)
+
+ // === 新增:扩展检查选项 ===
+ public bool checkAffordances = false; // 是否检查地形允许性(affordances)
+ public List excludeAffordances = null; // 要排除的允许性列表
+
+ // === 新增:智能覆盖选项 ===
+ public bool smartOverlay = false; // 是否智能覆盖(仅覆盖"较差"的地形)
+ public List preferredTerrains = null; // 优先地形列表,这些不会被覆盖
+ public bool preservePaths = false; // 是否保留路径
+
+ // === 新增:行为选项 ===
+ public bool onlyWhenOnCreep = false; // 是否只在Creep上生效
+ public bool ignoreOccupiedCells = true; // 是否忽略被占用的单元格
+ public bool affectOwnCreepOnly = false; // 是否只影响自己的Creep(如果有派系)
+
+ // === 新增:视觉效果选项 ===
+ public EffecterDef spawnEffecter = null; // 生成地形时的效果
+ public float effectChance = 0.3f; // 效果播放几率
+ public SoundDef spawnSound = null; // 生成地形时的声音
+ public float soundChance = 0.1f; // 声音播放几率
+
public CompProperties_HediffTerrainSpawn()
{
compClass = typeof(CompHediffTerrainSpawn);
}
+
+ ///
+ /// 获取要排除的tag列表(包括默认值)
+ ///
+ public List GetExcludedTags()
+ {
+ var tags = new List();
+
+ // 如果使用默认排除项,添加默认tag
+ if (useDefaultExclusions)
+ {
+ if (!tags.Contains("ARA_Creep"))
+ tags.Add("ARA_Creep");
+ if (!tags.Contains("ARA_Incubator_Nutrient_Solution"))
+ tags.Add("ARA_Incubator_Nutrient_Solution");
+ }
+
+ // 添加自定义排除项
+ if (excludedTerrainTags != null)
+ {
+ foreach (var tag in excludedTerrainTags)
+ {
+ if (!tags.Contains(tag))
+ tags.Add(tag);
+ }
+ }
+
+ return tags;
+ }
+
+ ///
+ /// 检查地形是否被排除
+ ///
+ public bool IsTerrainExcluded(TerrainDef terrain)
+ {
+ if (terrain == null || terrain.tags == null)
+ return false;
+
+ var excludedTags = GetExcludedTags();
+ if (excludedTags.Count == 0)
+ return false;
+
+ // 检查地形是否有排除tag
+ foreach (var tag in terrain.tags)
+ {
+ if (excludedTags.Contains(tag))
+ return true;
+ }
+
+ return false;
+ }
+
+ ///
+ /// 检查地形是否在优先列表中(智能覆盖)
+ ///
+ public bool IsPreferredTerrain(TerrainDef terrain)
+ {
+ if (terrain == null || preferredTerrains == null)
+ return false;
+
+ return preferredTerrains.Contains(terrain);
+ }
}
}
diff --git a/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompHediffGiver.cs b/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompHediffGiver.cs
index 35f36aa..15485b6 100644
--- a/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompHediffGiver.cs
+++ b/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompHediffGiver.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using Verse;
using RimWorld;
@@ -44,10 +44,53 @@ namespace ArachnaeSwarm
if (!Props.allowDuplicates && pawn.health.hediffSet.HasHediff(hediffDef))
continue;
+ // === 新增:获取应应用的部位 ===
+ BodyPartDef bodyPartDef = Props.GetBodyPartForHediff(hediffDef);
+ BodyPartRecord bodyPartRecord = null;
+
+ if (bodyPartDef != null)
+ {
+ bodyPartRecord = GetFirstMatchingBodyPart(pawn, bodyPartDef);
+ }
+
// 添加hediff
- pawn.health.AddHediff(hediffDef);
+ if (bodyPartRecord != null)
+ {
+ pawn.health.AddHediff(hediffDef, bodyPartRecord);
+ }
+ else
+ {
+ pawn.health.AddHediff(hediffDef);
+ }
}
}
+
+ ///
+ /// 获取第一个匹配的身体部位记录
+ ///
+ private BodyPartRecord GetFirstMatchingBodyPart(Pawn pawn, BodyPartDef bodyPartDef)
+ {
+ if (pawn == null || bodyPartDef == null || pawn.RaceProps?.body == null)
+ return null;
+
+ try
+ {
+ // 获取所有匹配的身体部位
+ List matchingParts = pawn.RaceProps.body.GetPartsWithDef(bodyPartDef);
+
+ if (matchingParts != null && matchingParts.Count > 0)
+ {
+ // 返回第一个可用的部位
+ return matchingParts[0];
+ }
+ }
+ catch (Exception ex)
+ {
+ ArachnaeLog.Debug($"Error getting body part for {bodyPartDef.defName}: {ex.Message}");
+ }
+
+ return null;
+ }
// 新增:序列化hediffsApplied标记
public override void PostExposeData()
@@ -66,5 +109,33 @@ namespace ArachnaeSwarm
ArachnaeLog.Debug($"Debug: Applied hediffs to {pawn.Label}");
}
}
+
+ ///
+ /// === 新增:获取已应用的hediff信息(用于调试) ===
+ ///
+ public string GetAppliedHediffInfo()
+ {
+ if (!hediffsApplied || !(this.parent is Pawn pawn))
+ return "No hediffs applied";
+
+ var result = new System.Text.StringBuilder();
+ result.AppendLine("Applied hediffs:");
+
+ foreach (var hediffDef in Props.hediffs)
+ {
+ var hediff = pawn.health.hediffSet.GetFirstHediffOfDef(hediffDef);
+ if (hediff != null)
+ {
+ string partInfo = hediff.Part?.def?.defName ?? "No specific part";
+ result.AppendLine($"- {hediffDef.defName} on {partInfo}");
+ }
+ else
+ {
+ result.AppendLine($"- {hediffDef.defName} (not applied)");
+ }
+ }
+
+ return result.ToString();
+ }
}
}
diff --git a/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompProperties_HediffGiver.cs b/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompProperties_HediffGiver.cs
index 3cee652..db67c96 100644
--- a/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompProperties_HediffGiver.cs
+++ b/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompProperties_HediffGiver.cs
@@ -1,4 +1,3 @@
-using System;
using System.Collections.Generic;
using Verse;
@@ -14,10 +13,39 @@ namespace ArachnaeSwarm
// 是否允许重复添加相同的hediff
public bool allowDuplicates = false;
+
+ // === 新增:优先应用部位设置 ===
+ public bool useDefaultInstallPart = true; // 是否使用HediffDef的defaultInstallPart
+
+ // === 新增:自定义部位映射 ===
+ public Dictionary customBodyPartMapping = null;
public CompProperties_HediffGiver()
{
this.compClass = typeof(CompHediffGiver);
}
+
+ ///
+ /// 获取Hediff应该应用的部位
+ ///
+ public BodyPartDef GetBodyPartForHediff(HediffDef hediffDef)
+ {
+ if (hediffDef == null)
+ return null;
+
+ // 首先检查自定义映射
+ if (customBodyPartMapping != null && customBodyPartMapping.ContainsKey(hediffDef))
+ {
+ return customBodyPartMapping[hediffDef];
+ }
+
+ // 然后检查是否使用默认安装部位
+ if (useDefaultInstallPart && hediffDef.defaultInstallPart != null)
+ {
+ return hediffDef.defaultInstallPart;
+ }
+
+ return null; // 没有指定部位
+ }
}
}
diff --git a/Source/ArachnaeSwarm/Verbs/Cleave/Verb_MeleeAttack_Cleave.cs b/Source/ArachnaeSwarm/Verbs/Cleave/Verb_MeleeAttack_Cleave.cs
index 7173dd5..83f2a6d 100644
--- a/Source/ArachnaeSwarm/Verbs/Cleave/Verb_MeleeAttack_Cleave.cs
+++ b/Source/ArachnaeSwarm/Verbs/Cleave/Verb_MeleeAttack_Cleave.cs
@@ -75,7 +75,7 @@ namespace ArachnaeSwarm
}
// 智能溅射:次要目标的敌对状态必须与主目标一致
- if (secondaryTargetPawn.HostileTo(casterPawn))
+ if (secondaryTargetPawn.Faction == casterPawn.Faction)
{
continue;
}
diff --git a/非公开资源/Content/Textures/Terrain/Surfaces/ARA_InsectJelly_Terrain.png b/非公开资源/Content/Textures/Terrain/Surfaces/ARA_InsectJelly_Terrain.png
index 51ee441..068499b 100644
Binary files a/非公开资源/Content/Textures/Terrain/Surfaces/ARA_InsectJelly_Terrain.png and b/非公开资源/Content/Textures/Terrain/Surfaces/ARA_InsectJelly_Terrain.png differ