diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index 827718b..f3920fc 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/Effects/ARA_Flecks.xml b/1.6/1.6/Defs/Effects/ARA_Flecks.xml
index 9cf1eea..003067e 100644
--- a/1.6/1.6/Defs/Effects/ARA_Flecks.xml
+++ b/1.6/1.6/Defs/Effects/ARA_Flecks.xml
@@ -200,7 +200,7 @@
ARA_Mote_Melee_Attack_Main
1
(170,74,68)
- 3.5~4.5
+ 6.5~7.5
0.5
-35~35
OnSource
@@ -211,7 +211,7 @@
ARA_Mote_Melee_Attack_Main
1
(147,50,28)
- 2.5~3.5
+ 6.5~7.5
0.5
-15~15
OnSource
@@ -227,7 +227,7 @@
ARA_Mote_Melee_Attack_Main
1
(170,74,68)
- 3.5~4.5
+ 6.5~7.5
0.5
180~196
OnSource
@@ -238,7 +238,7 @@
ARA_Mote_Melee_Attack_Main
1
(147,50,28)
- 2.5~3.5
+ 6.5~7.5
0.5
195~215
OnSource
@@ -249,6 +249,29 @@
0.1
+
+ ARA_Area_Crush
+
+
+ SubEffecter_SprayerTriggered
+ Fleck_BlastMechBandShockwave
+ 1
+ OnSource
+ true
+ 0~0
+
+
+ SubEffecter_SprayerTriggered
+ Mote_GiantExplosion
+ 1~1
+
+
+ SubEffecter_SprayerTriggered
+ Mote_GiantExplosionInner
+ 5~5
+
+
+
ARA_Fleck_Icez_Cloud
diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBeastSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBeastSwarm.xml
index 957632a..da3dc42 100644
--- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBeastSwarm.xml
+++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBeastSwarm.xml
@@ -13,9 +13,9 @@
-
+
- Cut
+ ARA_PawnBodyWeapon_Cleave
65
2
@@ -23,14 +23,16 @@
-
- 120
- 4
- 0.75
+
+ 60
+ 6
+ 1
false
- Cut
+ Cut
ARA_Double_Melee_Attack_Hit
ARA_Double_Melee_Attack_Hit
+ true
+ false
@@ -67,6 +69,31 @@
true
+
+ 4
+ 120
+ Crush
+ 60
+ false
+ ARA_Area_Crush
+
-
+
+ ARA_PawnBodyWeapon_Cleave
+
+
+
+ ARA_PawnBodyWeapon_Cleave
+ ARA_PawnBodyWeapon_Cleave
+
+ ArachnaeSwarm.Verb_MeleeAttack_BodyWeapon
+ Cut
+
+ MeleeAttack
+ Maneuver_Slash_MeleeHit
+ Maneuver_Slash_MeleeDeflect
+ Maneuver_Slash_MeleeMiss
+ Maneuver_Slash_MeleeDodge
+
+
\ No newline at end of file
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 5645ed9..dbddbfc 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 @@
- 90
- 2.5
+ 30
+ 3.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 1099980..2933e92 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_Building.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_Building.xml
@@ -170,6 +170,7 @@
阿拉克涅工蜂将硬质材料和甲壳素混合堆起来形成的墙壁,虫族对这片墙壁进行了精心打磨,质地坚硬的同时看起来美观多了。
Things/Building/Linked/WallSmooth_MenuIcon
+
Things/Building/Linked/RockSmooth_Atlas
Graphic_Single
@@ -347,6 +348,7 @@
DoorMoveable
1
true
+
ArachnaeSwarm/Building/Door/ARA_InsectDoor
Graphic_Multi
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 f9ab248..d1a4264 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml
@@ -407,6 +407,7 @@
250
ArachnaeSwarm/Terrain/Surfaces/ARA_InsectJelly_Terrain
ARA_InsectCreep
+
(231, 224, 188)
Terrain/Surfaces/AncientMegastructure
TerrainFadeRoughSoftLight
diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo
index 4b2ed52..430b39f 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 fca50ff..6f30f13 100644
--- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
+++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
@@ -1,154 +1,207 @@
{
"Version": 1,
- "WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
+ "WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\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\\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:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\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\\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|E:\\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\\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|E:\\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\\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|E:\\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\\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|E:\\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\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\workgivers\\workgiver_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\\workgivers\\workgiver_swarmmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:workgivers\\workgiver_swarmmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\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|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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_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:{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}",
- "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.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\\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\\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}",
+ "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\\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\\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\\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_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\\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\\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\\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\\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\\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\\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\\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": [
@@ -158,19 +211,227 @@
"DocumentGroups": [
{
"DockedWidth": 200,
- "SelectedChildIndex": 2,
+ "SelectedChildIndex": 1,
"Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "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": "AgIAAAAAAAAAAAAAAAAAAAQAAAAXAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-12-18T08:30:19.688Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "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": "AgIAAAAAAAAAAAAAAAAAAAUAAAASAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-12-18T08:30:03.538Z",
+ "EditorCaption": ""
+ },
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
{
"$type": "Document",
- "DocumentIndex": 1,
+ "DocumentIndex": 4,
+ "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",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "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",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "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",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 5,
+ "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": "AgIAAAAAAAAAAAAAAAAAAAkAAAAsAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-12-18T08:17:18.317Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 10,
+ "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": 6,
+ "Title": "WorkGiver_SwarmMaintain.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_SwarmMaintain.cs",
+ "RelativeDocumentMoniker": "WorkGivers\\WorkGiver_SwarmMaintain.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_SwarmMaintain.cs",
+ "RelativeToolTip": "WorkGivers\\WorkGiver_SwarmMaintain.cs",
+ "ViewState": "AgIAACQAAAAAAAAAAAAowDcAAAAgAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-12-17T13:13:35.358Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 11,
+ "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": 9,
+ "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": "AgIAABIAAAAAAAAAAAAywGsAAAAWAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-12-18T03:30:20.061Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 7,
+ "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": "AgIAAF0AAAAAAAAAAAAAwJAAAAAMAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-12-15T18:22:14.171Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 8,
+ "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": 12,
+ "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": 13,
+ "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": 14,
+ "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": 49,
+ "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": 50,
+ "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": 16,
"Title": "CompApparelInterceptor.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\CompApparelInterceptor.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\CompApparelInterceptor.cs",
"RelativeDocumentMoniker": "Thing_Comps\\CompApparelInterceptor.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -178,24 +439,23 @@
},
{
"$type": "Document",
- "DocumentIndex": 0,
+ "DocumentIndex": 15,
"Title": "Hediff_ConfigurableMutant.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ConfigurableMutant\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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",
- "EditorCaption": ""
+ "WhenOpened": "2025-12-17T18:13:05.563Z"
},
{
"$type": "Document",
- "DocumentIndex": 2,
+ "DocumentIndex": 17,
"Title": "CompDelayedTerrainSpawn.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"RelativeDocumentMoniker": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"RelativeToolTip": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"ViewState": "AgIAACMAAAAAAAAAAAAQwCgAAABDAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -203,11 +463,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 6,
+ "DocumentIndex": 21,
"Title": "WorkGiver_Refuel_Nutrition.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -215,11 +475,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 4,
+ "DocumentIndex": 19,
"Title": "WorkGiver_FeedWithHoney.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_FeedWithHoney.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_FeedWithHoney.cs",
"RelativeDocumentMoniker": "WorkGivers\\WorkGiver_FeedWithHoney.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_FeedWithHoney.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_FeedWithHoney.cs",
"RelativeToolTip": "WorkGivers\\WorkGiver_FeedWithHoney.cs",
"ViewState": "AgIAAB0AAAAAAAAAAAAQwD0AAAAQAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -227,11 +487,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 9,
+ "DocumentIndex": 24,
"Title": "WorkGiver_StripChitin.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_StripChitin.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_StripChitin.cs",
"RelativeDocumentMoniker": "WorkGivers\\WorkGiver_StripChitin.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_StripChitin.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_StripChitin.cs",
"RelativeToolTip": "WorkGivers\\WorkGiver_StripChitin.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAZAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -239,11 +499,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 8,
+ "DocumentIndex": 23,
"Title": "WorkGiver_ExtractHoney.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_ExtractHoney.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_ExtractHoney.cs",
"RelativeDocumentMoniker": "WorkGivers\\WorkGiver_ExtractHoney.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_ExtractHoney.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_ExtractHoney.cs",
"RelativeToolTip": "WorkGivers\\WorkGiver_ExtractHoney.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAgwB0AAAAyAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -251,11 +511,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 5,
+ "DocumentIndex": 20,
"Title": "ARA_HediffDefOf.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs",
"RelativeDocumentMoniker": "ARA_HediffDefOf.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs",
"RelativeToolTip": "ARA_HediffDefOf.cs",
"ViewState": "AgIAAAAAAAAAAAAAAADwvxIAAAAkAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -263,11 +523,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 3,
+ "DocumentIndex": 18,
"Title": "Need_HoneyProduction.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_HoneyProduction.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_HoneyProduction.cs",
"RelativeDocumentMoniker": "Needs\\Need_HoneyProduction.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_HoneyProduction.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_HoneyProduction.cs",
"RelativeToolTip": "Needs\\Need_HoneyProduction.cs",
"ViewState": "AgIAAGIAAAAAAAAAAAAkwG4AAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -275,11 +535,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 10,
+ "DocumentIndex": 25,
"Title": "JobDriver_ExtractHoney.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -287,11 +547,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 11,
+ "DocumentIndex": 26,
"Title": "ThinkNode_JobGiver_ExtractHoney.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -299,11 +559,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 12,
+ "DocumentIndex": 27,
"Title": "JobDriver_SwarmMaintain.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_SwarmMaintain\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -311,11 +571,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 7,
+ "DocumentIndex": 22,
"Title": "JobDriver_FeedWithHoney.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -323,23 +583,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 13,
- "Title": "CompCleave.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Cleave\\CompCleave.cs",
- "RelativeDocumentMoniker": "Verbs\\Cleave\\CompCleave.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Cleave\\CompCleave.cs",
- "RelativeToolTip": "Verbs\\Cleave\\CompCleave.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAkAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:40:25.528Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 14,
+ "DocumentIndex": 28,
"Title": "Comp_SwarmMaintenance.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_SwarmMaintenance\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -347,11 +595,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 15,
+ "DocumentIndex": 29,
"Title": "Need_ChitinArmor.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_ChitinArmor.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_ChitinArmor.cs",
"RelativeDocumentMoniker": "Needs\\Need_ChitinArmor.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -359,23 +607,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 16,
- "Title": "WorkGiver_SwarmMaintain.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_SwarmMaintain.cs",
- "RelativeDocumentMoniker": "WorkGivers\\WorkGiver_SwarmMaintain.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_SwarmMaintain.cs",
- "RelativeToolTip": "WorkGivers\\WorkGiver_SwarmMaintain.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAF0AAAAcAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-17T13:13:35.358Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 17,
+ "DocumentIndex": 30,
"Title": "Building_DormancyVat.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_DormancyVat\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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": "AgIAAAAAAAAAAAAAAAAAAOcAAAAjAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -383,11 +619,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 18,
+ "DocumentIndex": 31,
"Title": "Building_ResearchBlueprintReader.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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": "AgIAAPQAAAAAAAAAAAAywAoBAABrAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
@@ -395,11 +631,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 20,
+ "DocumentIndex": 33,
"Title": "JobDriver_StripChitin.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -407,11 +643,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 22,
+ "DocumentIndex": 35,
"Title": "Comp_ChitinStripping.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -419,11 +655,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 23,
+ "DocumentIndex": 36,
"Title": "Verb_ShootSelfUnderfoot.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Verb_ShootSelfUnderfoot.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Verb_ShootSelfUnderfoot.cs",
"RelativeDocumentMoniker": "Verbs\\Verb_ShootSelfUnderfoot.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -431,11 +667,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 24,
+ "DocumentIndex": 37,
"Title": "HediffComp_TopTurret.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffComp_TopTurret\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -443,11 +679,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 19,
+ "DocumentIndex": 32,
"Title": "RoomRoleWorker_Incubator.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\RoomRole\\RoomRoleWorker_Incubator.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\RoomRole\\RoomRoleWorker_Incubator.cs",
"RelativeDocumentMoniker": "RoomRole\\RoomRoleWorker_Incubator.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -455,11 +691,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 21,
+ "DocumentIndex": 34,
"Title": "CompProperties_ChitinStripping.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -467,11 +703,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 25,
+ "DocumentIndex": 38,
"Title": "CompResearchProducer.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -479,11 +715,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 26,
+ "DocumentIndex": 39,
"Title": "CompCorpseConverter.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CorpseConverter\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -491,11 +727,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 27,
+ "DocumentIndex": 40,
"Title": "CompProperties_CorpseConverter.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CorpseConverter\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -503,11 +739,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 30,
+ "DocumentIndex": 43,
"Title": "CompRefuelableNutrition_WithKey.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\WULA_MutiFuelSpawner\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -515,11 +751,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 28,
+ "DocumentIndex": 41,
"Title": "CompTerrainChanger.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_TerrainChanger\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -527,11 +763,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 29,
+ "DocumentIndex": 42,
"Title": "CompProperties_TerrainChanger.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_TerrainChanger\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -539,23 +775,21 @@
},
{
"$type": "Document",
- "DocumentIndex": 36,
+ "DocumentIndex": 48,
"Title": "Building_RefuelingVat.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs",
- "RelativeDocumentMoniker": "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",
- "RelativeToolTip": "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": 31,
+ "DocumentIndex": 44,
"Title": "CompProperties_IncubatorData.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -563,11 +797,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 32,
+ "DocumentIndex": 45,
"Title": "OothecaIncubatorExtension.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs",
"RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -575,23 +809,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 35,
- "Title": "Building_EquipmentOotheca.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs",
- "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs",
- "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs",
- "ViewState": "AgIAACcAAAAAAAAAAAAAADoDAABSAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-12-15T18:22:14.171Z"
- },
- {
- "$type": "Document",
- "DocumentIndex": 33,
+ "DocumentIndex": 46,
"Title": "Building_Ootheca.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
@@ -599,11 +821,11 @@
},
{
"$type": "Document",
- "DocumentIndex": 34,
+ "DocumentIndex": 47,
"Title": "CompProperties_EquipmentIncubatorData.cs",
- "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\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": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\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|",
diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
index 8ee48eb..3bbd5e0 100644
--- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
+++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
@@ -211,6 +211,10 @@
+
+
+
+
diff --git a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs
index 2d6886c..130a0be 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs
@@ -33,27 +33,70 @@ namespace ArachnaeSwarm
private float qualityMultiplier = 1.0f;
private float qualityProgress = 0f;
private float qualityTotal = 0f;
- // === 新增:营养液消耗相关字段 ===
+
+ // === 修复后的营养液消耗相关字段 ===
private int totalNutrientCost = 0; // 总共需要的营养液地块数量
private int consumedNutrientCount = 0; // 已消耗的营养液地块数量
private int lastConsumeCheckTick = -1; // 上次检查消耗的时间
private const int ConsumeCheckInterval = 250; // 检查间隔(tick)
- private const int ConsumeRadius = 5; // 搜索半径
private List consumedCells = new List(); // 已消耗的单元格记录
- private bool hasStartedConsumption = false; // 是否已开始消耗
- private float consumeProgress = 0f; // 消耗进度(0-1)
-
+ private bool isConsuming = false; // 是否正在消耗营养液
+ private int consecutiveFailedConsumptions = 0; // 连续失败的消耗次数
+ private const int MaxConsecutiveFailures = 10; // 最大连续失败次数,超过则暂停检查
+ private bool nutrientDeficiencyPause = false; // 是否因营养液不足而暂停
+
// === 新增属性 ===
public int TotalNutrientCost => totalNutrientCost;
public int ConsumedNutrientCount => consumedNutrientCount;
public float NutrientProgress => totalNutrientCost > 0 ? (float)consumedNutrientCount / totalNutrientCost : 0f;
public bool HasEnoughNutrients => consumedNutrientCount >= totalNutrientCost;
- public bool IsConsuming => hasStartedConsumption && !HasEnoughNutrients && isIncubating;
+ public bool IsConsuming => isConsuming;
+
+ // 缓存的ModExtension
+ private OothecaIncubatorExtension cachedExtension;
+
+ // 获取ModExtension的辅助属性
+ public OothecaIncubatorExtension Ext
+ {
+ get
+ {
+ if (cachedExtension == null)
+ {
+ cachedExtension = def.GetModExtension() ?? OothecaIncubatorExtension.Default;
+ }
+ return cachedExtension;
+ }
+ }
+
+ // 属性访问器
+ public float SpeedMultiplier
+ {
+ get
+ {
+ if (lastMultiplierUpdateTick < 0 || Find.TickManager.TicksGame - lastMultiplierUpdateTick >= MultiplierUpdateInterval)
+ {
+ UpdateSpeedMultiplier();
+ }
+ return speedMultiplier;
+ }
+ }
+
+ // 质量属性
+ public float QualityMultiplier => qualityMultiplier;
+ public float QualityProgress => qualityProgress;
+ public float QualityPercent => qualityTotal > 0 ? qualityProgress / qualityTotal : 0f;
+
+ // 进度百分比
+ public float AdjustedProgressPercent
+ {
+ get
+ {
+ if (incubationDuration <= 0) return 0f;
+ return incubationProgress / incubationDuration;
+ }
+ }
-
- // === 新增:营养液消耗方法 ===
-
- // 初始化营养液消耗需求
+ // === 修复后的初始化营养液消耗方法 ===
private void InitializeNutrientConsumption()
{
if (incubatingThingDef == null)
@@ -64,39 +107,80 @@ namespace ArachnaeSwarm
if (costStat != null)
{
totalNutrientCost = Mathf.RoundToInt(incubatingThingDef.GetStatValueAbstract(costStat, null));
+ Log.Message($"[ARA] 初始化营养液消耗: {incubatingThingDef.defName} 需要 {totalNutrientCost} 个营养液地块");
}
else
{
- totalNutrientCost = 0; // 如果统计不存在,则不需要消耗
+ totalNutrientCost = 0;
+ Log.Message($"[ARA] 孵化 {incubatingThingDef.defName} 不需要营养液");
}
consumedNutrientCount = 0;
consumedCells.Clear();
- hasStartedConsumption = false;
- consumeProgress = 0f;
+ isConsuming = true; // 立即开始消耗
+ consecutiveFailedConsumptions = 0;
+ nutrientDeficiencyPause = false;
+
+ // 立即检查一次营养液
+ lastConsumeCheckTick = Find.TickManager.TicksGame - ConsumeCheckInterval; // 强制立即检查
}
- // 检查并消耗营养液
+ // === 修复后的检查并消耗营养液方法 ===
private void CheckAndConsumeNutrients()
{
- if (!isIncubating || incubatingThingDef == null || HasEnoughNutrients)
+ if (!isIncubating || incubatingThingDef == null)
return;
- // 第一次检查时标记开始消耗
- if (!hasStartedConsumption)
+
+ // 如果已经满足需求,停止消耗
+ if (HasEnoughNutrients)
{
- hasStartedConsumption = true;
- Messages.Message("ARA_EquipmentIncubator.StartedNutrientConsumption".Translate(),
- this, MessageTypeDefOf.SilentInput);
+ if (isConsuming)
+ {
+ Log.Message($"[ARA] 营养液需求已满足: {consumedNutrientCount}/{totalNutrientCost}");
+ isConsuming = false;
+ nutrientDeficiencyPause = false; // 重置暂停标志
+ }
+ return;
}
- // 计算本次应该消耗的数量
- // 基于孵化进度来动态计算
+
+ // 计算需要消耗的数量(基于当前进度)
float targetProgress = AdjustedProgressPercent;
int targetConsumed = Mathf.RoundToInt(targetProgress * totalNutrientCost);
- int toConsume = targetConsumed - consumedNutrientCount;
+ int toConsume = Mathf.Max(1, targetConsumed - consumedNutrientCount);
+
if (toConsume <= 0)
return;
+
// 查找可消耗的营养液单元格
List availableCells = FindNutrientCells();
+
+ if (availableCells.Count == 0)
+ {
+ consecutiveFailedConsumptions++;
+ nutrientDeficiencyPause = true; // 设置为暂停
+
+ // 如果没有找到营养液,检查是否应该应用伤害
+ if (Ext.nutrientDeficiencyDamageEnabled && toConsume > 0)
+ {
+ ApplyNutrientDeficiencyDamage();
+
+ // 显示消息(频率控制)
+ if (Find.TickManager.TicksGame % 2000 == 0 && Rand.Chance(0.3f))
+ {
+ Messages.Message("ARA_EquipmentIncubator.NoNutrientsFound".Translate(),
+ this, MessageTypeDefOf.NegativeEvent);
+ }
+
+ Log.Warning($"[ARA] 未找到营养液,连续失败次数: {consecutiveFailedConsumptions}");
+ }
+ return;
+ }
+
+ // 重置失败计数和暂停标志
+ consecutiveFailedConsumptions = 0;
+ nutrientDeficiencyPause = false; // 有营养液可用,取消暂停
+
+ // 开始消耗
int consumedThisTick = 0;
for (int i = 0; i < Mathf.Min(toConsume, availableCells.Count); i++)
{
@@ -104,38 +188,34 @@ namespace ArachnaeSwarm
{
consumedThisTick++;
consumedNutrientCount++;
- // 添加到已消耗列表
consumedCells.Add(availableCells[i]);
+
if (HasEnoughNutrients)
break;
}
}
+
if (consumedThisTick > 0)
{
- consumeProgress = NutrientProgress;
- // 如果达到需求,显示消息
+ Log.Message($"[ARA] 消耗了 {consumedThisTick} 个营养液,总计: {consumedNutrientCount}/{totalNutrientCost}");
+
+ // 显示消息
+ if (consumedThisTick > 0 && Find.TickManager.TicksGame % 1000 == 0)
+ {
+ Messages.Message($"ARA_EquipmentIncubator.NutrientConsumed".Translate(consumedThisTick, consumedNutrientCount, totalNutrientCost),
+ this, MessageTypeDefOf.SilentInput);
+ }
+
+ // 如果达到需求,显示完成消息
if (HasEnoughNutrients)
{
Messages.Message("ARA_EquipmentIncubator.NutrientRequirementsMet".Translate(),
this, MessageTypeDefOf.PositiveEvent);
}
}
- else if (Ext.nutrientDeficiencyDamageEnabled && toConsume > 0)
- {
- // === 新增:没有找到营养液,造成伤害 ===
- ApplyNutrientDeficiencyDamage();
-
- // === 新增:如果设置停止孵化,则暂停进度 ===
- if (Ext.stopIncubationWhenNutrientDeficient)
- {
- // 暂停孵化进度,直到找到营养液
- // 我们通过不增加incubationProgress来实现
- // 但这里需要特殊处理,我们在Tick方法中处理
- }
- }
}
- // === 新增:应用营养液不足的伤害 ===
+ // === 修复后的应用营养液不足伤害方法 ===
private void ApplyNutrientDeficiencyDamage()
{
if (Ext.nutrientDeficiencyDamageAmount <= 0f || Ext.nutrientDamageType == null)
@@ -189,30 +269,40 @@ namespace ArachnaeSwarm
}
}
- // 查找可消耗的营养液单元格
+ // === 修复后的查找营养液单元格方法 ===
public List FindNutrientCells()
{
List availableCells = new List();
var map = Map;
if (map == null)
return availableCells;
- // === 修改:使用ModExtension中定义的营养液检测半径 ===
- int searchRadius = Ext.NutrientSolutionRadiusInt; // 使用ModExtension中的半径
-
+
+ // 使用ModExtension中定义的营养液检测半径
+ int searchRadius = Ext.NutrientSolutionRadiusInt;
+
TerrainDef nutrientDef = DefDatabase.GetNamedSilentFail("ARA_Incubator_Nutrient_Solution");
if (nutrientDef == null)
- return availableCells;
- // 搜索矩形区域
- for (int x = -searchRadius; x <= searchRadius; x++)
{
- for (int z = -searchRadius; z <= searchRadius; z++)
+ Log.Error("[ARA] 未找到营养液地形定义: ARA_Incubator_Nutrient_Solution");
+ return availableCells;
+ }
+
+ // 优化搜索:先从内圈开始,逐步扩大
+ int minRadius = 1; // 最小搜索半径
+ int currentRadius = Mathf.Min(searchRadius, Mathf.Max(minRadius, consecutiveFailedConsumptions + 1));
+
+ for (int x = -currentRadius; x <= currentRadius; x++)
+ {
+ for (int z = -currentRadius; z <= currentRadius; z++)
{
IntVec3 cell = Position + new IntVec3(x, 0, z);
- // 排除自己的位置
- if (cell == Position)
+
+ // 排除自己的位置和已消耗的单元格
+ if (cell == Position || consumedCells.Contains(cell))
continue;
- // 检查是否在边界内且未被消耗过
- if (cell.InBounds(map) && !consumedCells.Contains(cell))
+
+ // 检查是否在边界内
+ if (cell.InBounds(map))
{
TerrainDef terrain = map.terrainGrid.TerrainAt(cell);
if (terrain == nutrientDef)
@@ -222,12 +312,17 @@ namespace ArachnaeSwarm
}
}
}
+
// 随机排序,避免总是从固定位置开始消耗
- availableCells.Shuffle();
+ if (availableCells.Count > 1)
+ {
+ availableCells.Shuffle();
+ }
+
return availableCells;
}
- // 消耗单个营养液单元格
+ // === 修复后的消耗单个营养液单元格方法 ===
private bool ConsumeNutrientCell(IntVec3 cell)
{
var map = Map;
@@ -247,18 +342,6 @@ namespace ArachnaeSwarm
// 转换为昆虫爬行地貌
map.terrainGrid.SetTerrain(cell, insectCreepDef);
- // 检查是否有物品需要移除(如果有的话)
- List thingsAtCell = map.thingGrid.ThingsListAt(cell);
- foreach (Thing thing in thingsAtCell)
- {
- // 如果物品阻碍了地貌转换,可能需要处理
- if (thing.def.passability == Traversability.Impassable)
- {
- // 可以根据需要处理阻碍物
- continue;
- }
- }
-
// 创建营养液蓝图
try
{
@@ -267,19 +350,20 @@ namespace ArachnaeSwarm
nutrientDef,
cell,
map,
- Rot4.North, // 地貌没有旋转,使用默认
+ Rot4.North,
Faction.OfPlayer,
- null // 地貌没有stuff
+ null
);
if (blueprint != null)
{
// 显示转换效果
- if (Find.TickManager.TicksGame % 10 == 0) // 每10次消耗显示一次效果
+ if (Find.TickManager.TicksGame % 10 == 0)
{
MoteMaker.ThrowText(cell.ToVector3Shifted(), map,
"ARA_Consumed".Translate(), Color.yellow);
}
+ return true;
}
}
catch (Exception ex)
@@ -290,86 +374,70 @@ namespace ArachnaeSwarm
return false;
}
- return true;
+ return false;
}
- // 获取营养液消耗描述
- public string GetNutrientConsumptionDescription()
+ // === 修复后的Tick方法 ===
+ protected override void Tick()
{
- var builder = new StringBuilder();
+ base.Tick();
- builder.AppendLine("ARA_EquipmentIncubator.NutrientConsumption".Translate());
- builder.AppendLine();
-
- if (totalNutrientCost == 0)
+ if (larvaOperateTicksRemaining > 0)
{
- builder.AppendLine("ARA_EquipmentIncubator.NoNutrientCost".Translate());
- return builder.ToString().TrimEndNewlines();
+ larvaOperateTicksRemaining--;
}
- builder.AppendLine("ARA_EquipmentIncubator.NutrientRequirement".Translate(totalNutrientCost));
- builder.AppendLine("ARA_EquipmentIncubator.NutrientConsumed".Translate(consumedNutrientCount));
- builder.AppendLine("ARA_EquipmentIncubator.NutrientProgress".Translate(NutrientProgress.ToStringPercent()));
-
- if (HasEnoughNutrients)
- {
- builder.AppendLine();
- builder.AppendLine("ARA_EquipmentIncubator.NutrientRequirementsMet".Translate());
- }
- else if (IsConsuming)
- {
- builder.AppendLine();
- builder.AppendLine("ARA_EquipmentIncubator.ConsumingNutrients".Translate());
- }
-
- return builder.ToString().TrimEndNewlines();
- }
-
- // 缓存的ModExtension
- private OothecaIncubatorExtension cachedExtension;
-
- // 获取ModExtension的辅助属性
- public OothecaIncubatorExtension Ext
- {
- get
- {
- if (cachedExtension == null)
- {
- cachedExtension = def.GetModExtension() ?? OothecaIncubatorExtension.Default;
- }
- return cachedExtension;
- }
- }
-
- // 属性访问器
- public float SpeedMultiplier
- {
- get
+ if (isIncubating)
{
+ // 更新乘数
if (lastMultiplierUpdateTick < 0 || Find.TickManager.TicksGame - lastMultiplierUpdateTick >= MultiplierUpdateInterval)
{
UpdateSpeedMultiplier();
+ UpdateQualityMultiplier();
+ }
+
+ // 检查营养液消耗
+ if (lastConsumeCheckTick < 0 || Find.TickManager.TicksGame - lastConsumeCheckTick >= ConsumeCheckInterval)
+ {
+ lastConsumeCheckTick = Find.TickManager.TicksGame;
+ CheckAndConsumeNutrients();
+ }
+
+ float currentSpeed = SpeedMultiplier;
+
+ // 决定是否应该增加进度
+ bool shouldProgress = true;
+
+ // 检查是否因营养液不足而暂停
+ if (Ext.stopIncubationWhenNutrientDeficient &&
+ totalNutrientCost > 0 &&
+ !HasEnoughNutrients &&
+ nutrientDeficiencyPause)
+ {
+ shouldProgress = false;
+
+ // 显示暂停消息(频率控制)
+ if (Find.TickManager.TicksGame % 2000 == 0 && Rand.Chance(0.2f))
+ {
+ Messages.Message("ARA_EquipmentIncubator.IncubationPausedNoNutrients".Translate(incubatingThingDef?.LabelCap ?? "Unknown"),
+ this, MessageTypeDefOf.NeutralEvent);
+ }
+ }
+
+ if (shouldProgress)
+ {
+ incubationProgress += currentSpeed;
+ qualityProgress += currentSpeed * QualityMultiplier;
+ }
+
+ if (incubationProgress >= incubationDuration)
+ {
+ CompleteIncubation();
}
- return speedMultiplier;
- }
- }
-
- // 质量属性
- public float QualityMultiplier => qualityMultiplier;
- public float QualityProgress => qualityProgress;
- public float QualityPercent => qualityTotal > 0 ? qualityProgress / qualityTotal : 0f;
-
- // 进度百分比
- public float AdjustedProgressPercent
- {
- get
- {
- if (incubationDuration <= 0) return 0f;
- return incubationProgress / incubationDuration;
}
}
- // 获取速度因子描述
+ // === 获取速度因子描述 ===
public string GetSpeedFactorsDescription()
{
var builder = new StringBuilder();
@@ -408,7 +476,7 @@ namespace ArachnaeSwarm
return builder.ToString().TrimEndNewlines();
}
- // 获取质量因子描述
+ // === 获取质量因子描述 ===
public string GetQualityFactorsDescription()
{
var builder = new StringBuilder();
@@ -453,8 +521,46 @@ namespace ArachnaeSwarm
return builder.ToString().TrimEndNewlines();
}
-
- // 构建呼叫幼虫描述
+
+ // === 获取营养液消耗描述 ===
+ public string GetNutrientConsumptionDescription()
+ {
+ var builder = new StringBuilder();
+
+ builder.AppendLine("ARA_EquipmentIncubator.NutrientConsumption".Translate());
+ builder.AppendLine();
+
+ if (totalNutrientCost == 0)
+ {
+ builder.AppendLine("ARA_EquipmentIncubator.NoNutrientCost".Translate());
+ return builder.ToString().TrimEndNewlines();
+ }
+
+ builder.AppendLine("ARA_EquipmentIncubator.NutrientRequirement".Translate(totalNutrientCost));
+ builder.AppendLine("ARA_EquipmentIncubator.NutrientConsumed".Translate(consumedNutrientCount));
+ builder.AppendLine("ARA_EquipmentIncubator.NutrientProgress".Translate(NutrientProgress.ToStringPercent()));
+
+ if (HasEnoughNutrients)
+ {
+ builder.AppendLine();
+ builder.AppendLine("ARA_EquipmentIncubator.NutrientRequirementsMet".Translate());
+ }
+ else if (isConsuming)
+ {
+ builder.AppendLine();
+ builder.AppendLine("ARA_EquipmentIncubator.ConsumingNutrients".Translate());
+ }
+
+ if (nutrientDeficiencyPause)
+ {
+ builder.AppendLine();
+ builder.AppendLine("ARA_EquipmentIncubator.NutrientDeficiencyPaused".Translate());
+ }
+
+ return builder.ToString().TrimEndNewlines();
+ }
+
+ // === 构建呼叫幼虫描述 ===
private string BuildCallLarvaDescription(EquipmentIncubationConfig config)
{
var builder = new StringBuilder();
@@ -473,7 +579,7 @@ namespace ArachnaeSwarm
return builder.ToString().TrimEndNewlines();
}
- // 呼叫幼虫
+ // === 呼叫幼虫 ===
private void CallLarva()
{
// 检查是否已经在孵化中
@@ -483,6 +589,7 @@ namespace ArachnaeSwarm
MessageTypeDefOf.RejectInput);
return;
}
+
// 检查是否有幼虫在任务中
if (assignedLarva != null)
{
@@ -490,6 +597,7 @@ namespace ArachnaeSwarm
MessageTypeDefOf.RejectInput);
return;
}
+
// 获取当前选择的配置
var config = EquipmentIncubatorData?.SelectedConfig;
if (config == null)
@@ -498,6 +606,7 @@ namespace ArachnaeSwarm
MessageTypeDefOf.RejectInput);
return;
}
+
// 检查研究是否完成
if (!config.IsResearchComplete)
{
@@ -513,6 +622,7 @@ namespace ArachnaeSwarm
}
return;
}
+
// 查找幼虫
var larva = FindLarva();
if (larva == null)
@@ -521,21 +631,23 @@ namespace ArachnaeSwarm
MessageTypeDefOf.RejectInput);
return;
}
+
// 给幼虫分配任务
var job = JobMaker.MakeJob(ARA_JobDefOf.ARA_OperateEquipmentIncubator, this);
job.count = 1;
larva.jobs.TryTakeOrderedJob(job, JobTag.MiscWork);
assignedLarva = larva;
+
Messages.Message("ARA_EquipmentIncubator.LarvaCalled".Translate() + " " + "ARA_EquipmentIncubator.ArriveShortly".Translate(),
MessageTypeDefOf.PositiveEvent);
}
- // 幼虫到达
+ // === 幼虫到达 ===
public void NotifyLarvaArrived(Pawn larva)
{
if (larva.def.defName != "ArachnaeBase_Race_Larva")
{
- ArachnaeLog.Debug($"Invalid larva arrived: {larva.def.defName}");
+ Log.Error($"[ARA] 无效的幼虫到达: {larva.def.defName}");
return;
}
@@ -546,42 +658,50 @@ namespace ArachnaeSwarm
MessageTypeDefOf.SilentInput);
}
- // 幼虫完成操作
+ // === 幼虫完成操作 ===
public void NotifyLarvaOperationComplete(Pawn larva)
{
if (larva != assignedLarva)
{
- ArachnaeLog.Debug("Larva operation complete called with wrong larva.");
+ Log.Error("[ARA] 幼虫操作完成调用错误:不是分配的幼虫");
return;
}
+
var config = EquipmentIncubatorData?.SelectedConfig;
if (config == null)
{
- ArachnaeLog.Debug("No incubation config selected when larva completed operation.");
+ Log.Error("[ARA] 幼虫完成操作时没有选择孵化配置");
return;
}
+
incubatingThingDef = config.thingDef;
incubationDuration = config.DaysRequired * 60000f;
incubationProgress = 0f;
isIncubating = true;
qualityTotal = incubationDuration;
qualityProgress = 0f;
+
UpdateQualityMultiplier();
UpdateSpeedMultiplier();
- // === 新增:初始化营养液消耗 ===
+ // 初始化营养液消耗
InitializeNutrientConsumption();
+
assignedLarva = null;
larvaOperateTicksRemaining = 0;
+
Messages.Message("ARA_EquipmentIncubator.IncubationStarted".Translate() + " " + incubatingThingDef.LabelCap + ". " +
"ARA_EquipmentIncubator.ProcessWillComplete".Translate() + " " + config.DaysRequired + " " + "ARA_EquipmentIncubator.DaysBaseTime".Translate(),
MessageTypeDefOf.PositiveEvent);
}
- // 取消孵化
+ // === 取消孵化 ===
private void CancelIncubation()
{
if (!isIncubating) return;
+
+ Log.Message($"[ARA] 取消孵化: {incubatingThingDef?.defName}");
+
isIncubating = false;
incubationProgress = 0f;
incubationDuration = 0f;
@@ -589,57 +709,59 @@ namespace ArachnaeSwarm
qualityProgress = 0f;
qualityTotal = 0f;
- // === 新增:重置营养液消耗 ===
- totalNutrientCost = 0;
- consumedNutrientCount = 0;
- hasStartedConsumption = false;
- consumeProgress = 0f;
- consumedCells.Clear();
+ // 重置营养液消耗状态
+ ResetNutrientConsumptionState();
+
Messages.Message("ARA_EquipmentIncubator.IncubationCancelled".Translate() + " " + "ARA_EquipmentIncubator.ContentsLost".Translate(),
MessageTypeDefOf.NeutralEvent);
}
- // 完成孵化
+ // === 完成孵化 ===
private void CompleteIncubation()
{
if (incubatingThingDef == null) return;
+
+ Log.Message($"[ARA] 完成孵化: {incubatingThingDef.defName}");
+
float finalQualityPercent = QualityPercent;
+
+ // 检查营养液是否满足要求
+ if (totalNutrientCost > 0 && consumedNutrientCount < totalNutrientCost)
+ {
+ Messages.Message("ARA_EquipmentIncubator.IncubationCompleteNutrientDeficient".Translate(incubatingThingDef.LabelCap),
+ this, MessageTypeDefOf.NegativeEvent);
+
+ // 生成物品但应用质量惩罚
+ finalQualityPercent *= Mathf.Lerp(0.3f, 1.0f, NutrientProgress);
+ }
+
// 生成物品
Thing thing = ThingMaker.MakeThing(incubatingThingDef);
-
- // 应用质量影响
ApplyQualityEffects(thing, finalQualityPercent);
+
// 放置物品
var spawnPos = Position;
GenPlace.TryPlaceThing(thing, spawnPos, Map, ThingPlaceMode.Near);
+
// 重置状态
- isIncubating = false;
- incubationProgress = 0f;
- incubationDuration = 0f;
- incubatingThingDef = null;
- qualityProgress = 0f;
- qualityTotal = 0f;
-
- // === 新增:清理营养液消耗状态 ===
- totalNutrientCost = 0;
- consumedNutrientCount = 0;
- hasStartedConsumption = false;
- consumeProgress = 0f;
- consumedCells.Clear();
- // 显示消息
+ ResetIncubationState();
+
+ // 显示完成消息
string qualityText = finalQualityPercent >= 0.9f ? "ARA_EquipmentIncubator.QualityExcellent".Translate() :
finalQualityPercent >= 0.7f ? "ARA_EquipmentIncubator.QualityGood".Translate() :
finalQualityPercent >= 0.5f ? "ARA_EquipmentIncubator.QualityAverage".Translate() :
- finalQualityPercent >= 0.3f ? "ARA_EquipmentIncubator.QualityPoor".Translate() : "ARA_EquipmentIncubator.QualityVeryPoor".Translate();
+ finalQualityPercent >= 0.3f ? "ARA_EquipmentIncubator.QualityPoor".Translate() :
+ "ARA_EquipmentIncubator.QualityVeryPoor".Translate();
+
Messages.Message("ARA_EquipmentIncubator.IncubationComplete".Translate() + " " + thing.LabelCap + " " +
"ARA_EquipmentIncubator.HasEmergedWith".Translate() + " " + qualityText + " " +
"ARA_EquipmentIncubator.Quality".Translate() + " (" + finalQualityPercent.ToStringPercent() + ").",
MessageTypeDefOf.PositiveEvent);
+
Destroy();
}
-
- // 应用质量效果
+ // === 应用质量效果 ===
private void ApplyQualityEffects(Thing thing, float qualityPercent)
{
// 应用质量效果到装备
@@ -662,8 +784,34 @@ namespace ArachnaeSwarm
thing.HitPoints = Mathf.RoundToInt(thing.MaxHitPoints * healthFactor);
}
}
-
- // 获取剩余时间
+
+ // === 重置营养液消耗状态 ===
+ private void ResetNutrientConsumptionState()
+ {
+ totalNutrientCost = 0;
+ consumedNutrientCount = 0;
+ isConsuming = false;
+ consumedCells.Clear();
+ consecutiveFailedConsumptions = 0;
+ nutrientDeficiencyPause = false;
+ lastConsumeCheckTick = -1;
+ }
+
+ // === 重置孵化状态 ===
+ private void ResetIncubationState()
+ {
+ isIncubating = false;
+ incubationProgress = 0f;
+ incubationDuration = 0f;
+ incubatingThingDef = null;
+ qualityProgress = 0f;
+ qualityTotal = 0f;
+
+ // 重置营养液消耗状态
+ ResetNutrientConsumptionState();
+ }
+
+ // === 获取剩余时间 ===
public float GetRemainingTicks()
{
if (!isIncubating || incubationDuration <= incubationProgress) return 0f;
@@ -687,25 +835,29 @@ namespace ArachnaeSwarm
return (remainingTicks % 60000f) / 2500f;
}
- // 检查字符串
+ // === 检查字符串 ===
public override string GetInspectString()
{
var baseString = base.GetInspectString();
var builder = new StringBuilder();
+
if (!string.IsNullOrEmpty(baseString))
{
builder.Append(baseString);
}
+
if (isIncubating && incubatingThingDef != null)
{
float progressPercent = AdjustedProgressPercent;
float daysRemaining = GetRemainingDays();
float hoursRemaining = GetRemainingHours();
+
if (builder.Length > 0) builder.AppendLine();
builder.Append("ARA_EquipmentIncubator.Incubating".Translate() + ": " + incubatingThingDef.LabelCap);
builder.AppendLine();
builder.Append("ARA_EquipmentIncubator.Progress".Translate() + ": " + progressPercent.ToStringPercent());
builder.AppendLine();
+
string timeText = "ARA_EquipmentIncubator.TimeRemaining".Translate() + ": " + daysRemaining.ToString("F1") + " " + "ARA_EquipmentIncubator.Days".Translate();
if (hoursRemaining > 0.1f && daysRemaining < 1f)
{
@@ -716,18 +868,30 @@ namespace ArachnaeSwarm
builder.Append("ARA_EquipmentIncubator.Speed".Translate() + ": " + SpeedMultiplier.ToStringPercent() + ", " +
"ARA_EquipmentIncubator.Quality".Translate() + ": " + QualityMultiplier.ToStringPercent());
- // === 新增:显示营养液消耗信息 ===
+ // 显示营养液消耗信息
if (totalNutrientCost > 0)
{
builder.AppendLine();
builder.Append("ARA_EquipmentIncubator.NutrientConsumption".Translate() + ": " +
consumedNutrientCount + " / " + totalNutrientCost +
" (" + NutrientProgress.ToStringPercent() + ")");
-
- if (!HasEnoughNutrients && IsConsuming)
+
+ if (!HasEnoughNutrients)
{
builder.AppendLine();
- builder.Append("ARA_EquipmentIncubator.ConsumingNutrients".Translate());
+ builder.Append("ARA_EquipmentIncubator.NutrientDeficient".Translate());
+
+ if (nutrientDeficiencyPause)
+ {
+ builder.AppendLine();
+ builder.Append("ARA_EquipmentIncubator.NutrientDeficiencyPaused".Translate());
+ }
+
+ if (consecutiveFailedConsumptions > 0)
+ {
+ builder.AppendLine();
+ builder.Append("ARA_EquipmentIncubator.ConsecutiveFailures".Translate(consecutiveFailedConsumptions));
+ }
}
}
}
@@ -755,7 +919,7 @@ namespace ArachnaeSwarm
builder.Append("ARA_EquipmentIncubator.SpeedMultiplier".Translate() + ": " + SpeedMultiplier.ToStringPercent() + ", " +
"ARA_EquipmentIncubator.QualityMultiplier".Translate() + ": " + QualityMultiplier.ToStringPercent());
- // === 新增:显示预计的营养液需求 ===
+ // 显示预计的营养液需求
var costStat = DefDatabase.GetNamedSilentFail("ARA_IncubationCost");
if (costStat != null)
{
@@ -768,10 +932,11 @@ namespace ArachnaeSwarm
}
}
}
+
return builder.ToString().TrimEndNewlines();
}
- // Gizmos
+ // === Gizmos ===
public override IEnumerable GetGizmos()
{
foreach (var gizmo in base.GetGizmos())
@@ -812,7 +977,7 @@ namespace ArachnaeSwarm
}
}
- // 创建切换目标Gizmo - 现在使用装备的图标
+ // === 创建切换目标Gizmo ===
private Gizmo CreateTargetSwitchGizmo()
{
var configs = EquipmentIncubatorData?.IncubationConfigs;
@@ -830,22 +995,18 @@ namespace ArachnaeSwarm
hotKey = KeyBindingDefOf.Misc2
};
- // 检查研究是否完成,如果未完成则禁用按钮
- //if (selectedConfig != null && !selectedConfig.IsResearchComplete)
- //{
- // if (selectedConfig.requiredResearch != null)
- // {
- // switchButton.Disable("ARA_EquipmentIncubator.ResearchRequired".Translate() + " " + selectedConfig.requiredResearch.LabelCap);
- // }
- // else
- // {
- // switchButton.Disable("ARA_EquipmentIncubator.ResearchNotCompleted".Translate());
- // }
- //}
-
return switchButton;
}
- // 改进的BuildSwitchButtonDescription方法
+
+ private string BuildSwitchButtonLabel(EquipmentIncubationConfig config, CompProperties_EquipmentIncubatorData props)
+ {
+ if (config != null && config.thingDef != null)
+ {
+ return (props?.buttonLabel ?? "ARA_EquipmentIncubator.IncubateLabel").Translate(config.thingDef.LabelCap);
+ }
+ return (props?.buttonLabel ?? "ARA_EquipmentIncubator.IncubateLabel").Translate("None");
+ }
+
private string BuildSwitchButtonDescription(EquipmentIncubationConfig config, CompProperties_EquipmentIncubatorData props)
{
var builder = new StringBuilder();
@@ -888,28 +1049,17 @@ namespace ArachnaeSwarm
return builder.ToString().TrimEndNewlines();
}
- // 获取配置图标 - 现在直接从ThingDef获取
private Texture2D GetConfigIcon(EquipmentIncubationConfig config)
{
if (config == null)
return BaseContent.BadTex;
- // 如果配置中没有缓存图标,尝试直接获取ThingDef的uiIcon
if (config.thingDef?.uiIcon != null)
return config.thingDef.uiIcon;
- // 回退到默认图标
return ContentFinder.Get("UI/Commands/Default", false) ?? BaseContent.BadTex;
}
-
- private string BuildSwitchButtonLabel(EquipmentIncubationConfig config, CompProperties_EquipmentIncubatorData props)
- {
- if (config != null && config.thingDef != null)
- {
- return (props?.buttonLabel ?? "ARA_EquipmentIncubator.IncubateLabel").Translate(config.thingDef.LabelCap);
- }
- return (props?.buttonLabel ?? "ARA_EquipmentIncubator.IncubateLabel").Translate("None");
- }
+
private void ShowSelectionMenu()
{
var configs = EquipmentIncubatorData?.IncubationConfigs;
@@ -930,42 +1080,37 @@ namespace ArachnaeSwarm
string prefix = (i == currentIndex) ? "✓ " : " ";
- // 获取图标
Texture2D icon = config.thingDef?.uiIcon;
- // 创建选项
FloatMenuOption option;
if (icon != null)
{
- // 使用带有图标的构造函数
option = new FloatMenuOption(
prefix + label,
() => SwitchToConfig(index),
icon,
Color.white,
MenuOptionPriority.Default,
- null, // mouseoverGuiAction
- null, // revalidateClickTarget
- 0f, // extraPartWidth
- null, // extraPartOnGUI
- null, // revalidateWorldClickTarget
- true, // playSelectionSound
- 0, // orderInPriority
- HorizontalJustification.Left, // iconJustification
- false // extraPartRightJustified
+ null,
+ null,
+ 0f,
+ null,
+ null,
+ true,
+ 0,
+ HorizontalJustification.Left,
+ false
);
}
else
{
- // 使用普通构造函数
option = new FloatMenuOption(
prefix + label,
() => SwitchToConfig(index)
);
}
- // 设置工具提示
option.tooltip = description;
// 如果研究未完成,禁用选项
@@ -988,6 +1133,7 @@ namespace ArachnaeSwarm
(props?.menuTitle ?? "ARA_EquipmentIncubator.MenuTitle").Translate()));
}
}
+
private void SwitchToConfig(int index)
{
if (EquipmentIncubatorData != null)
@@ -1001,8 +1147,8 @@ namespace ArachnaeSwarm
}
}
}
-
- // 查找幼虫
+
+ // === 查找幼虫 ===
private Pawn FindLarva()
{
var map = Map;
@@ -1033,76 +1179,7 @@ namespace ArachnaeSwarm
return null;
}
- // 每tick更新
- // 修改Tick方法,处理营养液不足时停止孵化的逻辑
- protected override void Tick()
- {
- base.Tick();
-
- if (larvaOperateTicksRemaining > 0)
- {
- larvaOperateTicksRemaining--;
- }
-
- if (isIncubating)
- {
- if (lastMultiplierUpdateTick < 0 || Find.TickManager.TicksGame - lastMultiplierUpdateTick >= MultiplierUpdateInterval)
- {
- UpdateSpeedMultiplier();
- UpdateQualityMultiplier();
- }
-
- float currentSpeed = SpeedMultiplier;
-
- // === 新增:检查是否因营养液不足而停止孵化 ===
- bool shouldProgress = true;
-
- if (Ext.stopIncubationWhenNutrientDeficient &&
- !HasEnoughNutrients &&
- isIncubating &&
- hasStartedConsumption)
- {
- // 检查是否有可用的营养液
- var availableCells = FindNutrientCells();
- if (availableCells.Count == 0 && totalNutrientCost > 0 && consumedNutrientCount < totalNutrientCost)
- {
- shouldProgress = false;
-
- // 显示停止消息(第一次或偶尔显示)
- if (Find.TickManager.TicksGame % 1000 == 0 && Rand.Chance(0.1f))
- {
- Messages.Message("ARA_EquipmentIncubator.IncubationPausedNoNutrients".Translate(incubatingThingDef?.LabelCap ?? "Unknown"),
- this, MessageTypeDefOf.NeutralEvent);
- }
- }
- }
-
- if (shouldProgress)
- {
- incubationProgress += currentSpeed;
- qualityProgress += currentSpeed * QualityMultiplier;
- }
- else
- {
- // 孵化暂停,但仍然需要检查营养液消耗(可能营养液又出现了)
- // 并且仍然应用伤害
- }
-
- // === 新增:检查营养液消耗 ===
- if (lastConsumeCheckTick < 0 || Find.TickManager.TicksGame - lastConsumeCheckTick >= ConsumeCheckInterval)
- {
- lastConsumeCheckTick = Find.TickManager.TicksGame;
- CheckAndConsumeNutrients();
- }
-
- if (incubationProgress >= incubationDuration)
- {
- CompleteIncubation();
- }
- }
- }
-
- // 检查是否在孵化间中
+ // === 检查是否在孵化间中 ===
private bool IsInIncubatorRoom()
{
if (!Ext.requiresIncubatorRoom)
@@ -1114,7 +1191,7 @@ namespace ArachnaeSwarm
return room.Role != null && room.Role.defName == "ARA_Incubator_Room";
}
- // 计算营养液数量
+ // === 计算营养液数量 ===
private int CountNearbyNutrientSolutions()
{
var map = Map;
@@ -1143,7 +1220,7 @@ namespace ArachnaeSwarm
return count;
}
- // 计算房间质量因子
+ // === 计算房间质量因子 ===
private float GetRoomQualityFactor()
{
if (!Ext.useRoomQualityFactor)
@@ -1161,7 +1238,7 @@ namespace ArachnaeSwarm
return 1.0f;
}
- // 计算附近其他卵的数量
+ // === 计算附近其他卵的数量 ===
private int CountNearbyOtherOothecas()
{
var map = Map;
@@ -1206,7 +1283,7 @@ namespace ArachnaeSwarm
return count;
}
- // 更新速度乘数
+ // === 更新速度乘数 ===
private void UpdateSpeedMultiplier()
{
float multiplier = 1.0f;
@@ -1225,7 +1302,7 @@ namespace ArachnaeSwarm
lastMultiplierUpdateTick = Find.TickManager.TicksGame;
}
- // 更新质量乘数
+ // === 更新质量乘数 ===
private void UpdateQualityMultiplier()
{
float multiplier = 1.0f;
@@ -1249,7 +1326,7 @@ namespace ArachnaeSwarm
qualityMultiplier = Mathf.Clamp(multiplier, 0f, 1.0f);
}
- // 保存/加载
+ // === 保存/加载 ===
public override void ExposeData()
{
base.ExposeData();
@@ -1266,12 +1343,13 @@ namespace ArachnaeSwarm
Scribe_Values.Look(ref qualityProgress, "qualityProgress", 0f);
Scribe_Values.Look(ref qualityTotal, "qualityTotal", 0f);
- // === 新增:保存营养液消耗状态 ===
+ // 保存营养液消耗状态
Scribe_Values.Look(ref totalNutrientCost, "totalNutrientCost", 0);
Scribe_Values.Look(ref consumedNutrientCount, "consumedNutrientCount", 0);
Scribe_Values.Look(ref lastConsumeCheckTick, "lastConsumeCheckTick", -1);
- Scribe_Values.Look(ref hasStartedConsumption, "hasStartedConsumption", false);
- Scribe_Values.Look(ref consumeProgress, "consumeProgress", 0f);
+ Scribe_Values.Look(ref isConsuming, "isConsuming", false);
+ Scribe_Values.Look(ref consecutiveFailedConsumptions, "consecutiveFailedConsumptions", 0);
+ Scribe_Values.Look(ref nutrientDeficiencyPause, "nutrientDeficiencyPause", false);
Scribe_Collections.Look(ref consumedCells, "consumedCells", LookMode.Value);
if (Scribe.mode == LoadSaveMode.PostLoadInit)
@@ -1279,6 +1357,12 @@ namespace ArachnaeSwarm
// 确保列表不为null
if (consumedCells == null)
consumedCells = new List();
+
+ // 确保状态一致性
+ if (isIncubating && totalNutrientCost > 0 && !isConsuming)
+ {
+ isConsuming = true; // 加载后恢复消耗状态
+ }
}
}
}
diff --git a/Source/ArachnaeSwarm/Thing_Comps/ARA_AreaaDamage/CompAreaDamage.cs b/Source/ArachnaeSwarm/Thing_Comps/ARA_AreaaDamage/CompAreaDamage.cs
new file mode 100644
index 0000000..a262bb2
--- /dev/null
+++ b/Source/ArachnaeSwarm/Thing_Comps/ARA_AreaaDamage/CompAreaDamage.cs
@@ -0,0 +1,470 @@
+// File: CompAreaDamage.cs
+using System.Collections.Generic;
+using RimWorld;
+using UnityEngine;
+using Verse;
+using Verse.Sound;
+
+namespace ArachnaeSwarm
+{
+ public class CompAreaDamage : ThingComp
+ {
+ private int ticksUntilNextDamage;
+ private bool enabled;
+ private List activeEffecters = new List(); // 正在运行的效果
+ private int effecterCleanupTick = -1; // 效果清理时间点
+
+ public CompProperties_AreaDamage Props => (CompProperties_AreaDamage)props;
+ public bool Enabled => enabled;
+
+ public override void Initialize(CompProperties props)
+ {
+ base.Initialize(props);
+ ticksUntilNextDamage = Props.damageIntervalTicks;
+ enabled = Props.startEnabled;
+ }
+
+ public override void CompTick()
+ {
+ base.CompTick();
+
+ if (!parent.Spawned || !enabled)
+ return;
+
+ // 清理过期的效果
+ if (activeEffecters.Count > 0 && Find.TickManager.TicksGame >= effecterCleanupTick)
+ {
+ CleanupOldEffecters();
+ }
+
+ ticksUntilNextDamage--;
+ if (ticksUntilNextDamage <= 0)
+ {
+ DoAreaDamage();
+ PlayEffecter();
+ ticksUntilNextDamage = Props.damageIntervalTicks;
+ }
+ }
+
+ ///
+ /// 清理旧的效果
+ ///
+ private void CleanupOldEffecters()
+ {
+ for (int i = activeEffecters.Count - 1; i >= 0; i--)
+ {
+ try
+ {
+ activeEffecters[i].Cleanup();
+ }
+ catch { }
+ activeEffecters.RemoveAt(i);
+ }
+ effecterCleanupTick = -1;
+ }
+
+ public void Toggle()
+ {
+ enabled = !enabled;
+ }
+
+ public void SetEnabled(bool newState)
+ {
+ enabled = newState;
+ }
+
+ private void DoAreaDamage()
+ {
+ Map map = parent.Map;
+ if (map == null)
+ return;
+
+ // 获取范围内的所有物体
+ List thingsInRange = new List();
+ foreach (IntVec3 cell in GenRadial.RadialCellsAround(parent.Position, Props.radius, true))
+ {
+ if (!cell.InBounds(map))
+ continue;
+
+ List thingList = cell.GetThingList(map);
+ foreach (Thing thing in thingList)
+ {
+ if (IsValidTargetType(thing) && IsValidTarget(thing) && !thingsInRange.Contains(thing))
+ {
+ thingsInRange.Add(thing);
+ }
+ }
+ }
+
+ // 对每个有效目标造成伤害
+ foreach (Thing target in thingsInRange)
+ {
+ ApplyDamageToTarget(target);
+ }
+ }
+
+ ///
+ /// 播放区域效果
+ ///
+ private void PlayEffecter()
+ {
+ if (Props.areaEffecterDef == null)
+ return;
+
+ Map map = parent.Map;
+ if (map == null)
+ return;
+
+ // 播放音效
+ if (Props.effectSoundDef != null)
+ {
+ Props.effectSoundDef.PlayOneShot(new TargetInfo(parent.Position, map));
+ }
+
+ // 在中心位置播放效果
+ if (Props.effectAtCenter)
+ {
+ PlayEffectAtPosition(parent.Position, map);
+ }
+
+ // 如果需要,在每个目标位置播放效果
+ if (Props.effectAtTargets || Props.multipleEffects)
+ {
+ var targets = GetValidTargetsInRange();
+ foreach (var target in targets)
+ {
+ PlayEffectAtPosition(target.Position, map);
+ }
+ }
+
+ // 设置效果清理时间
+ effecterCleanupTick = Find.TickManager.TicksGame + Props.effecterDurationTicks;
+ }
+
+ ///
+ /// 在指定位置播放效果
+ ///
+ private void PlayEffectAtPosition(IntVec3 position, Map map)
+ {
+ try
+ {
+ Effecter effecter = Props.areaEffecterDef.Spawn();
+ activeEffecters.Add(effecter);
+
+ // 设置效果缩放
+ float scale = Props.effectScaleRange.RandomInRange;
+ // 注意:Effecter的缩放需要特殊的处理方式,这里使用反射或组件
+
+ // 触发效果
+ TargetInfo sourceInfo = new TargetInfo(position, map);
+ effecter.Trigger(sourceInfo, sourceInfo);
+ }
+ catch (System.Exception ex)
+ {
+ Log.Error($"Failed to spawn effecter at {position}: {ex.Message}");
+ }
+ }
+
+ ///
+ /// 检查目标是否为建筑或Pawn
+ ///
+ private bool IsValidTargetType(Thing thing)
+ {
+ // 只针对建筑和Pawn
+ return thing is Building || thing is Pawn;
+ }
+
+ private bool IsValidTarget(Thing thing)
+ {
+ // 首先检查是否为建筑或Pawn(双重检查)
+ if (!(thing is Building || thing is Pawn))
+ {
+ return false;
+ }
+
+ // 检查是否为 Pawn
+ if (thing is Pawn pawn)
+ {
+ return IsValidPawnTarget(pawn);
+ }
+ // 检查是否为建筑
+ else if (thing is Building building)
+ {
+ return IsValidBuildingTarget(building);
+ }
+
+ return false;
+ }
+
+ ///
+ /// 检查Pawn是否有效目标
+ ///
+ private bool IsValidPawnTarget(Pawn pawn)
+ {
+ // 基础检查:死亡或倒地的Pawn不是有效目标
+ if (pawn.Dead || pawn.Downed)
+ return false;
+
+ // 检查是否影响Pawn
+ if (!Props.affectPawns)
+ return false;
+
+ // 检查阵营关系
+ return CheckFactionRelationship(pawn.Faction);
+ }
+
+ ///
+ /// 检查建筑是否有效目标
+ ///
+ private bool IsValidBuildingTarget(Building building)
+ {
+ // 基础检查:建筑必须有生命值且未损坏
+ if (building.def.useHitPoints == false || building.HitPoints <= 0)
+ return false;
+
+ // 检查是否影响建筑
+ if (!Props.affectBuildings)
+ return false;
+
+ // 检查阵营关系
+ return CheckFactionRelationship(building.Faction);
+ }
+
+ ///
+ /// 检查阵营关系
+ ///
+ private bool CheckFactionRelationship(Faction targetFaction)
+ {
+ Faction parentFaction = parent.Faction;
+
+ // 如果忽略所有阵营关系检查,直接返回true
+ if (Props.ignoreFactionRelations)
+ return true;
+
+ // 如果影响所有物体,直接返回true
+ if (Props.affectEverything)
+ return true;
+
+ // 父物体没有派系的情况
+ if (parentFaction == null)
+ {
+ // 目标也没有派系 - 检查是否影响中立
+ if (targetFaction == null)
+ return Props.affectNeutral;
+
+ // 目标是玩家 - 检查是否影响友好
+ if (targetFaction.IsPlayer)
+ return Props.affectFriendly;
+
+ // 目标是非玩家派系 - 检查是否影响敌对
+ return Props.affectHostile;
+ }
+
+ // 父物体有派系的情况
+ if (targetFaction == null)
+ {
+ // 目标没有派系 - 检查是否影响中立
+ return Props.affectNeutral;
+ }
+
+ // 目标与父物体同派系 - 检查是否影响友好
+ if (targetFaction == parentFaction)
+ return Props.affectFriendly;
+
+ // 目标与父物体敌对 - 检查是否影响敌对
+ if (targetFaction.HostileTo(parentFaction))
+ return Props.affectHostile;
+
+ // 其他情况视为中立 - 检查是否影响中立
+ return Props.affectNeutral;
+ }
+
+ private void ApplyDamageToTarget(Thing target)
+ {
+ if (Props.damageDef == null)
+ return;
+
+ // 计算最终伤害量(应用缩放)
+ int finalDamageAmount = CalculateFinalDamage(target);
+
+ // 创建伤害信息
+ DamageInfo damageInfo = new DamageInfo(
+ Props.damageDef,
+ finalDamageAmount,
+ armorPenetration: Props.armorPenetration,
+ instigator: parent,
+ hitPart: null,
+ weapon: null,
+ category: DamageInfo.SourceCategory.ThingOrUnknown
+ );
+
+ // 应用伤害
+ target.TakeDamage(damageInfo);
+
+ // 特殊效果处理
+ HandleSpecialEffects(target, damageInfo);
+ }
+
+ ///
+ /// 计算最终伤害量,应用心灵敏感度缩放和保底伤害
+ ///
+ private int CalculateFinalDamage(Thing target)
+ {
+ float damageFactor = 1.0f;
+
+ // 使用固定缩放值
+ if (Props.useFixedScaling)
+ {
+ damageFactor = Props.fixedDamageFactor;
+ }
+ // 使用心灵敏感度缩放(仅对Pawn有效)
+ else if (Props.scaleWithPsychicSensitivity && target is Pawn pawn)
+ {
+ damageFactor = CalculatePsychicSensitivityFactor(pawn);
+ }
+
+ // 确保伤害倍率在最小和最大范围内
+ damageFactor = Mathf.Clamp(damageFactor, Props.minDamageFactor, Props.maxDamageFactor);
+
+ // 计算最终伤害
+ int finalDamage = Mathf.RoundToInt(Props.damageAmount * damageFactor);
+
+ // 确保至少造成1点伤害
+ return Mathf.Max(1, finalDamage);
+ }
+
+ ///
+ /// 根据目标的心灵敏感度计算伤害倍率
+ ///
+ private float CalculatePsychicSensitivityFactor(Pawn targetPawn)
+ {
+ // 获取心灵敏感度(如果目标没有心灵敏感度,使用默认值0.5)
+ float psychicSensitivity = 0.5f;
+
+ if (targetPawn.health != null && targetPawn.health.capacities != null)
+ {
+ psychicSensitivity = targetPawn.GetStatValue(StatDefOf.PsychicSensitivity);
+ }
+
+ // 返回心灵敏感度作为伤害倍率
+ return psychicSensitivity;
+ }
+
+ ///
+ /// 处理特殊效果(如伤害类型特定的效果)
+ ///
+ private void HandleSpecialEffects(Thing target, DamageInfo damageInfo)
+ {
+ // 显示伤害数值(调试用)
+ if (Props.showDamageNumbers)
+ {
+ MoteMaker.ThrowText(target.DrawPos, target.Map, damageInfo.Amount.ToString());
+ }
+ }
+
+ public override void PostExposeData()
+ {
+ base.PostExposeData();
+ Scribe_Values.Look(ref ticksUntilNextDamage, "ticksUntilNextDamage", Props.damageIntervalTicks);
+ Scribe_Values.Look(ref enabled, "enabled", Props.startEnabled);
+ }
+
+ public override IEnumerable CompGetGizmosExtra()
+ {
+ // 只有拥有者可以操作开关
+ if (parent.Faction != null && parent.Faction != Faction.OfPlayer && !parent.Faction.IsPlayer)
+ yield break;
+
+ // 创建切换开关的 Gizmo
+ Command_Toggle toggleCommand = new Command_Toggle
+ {
+ defaultLabel = Props.toggleLabel.Translate(),
+ defaultDesc = Props.toggleDescription.Translate(),
+ icon = LoadToggleIcon(),
+ isActive = () => enabled,
+ toggleAction = () => Toggle()
+ };
+
+ yield return toggleCommand;
+ }
+
+ private Texture2D LoadToggleIcon()
+ {
+ if (!string.IsNullOrEmpty(Props.toggleIconPath))
+ {
+ return ContentFinder.Get(Props.toggleIconPath, false);
+ }
+
+ // 默认图标
+ return TexCommand.DesirePower;
+ }
+
+ public override string CompInspectStringExtra()
+ {
+ string baseString = base.CompInspectStringExtra();
+
+ // 状态信息
+ string statusText = enabled ?
+ "AreaDamageEnabled".Translate() :
+ "AreaDamageDisabled".Translate();
+
+ if (string.IsNullOrEmpty(baseString))
+ return statusText;
+ else
+ return baseString + "\n" + statusText;
+ }
+
+ ///
+ /// 获取范围内所有有效目标(调试和外部调用用)
+ ///
+ public List GetValidTargetsInRange()
+ {
+ Map map = parent.Map;
+ List validTargets = new List();
+
+ if (map == null || !enabled)
+ return validTargets;
+
+ foreach (IntVec3 cell in GenRadial.RadialCellsAround(parent.Position, Props.radius, true))
+ {
+ if (!cell.InBounds(map))
+ continue;
+
+ List thingList = cell.GetThingList(map);
+ foreach (Thing thing in thingList)
+ {
+ if (IsValidTargetType(thing) && IsValidTarget(thing) && !validTargets.Contains(thing))
+ {
+ validTargets.Add(thing);
+ }
+ }
+ }
+
+ return validTargets;
+ }
+
+ ///
+ /// 手动触发一次区域伤害(用于外部调用)
+ ///
+ public void TriggerAreaDamage()
+ {
+ if (parent.Spawned && enabled)
+ {
+ DoAreaDamage();
+ PlayEffecter();
+ ticksUntilNextDamage = Props.damageIntervalTicks;
+ }
+ }
+
+ ///
+ /// 绘制效果范围(用于调试或显示)
+ ///
+ public void DrawEffectRange()
+ {
+ if (parent.Spawned && enabled)
+ {
+ GenDraw.DrawRadiusRing(parent.Position, Props.radius);
+ }
+ }
+ }
+}
diff --git a/Source/ArachnaeSwarm/Thing_Comps/ARA_AreaaDamage/CompProperties_AreaDamage.cs b/Source/ArachnaeSwarm/Thing_Comps/ARA_AreaaDamage/CompProperties_AreaDamage.cs
new file mode 100644
index 0000000..bb941cb
--- /dev/null
+++ b/Source/ArachnaeSwarm/Thing_Comps/ARA_AreaaDamage/CompProperties_AreaDamage.cs
@@ -0,0 +1,58 @@
+// File: CompProperties_AreaDamage.cs
+using RimWorld;
+using Verse;
+
+namespace ArachnaeSwarm
+{
+ public class CompProperties_AreaDamage : CompProperties
+ {
+ public float radius = 5f; // A: 伤害半径
+ public int damageIntervalTicks = 60; // B: 伤害间隔(帧数)
+ public DamageDef damageDef; // C: 伤害类型
+ public int damageAmount = 10; // 基础伤害量
+ public float armorPenetration = 0f; // 护甲穿透
+
+ // === 新增:Effecter设置 ===
+ public EffecterDef areaEffecterDef = null; // 区域效果定义
+ public int effecterDurationTicks = 30; // 效果持续时间(ticks)
+ public SoundDef effectSoundDef = null; // 效果音效
+ public FloatRange effectScaleRange = new FloatRange(0.8f, 1.2f); // 效果缩放范围
+
+ // 效果播放位置
+ public bool effectAtTargets = false; // 效果是否在目标位置播放
+ public bool effectAtCenter = true; // 效果是否在中心位置播放
+ public bool multipleEffects = false; // 是否对每个目标播放单独效果
+
+ // 伤害缩放设置
+ public bool scaleWithPsychicSensitivity = false; // 是否随心灵敏感度缩放
+ public float minDamageFactor = 0.5f; // 最低伤害倍率(0.0-1.0)
+ public float maxDamageFactor = 2.0f; // 最高伤害倍率
+ public bool useFixedScaling = false; // 是否使用固定缩放值
+ public float fixedDamageFactor = 1.0f; // 固定伤害倍率
+
+ // 目标过滤
+ public bool affectFriendly = false; // 是否影响友方
+ public bool affectNeutral = true; // 是否影响中立
+ public bool affectHostile = true; // 是否影响敌方
+ public bool affectBuildings = true; // 是否影响建筑
+ public bool affectPawns = true; // 是否影响生物
+
+ // 特殊设置
+ public bool ignoreFactionRelations = false; // 忽略所有阵营关系检查(用于无派系实体)
+ public bool affectEverything = false; // 影响范围内所有有生命值的物体
+
+ // 特殊效果
+ public bool showDamageNumbers = false; // 显示伤害数值(调试用)
+
+ // 开关设置
+ public bool startEnabled = true; // 初始是否启用
+ public string toggleLabel = "Toggle Area Damage"; // 开关标签
+ public string toggleDescription = "Enable or disable the area damage effect"; // 开关描述
+ public string toggleIconPath; // 开关图标路径
+
+ public CompProperties_AreaDamage()
+ {
+ compClass = typeof(CompAreaDamage);
+ }
+ }
+}
diff --git a/Source/ArachnaeSwarm/Verbs/PawnBodyWeapon/CompProperties_PawnBodyWeapon.cs b/Source/ArachnaeSwarm/Verbs/PawnBodyWeapon/CompProperties_PawnBodyWeapon.cs
new file mode 100644
index 0000000..6a9cb6d
--- /dev/null
+++ b/Source/ArachnaeSwarm/Verbs/PawnBodyWeapon/CompProperties_PawnBodyWeapon.cs
@@ -0,0 +1,106 @@
+// File: CompPawnBodyWeapon.cs
+using RimWorld;
+using Verse;
+
+namespace ArachnaeSwarm
+{
+ public class CompProperties_PawnBodyWeapon : CompProperties
+ {
+ // 基础伤害设置
+ public float cleaveAngle = 90f;
+ public float cleaveRange = 2.5f;
+ public float cleaveDamageFactor = 0.7f;
+ public bool damageDowned = false;
+ public DamageDef cleaveDamageDef = null;
+
+ // 攻击效果
+ public EffecterDef attackEffecter = null;
+ public EffecterDef cleaveEffecter = null;
+ public SoundDef attackSound = null;
+
+ // 特殊效果
+ public HediffDef applyHediffOnHit = null; // 命中时附加的效果
+ public float hediffSeverity = 0.1f;
+ public float hediffChance = 1.0f;
+
+ // 条件触发
+ public bool requiresMeleeSkill = false; // 是否需要近战技能
+ public int minMeleeSkillLevel = 0;
+ public bool onlyWhenDrafted = false; // 是否只在征召时生效
+
+ public CompProperties_PawnBodyWeapon()
+ {
+ this.compClass = typeof(CompPawnBodyWeapon);
+ }
+ }
+
+ public class CompPawnBodyWeapon : ThingComp
+ {
+ public CompProperties_PawnBodyWeapon Props => (CompProperties_PawnBodyWeapon)this.props;
+
+ private Pawn Pawn => this.parent as Pawn;
+
+ // 检查是否可以使用身体武器
+ public bool CanUseBodyWeapon(Verb verb = null)
+ {
+ if (Pawn == null || Pawn.Dead || Pawn.Downed)
+ return false;
+
+ // 检查是否被征召
+ if (Props.onlyWhenDrafted && !Pawn.Drafted)
+ return false;
+
+ // 检查近战技能
+ if (Props.requiresMeleeSkill && Pawn.skills != null)
+ {
+ var meleeSkill = Pawn.skills.GetSkill(SkillDefOf.Melee);
+ if (meleeSkill.Level < Props.minMeleeSkillLevel)
+ return false;
+ }
+
+ return true;
+ }
+
+ // 获取实际伤害系数(可以基于技能、状态等调整)
+ public float GetDamageFactor(Verb verb = null)
+ {
+ float factor = Props.cleaveDamageFactor;
+
+ // 如果有近战技能加成
+ if (Pawn.skills != null)
+ {
+ var meleeSkill = Pawn.skills.GetSkill(SkillDefOf.Melee);
+ factor *= (1.0f + (meleeSkill.Level * 0.02f)); // 每级增加2%伤害
+ }
+
+ // 检查是否有增强状态
+ if (Pawn.health?.hediffSet != null)
+ {
+ // 这里可以添加基于hediff的伤害加成
+ // 例如:狂暴状态增加伤害
+ }
+
+ return factor;
+ }
+
+ // 获取攻击范围
+ public float GetCleaveRange(Verb verb = null)
+ {
+ float range = Props.cleaveRange;
+
+ // 基于体型调整范围
+ if (Pawn.BodySize > 1.0f)
+ {
+ range *= Pawn.BodySize * 0.5f;
+ }
+
+ return range;
+ }
+
+ // 获取攻击角度
+ public float GetCleaveAngle(Verb verb = null)
+ {
+ return Props.cleaveAngle;
+ }
+ }
+}
diff --git a/Source/ArachnaeSwarm/Verbs/PawnBodyWeapon/Verb_MeleeAttack_BodyWeapon.cs b/Source/ArachnaeSwarm/Verbs/PawnBodyWeapon/Verb_MeleeAttack_BodyWeapon.cs
new file mode 100644
index 0000000..1dae06c
--- /dev/null
+++ b/Source/ArachnaeSwarm/Verbs/PawnBodyWeapon/Verb_MeleeAttack_BodyWeapon.cs
@@ -0,0 +1,226 @@
+// File: Verb_MeleeAttack_BodyWeapon.cs
+using RimWorld;
+using Verse;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+namespace ArachnaeSwarm
+{
+ public class Verb_MeleeAttack_BodyWeapon : Verb_MeleeAttack
+ {
+ private CompPawnBodyWeapon Comp
+ {
+ get
+ {
+ return this.CasterPawn?.GetComp();
+ }
+ }
+
+ protected override DamageWorker.DamageResult ApplyMeleeDamageToTarget(LocalTargetInfo target)
+ {
+ DamageWorker.DamageResult result = new DamageWorker.DamageResult();
+
+ // 播放攻击特效
+ PlayAttackEffecter(target);
+
+ // 1. 对主目标造成伤害
+ DamageInfo dinfo = new DamageInfo(
+ this.verbProps.meleeDamageDef,
+ this.verbProps.AdjustedMeleeDamageAmount(this, this.CasterPawn),
+ this.verbProps.AdjustedArmorPenetration(this, this.CasterPawn),
+ -1f,
+ this.CasterPawn,
+ null,
+ null // 身体武器没有装备
+ );
+ dinfo.SetTool(this.tool);
+
+ if (target.HasThing)
+ {
+ result = target.Thing.TakeDamage(dinfo);
+
+ // 附加特殊效果
+ ApplySpecialEffects(target.Thing);
+ }
+
+ // 2. 执行溅射伤害
+ Pawn casterPawn = this.CasterPawn;
+ if (casterPawn == null || !target.HasThing)
+ {
+ return result;
+ }
+
+ Thing mainTarget = target.Thing;
+ Vector3 attackDirection = (mainTarget.Position - casterPawn.Position).ToVector3().normalized;
+ bool mainTargetIsHostile = mainTarget.HostileTo(casterPawn);
+
+ // 获取溅射参数
+ float cleaveRange = this.Comp.GetCleaveRange(this);
+ float cleaveAngle = this.Comp.GetCleaveAngle(this);
+ float damageFactor = this.Comp.GetDamageFactor(this);
+
+ // 查找施法者周围的潜在目标
+ IEnumerable potentialTargets = GenRadial.RadialDistinctThingsAround(
+ casterPawn.Position,
+ casterPawn.Map,
+ cleaveRange,
+ useCenter: true
+ );
+
+ foreach (Thing thing in potentialTargets)
+ {
+ // 跳过主目标、自己和非生物
+ if (thing == mainTarget || thing == casterPawn || !(thing is Pawn secondaryTargetPawn))
+ {
+ continue;
+ }
+
+ // 根据XML配置决定是否跳过倒地的生物
+ if (!this.Comp.Props.damageDowned && secondaryTargetPawn.Downed)
+ {
+ continue;
+ }
+
+ // 智能溅射:次要目标的敌对状态必须与主目标一致
+ if (secondaryTargetPawn.HostileTo(casterPawn) != mainTargetIsHostile)
+ {
+ continue;
+ }
+
+ // 检查目标是否在攻击扇形范围内
+ Vector3 directionToTarget = (thing.Position - casterPawn.Position).ToVector3().normalized;
+ float angle = Vector3.Angle(attackDirection, directionToTarget);
+
+ if (angle <= cleaveAngle / 2f)
+ {
+ // 对次要目标造成伤害
+ DamageInfo cleaveDinfo = new DamageInfo(
+ this.verbProps.meleeDamageDef,
+ this.verbProps.AdjustedMeleeDamageAmount(this, casterPawn) * damageFactor,
+ this.verbProps.AdjustedArmorPenetration(this, casterPawn) * damageFactor,
+ -1f,
+ casterPawn,
+ null,
+ null // 身体武器没有装备
+ );
+ cleaveDinfo.SetTool(this.tool);
+ secondaryTargetPawn.TakeDamage(cleaveDinfo);
+
+ // 附加特殊效果
+ ApplySpecialEffects(secondaryTargetPawn);
+ }
+ }
+ return result;
+ }
+
+ ///
+ /// 播放攻击特效
+ ///
+ private void PlayAttackEffecter(LocalTargetInfo target)
+ {
+ if (this.CasterPawn == null || this.CasterPawn.Map == null || this.Comp == null)
+ return;
+
+ // 播放攻击特效
+ if (this.Comp.Props.attackEffecter != null)
+ {
+ Effecter attackEffect = this.Comp.Props.attackEffecter.Spawn();
+ attackEffect.Trigger(new TargetInfo(this.CasterPawn.Position, this.CasterPawn.Map), target.ToTargetInfo(this.CasterPawn.Map));
+ attackEffect.Cleanup();
+ }
+
+ // 播放溅射特效
+ if (this.Comp.Props.cleaveEffecter != null && target.HasThing)
+ {
+ PlayCleaveEffecter(target.Thing);
+ }
+ }
+
+ ///
+ /// 播放溅射特效
+ ///
+ private void PlayCleaveEffecter(Thing mainTarget)
+ {
+ if (this.CasterPawn == null || this.CasterPawn.Map == null || mainTarget == null || this.Comp == null)
+ return;
+
+ Pawn casterPawn = this.CasterPawn;
+
+ // 播放主要的溅射特效
+ Effecter cleaveEffect = this.Comp.Props.cleaveEffecter.Spawn();
+ cleaveEffect.Trigger(new TargetInfo(casterPawn.Position, casterPawn.Map), new TargetInfo(mainTarget.Position, casterPawn.Map));
+ cleaveEffect.Cleanup();
+ }
+
+ ///
+ /// 附加特殊效果
+ ///
+ private void ApplySpecialEffects(Thing target)
+ {
+ if (this.Comp == null || this.Comp.Props.applyHediffOnHit == null)
+ return;
+
+ if (target is Pawn targetPawn)
+ {
+ if (Rand.Chance(this.Comp.Props.hediffChance))
+ {
+ Hediff hediff = HediffMaker.MakeHediff(this.Comp.Props.applyHediffOnHit, targetPawn);
+ hediff.Severity = this.Comp.Props.hediffSeverity;
+ targetPawn.health.AddHediff(hediff);
+ }
+ }
+ }
+
+ public override void DrawHighlight(LocalTargetInfo target)
+ {
+ base.DrawHighlight(target);
+
+ if (target.IsValid && CasterPawn != null && this.Comp != null && this.Comp.CanUseBodyWeapon(this))
+ {
+ GenDraw.DrawFieldEdges(GetCleaveCells(target.Cell));
+ }
+ }
+
+ private List GetCleaveCells(IntVec3 center)
+ {
+ if (this.Comp == null || !this.Comp.CanUseBodyWeapon(this))
+ {
+ return new List();
+ }
+
+ IntVec3 casterPos = this.CasterPawn.Position;
+ Map map = this.CasterPawn.Map;
+ Vector3 attackDirection = (center - casterPos).ToVector3().normalized;
+
+ float cleaveRange = this.Comp.GetCleaveRange(this);
+ float cleaveAngle = this.Comp.GetCleaveAngle(this);
+
+ return GenRadial.RadialCellsAround(casterPos, cleaveRange, useCenter: true)
+ .Where(cell => {
+ if (!cell.InBounds(map)) return false;
+ Vector3 directionToCell = (cell - casterPos).ToVector3();
+ if (directionToCell.sqrMagnitude <= 0.001f) return false; // 排除施法者自身位置
+ return Vector3.Angle(attackDirection, directionToCell) <= cleaveAngle / 2f;
+ }).ToList();
+ }
+
+ // 重写此方法以在攻击前检查身体武器状态
+ protected override bool TryCastShot()
+ {
+ if (this.Comp != null && !this.Comp.CanUseBodyWeapon(this))
+ {
+ // 不能使用身体武器,使用普通攻击
+ if (this.CasterPawn != null)
+ {
+ // 播放效果(可选)
+ Messages.Message("ARA_BodyWeapon_CannotUse".Translate(this.CasterPawn.LabelShortCap),
+ MessageTypeDefOf.NeutralEvent);
+ }
+ return base.TryCastShot();
+ }
+
+ return base.TryCastShot();
+ }
+ }
+}