diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index 54bcdbf..77027aa 100644
Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ
diff --git a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml
index be69e9f..92df577 100644
--- a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml
+++ b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml
@@ -1555,7 +1555,7 @@
Verb_CastAbility
24
0
- Heatspikes_Shot
+ SpitterSpit
Heatspikes_Tail
True
diff --git a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
index 31c3503..b7b01e3 100644
--- a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
+++ b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
@@ -1299,7 +1299,7 @@
ARA_Skyraider_Hivelord
- 这只阿拉克涅空天种已经获得拔耀,可以孵化大量的天巢种辅虫,这些灵敏的辅虫会后散开四处狩猎目标。
+ 这只阿拉克涅空天种已经获得拔耀,可以投掷天巢种辅虫,这些灵敏的辅虫会后散开四处狩猎目标。
HediffWithComps
(0.6, 0.4, 0.8)
false
@@ -1347,12 +1347,12 @@
ArachnaeBase_Race_Skyhive
- 8
+ 4
200
-
+
@@ -1383,7 +1383,7 @@
ARA_Skyraider_Empthrower
- 使空天种发生内驱性进化,以降低机动力和失去高空机动能力为代价,使其获得孵化磁暴种辅虫的能力——这种辅虫会以自杀式袭击的方式释放出EMP,以对抗机械族。\n\n该进化方向提供3只阿拉克涅电磁种辅虫。
+ 使空天种发生内驱性进化,以降低机动力和失去高空机动能力为代价,使其获得投掷磁暴种辅虫的能力——这种辅虫会以自杀式袭击的方式释放出EMP,以对抗机械族。\n\n该进化方向不提供阿拉克涅辅虫。
ArachnaeSwarm/UI/Abilities/ARA_Skyraider_Empthrower
1800
false
@@ -1422,7 +1422,7 @@
ARA_Skyraider_Empthrower
- 这只阿拉克涅空天种已经获得拔耀,会孵化磁暴种辅虫,这些辅虫以自杀性袭击释放EMP对抗敌方机械族。
+ 这只阿拉克涅空天种已经获得拔耀,会投掷磁暴种辅虫,这些辅虫以自杀性袭击释放EMP对抗敌方机械族。
HediffWithComps
(0.6, 0.4, 0.8)
false
@@ -1466,16 +1466,7 @@
-
-
-
- ArachnaeBase_Race_Empsuicider
- 3
- 200
-
-
-
-
+
diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Psy.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Psy.xml
index 5b0078f..56b63ca 100644
--- a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Psy.xml
+++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Psy.xml
@@ -152,6 +152,7 @@
ArachnaeBase_Race_Acidcut
ArachnaeBase_Race_Baneling
ArachnaeBase_Race_Skyhive
+ ArachnaeBase_Race_Locust
ArachnaeNode_Race_MimicNematode
diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml
index 13ffd01..6ec54eb 100644
--- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml
+++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml
@@ -83,14 +83,6 @@
-
- ARA_Cycle_Suppression_Hediff
- ARA_LifespanHediff
- 12
- 寿命
- 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。
- true
-
ARA_TemperatureRegulation
@@ -174,6 +166,14 @@
+
+ ARA_Cycle_Suppression_Hediff
+ ARA_LifespanHediff
+ 12
+ 寿命
+ 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。
+ true
+
@@ -246,13 +246,21 @@
Cut
- 7
+ 4
2.8
HeadAttackTool
true
+
+ ARA_Cycle_Suppression_Hediff
+ ARA_LifespanHediff
+ 12
+ 寿命
+ 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。
+ true
+
@@ -323,6 +331,14 @@
+
+ ARA_Cycle_Suppression_Hediff
+ ARA_LifespanHediff
+ 12
+ 寿命
+ 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。
+ true
+
false
Crafting
@@ -411,6 +427,14 @@
+
+ ARA_Cycle_Suppression_Hediff
+ ARA_LifespanHediff
+ 12
+ 寿命
+ 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。
+ true
+
@@ -469,6 +493,14 @@
6.6
+
+ ARA_Cycle_Suppression_Hediff
+ ARA_LifespanHediff
+ 30
+ 寿命
+ 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。
+ true
+
@@ -538,6 +570,14 @@
6.6
+
+ ARA_Cycle_Suppression_Hediff
+ ARA_LifespanHediff
+ 0.5
+ 寿命
+ 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。
+ true
+
@@ -625,6 +665,14 @@
+
+ ARA_Cycle_Suppression_Hediff
+ ARA_LifespanHediff
+ 12
+ 寿命
+ 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。
+ true
+
Always
@@ -706,6 +754,14 @@
+
+ ARA_Cycle_Suppression_Hediff
+ ARA_LifespanHediff
+ 15
+ 寿命
+ 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。
+ true
+
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 0111707..df45cc3 100644
--- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBeastSwarm.xml
+++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBeastSwarm.xml
@@ -9,7 +9,7 @@
5
- 2500
+ 100
ArachnaeSlayer_Body
ARA_Insect_Beast
diff --git a/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml b/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml
index ee3927b..46adc40 100644
--- a/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml
+++ b/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml
@@ -1,6 +1,5 @@
-
ARA_Insect_Beast
@@ -1010,9 +1009,6 @@
MentalStateCritical
-
-
-
@@ -1110,9 +1106,11 @@
+
+
- 100
- 100
+ 30
+ 35
@@ -1372,9 +1370,6 @@
MentalStateCritical
-
-
-
@@ -1472,9 +1467,11 @@
+
+
- 100
- 100
+ 30
+ 35
@@ -2265,9 +2262,6 @@
MentalStateCritical
-
-
-
@@ -2303,8 +2297,8 @@
- 100
- 100
+ 30
+ 35
@@ -2365,9 +2359,11 @@
+
+
- 100
- 100
+ 30
+ 35
@@ -2540,9 +2536,6 @@
MentalStateCritical
-
-
-
@@ -2640,9 +2633,11 @@
+
+
- 100
- 100
+ 30
+ 35
@@ -2815,11 +2810,6 @@
MentalStateCritical
-
-
- 2.9
-
-
diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo
index e9c2625..f110a70 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 320b115..6f3bf4c 100644
--- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
+++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
@@ -3,35 +3,55 @@
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\ara_configurablemutant\\necrotictransformationutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_configurablemutant\\necrotictransformationutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\comprefuelablenutrition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\comprefuelablenutrition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\ara_productstorage\\compproperties_productstorage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_productstorage\\compproperties_productstorage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_ootheca\\gizmo_queuedincubationprogress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_queuedincubationprogress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\ara_compinteractiveproducer\\compinteractiveproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_compinteractiveproducer\\compinteractiveproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_ootheca\\gizmo_pawnprogressbar.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\compabilityeffect_transformcorpse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\compabilityeffect_transformcorpse.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_followproducer\\thinknode_conditionalnotproducedbymechcarrier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_followproducer\\thinknode_conditionalnotproducedbymechcarrier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\gizmo_pawnprogressbar.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_pawnprogressbar.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_ootheca\\gizmo_neutronflux.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\gizmo_neutronflux.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_neutronflux.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\hediffs\\ara_configurablemutant\\necrotictransformationutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_configurablemutant\\necrotictransformationutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\gizmo_queuedincubationprogress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_queuedincubationprogress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
@@ -76,9 +96,91 @@
"DockedWidth": 200,
"SelectedChildIndex": 6,
"Children": [
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
+ },
{
"$type": "Document",
"DocumentIndex": 1,
+ "Title": "CompRefuelableNutrition.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\CompRefuelableNutrition.cs",
+ "RelativeDocumentMoniker": "Building_Comps\\CompRefuelableNutrition.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\CompRefuelableNutrition.cs",
+ "RelativeToolTip": "Building_Comps\\CompRefuelableNutrition.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAyAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-27T03:51:40.77Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "CompProperties_ProductStorage.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_ProductStorage\\CompProperties_ProductStorage.cs",
+ "RelativeDocumentMoniker": "Building_Comps\\ARA_ProductStorage\\CompProperties_ProductStorage.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_ProductStorage\\CompProperties_ProductStorage.cs",
+ "RelativeToolTip": "Building_Comps\\ARA_ProductStorage\\CompProperties_ProductStorage.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAABKAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-27T03:51:33.86Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "Title": "CompInteractiveProducer.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs",
+ "RelativeDocumentMoniker": "Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs",
+ "RelativeToolTip": "Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs",
+ "ViewState": "AgIAAFICAAAAAAAAAAAAAFICAAAtAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-27T03:51:32.573Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 4,
+ "Title": "CompAbilityEffect_TransformCorpse.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_TransformCorpse.cs",
+ "RelativeDocumentMoniker": "Abilities\\CompAbilityEffect_TransformCorpse.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_TransformCorpse.cs",
+ "RelativeToolTip": "Abilities\\CompAbilityEffect_TransformCorpse.cs",
+ "ViewState": "AgIAAFQAAAAAAAAAAAAuwGkAAABdAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-27T03:51:29.604Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 5,
+ "Title": "ThinkNode_ConditionalNotProducedByMechCarrier.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs",
+ "RelativeDocumentMoniker": "Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs",
+ "RelativeToolTip": "Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-27T00:51:15.459Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "Building_Ootheca.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs",
+ "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Building_Ootheca.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs",
+ "RelativeToolTip": "Buildings\\Building_Ootheca\\Building_Ootheca.cs",
+ "ViewState": "AgIAABwCAAAAAAAAAAAvwDICAAAJAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-01-23T08:31:14.555Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 8,
"Title": "NecroticTransformationUtility.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ConfigurableMutant\\NecroticTransformationUtility.cs",
"RelativeDocumentMoniker": "Hediffs\\ARA_ConfigurableMutant\\NecroticTransformationUtility.cs",
@@ -86,12 +188,11 @@
"RelativeToolTip": "Hediffs\\ARA_ConfigurableMutant\\NecroticTransformationUtility.cs",
"ViewState": "AgIAAA8AAAAAAAAAAAAtwCIAAAAcAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2026-01-26T08:44:42.184Z",
- "EditorCaption": ""
+ "WhenOpened": "2026-01-26T08:44:42.184Z"
},
{
"$type": "Document",
- "DocumentIndex": 2,
+ "DocumentIndex": 9,
"Title": "CompNodeSwarmLifetime.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
@@ -99,12 +200,11 @@
"RelativeToolTip": "Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
"ViewState": "AgIAADYAAAAAAAAAAAAtwEoAAAAbAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2026-01-26T08:44:35.266Z",
- "EditorCaption": ""
+ "WhenOpened": "2026-01-26T08:44:35.266Z"
},
{
"$type": "Document",
- "DocumentIndex": 3,
+ "DocumentIndex": 10,
"Title": "Gizmo_QueuedIncubationProgress.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_QueuedIncubationProgress.cs",
"RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Gizmo_QueuedIncubationProgress.cs",
@@ -112,29 +212,24 @@
"RelativeToolTip": "Buildings\\Building_Ootheca\\Gizmo_QueuedIncubationProgress.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAuAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2026-01-26T08:11:04.23Z",
- "EditorCaption": ""
- },
- {
- "$type": "Bookmark",
- "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
+ "WhenOpened": "2026-01-26T08:11:04.23Z"
},
{
"$type": "Document",
- "DocumentIndex": 4,
+ "DocumentIndex": 6,
"Title": "Gizmo_PawnProgressBar.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs",
"RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs",
"RelativeToolTip": "Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAmAAAAAAAAAA==",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAFAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-26T08:12:03.772Z",
"EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 5,
+ "DocumentIndex": 7,
"Title": "Gizmo_NeutronFlux.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_NeutronFlux.cs",
"RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Gizmo_NeutronFlux.cs",
@@ -147,20 +242,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 0,
- "Title": "Building_Ootheca.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs",
- "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Building_Ootheca.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs",
- "RelativeToolTip": "Buildings\\Building_Ootheca\\Building_Ootheca.cs",
- "ViewState": "AgIAABEBAAAAAAAAAAAswCoBAAAkAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2026-01-23T08:31:14.555Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 6,
+ "DocumentIndex": 11,
"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",
@@ -168,12 +250,11 @@
"RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs",
"ViewState": "AgIAAEIBAAAAAAAAAAAAAEMBAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2026-01-26T07:52:41.869Z",
- "EditorCaption": ""
+ "WhenOpened": "2026-01-26T07:52:41.869Z"
},
{
"$type": "Document",
- "DocumentIndex": 7,
+ "DocumentIndex": 12,
"Title": "Building_CorpseVat.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
"RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
@@ -181,12 +262,11 @@
"RelativeToolTip": "Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAASAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2026-01-23T10:24:46.264Z",
- "EditorCaption": ""
+ "WhenOpened": "2026-01-23T10:24:46.264Z"
},
{
"$type": "Document",
- "DocumentIndex": 9,
+ "DocumentIndex": 14,
"Title": "JobGiver_Grower.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\JobGiver_Grower.cs",
"RelativeDocumentMoniker": "Jobs\\JobDriver_Plant\\JobGiver_Grower.cs",
@@ -198,7 +278,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 11,
+ "DocumentIndex": 16,
"Title": "Hediff_Possession.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\Hediff_Possession.cs",
"RelativeDocumentMoniker": "Abilities\\ARA_HuggingFace\\Hediff_Possession.cs",
@@ -210,7 +290,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 12,
+ "DocumentIndex": 17,
"Title": "CompAbilityEffect_Possess.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs",
"RelativeDocumentMoniker": "Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs",
@@ -222,7 +302,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 8,
+ "DocumentIndex": 13,
"Title": "CorpseVatExtension.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
"RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
@@ -234,7 +314,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 13,
+ "DocumentIndex": 18,
"Title": "CompDelayedTerrainSpawn.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"RelativeDocumentMoniker": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
@@ -246,7 +326,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 14,
+ "DocumentIndex": 19,
"Title": "CompProperties_HediffTerrainSpawn.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs",
"RelativeDocumentMoniker": "Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs",
@@ -258,7 +338,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 10,
+ "DocumentIndex": 15,
"Title": "JobGiver_Cleaner.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs",
"RelativeDocumentMoniker": "Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs",
@@ -270,7 +350,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 15,
+ "DocumentIndex": 20,
"Title": "CompHediffTerrainSpawn.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
"RelativeDocumentMoniker": "Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs
index 13521dc..477b8ae 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs
@@ -561,6 +561,7 @@ namespace ArachnaeSwarm
}
public override IEnumerable GetGizmos()
{
+ base.GetGizmos();
// 首先获取选中的同类建筑
var selectedOothecas = GetSelectedOothecas();
bool isMultiSelect = selectedOothecas.Count > 1;
diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs
index 5444d56..08c46be 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs
@@ -1,7 +1,5 @@
-// 修改 Gizmo_PawnProgressBar.cs
using RimWorld;
using System.Collections.Generic;
-using System.Linq;
using UnityEngine;
using Verse;
@@ -9,7 +7,6 @@ namespace ArachnaeSwarm
{
///
/// 统一的双向进度条 Gizmo - 用于所有孵化建筑/组件
- /// 支持多选显示
///
[StaticConstructorOnStartup]
public class Gizmo_PawnProgressBar : Gizmo
@@ -25,219 +22,16 @@ namespace ArachnaeSwarm
private static readonly Texture2D EmptyBarTex = SolidColorMaterials.NewSolidColorTexture(new Color(0.1f, 0.1f, 0.1f, 0.5f));
private readonly IOrderGizmoProvider provider;
- private readonly Thing parentThing;
-
- // 多选相关
- private bool isMultiSelect = false;
- private List multiSelectProviders = new List();
public Gizmo_PawnProgressBar(IOrderGizmoProvider provider)
{
this.provider = provider;
- this.parentThing = provider as Thing;
this.Order = -140f;
-
- // 检查是否是多个建筑被选中
- UpdateMultiSelectInfo();
- }
-
- private void UpdateMultiSelectInfo()
- {
- if (Find.Selector == null || parentThing == null)
- return;
-
- // 获取选中的同类建筑
- var selectedThings = Find.Selector.SelectedObjects
- .Where(obj => obj is Thing thing &&
- thing.def == parentThing.def &&
- thing.Faction == Faction.OfPlayer)
- .ToList();
-
- isMultiSelect = selectedThings.Count > 1;
-
- if (isMultiSelect)
- {
- multiSelectProviders.Clear();
- foreach (var thing in selectedThings)
- {
- if (thing is IOrderGizmoProvider provider)
- {
- multiSelectProviders.Add(provider);
- }
- }
- }
}
public override float GetWidth(float maxWidth) => Mathf.Min(Width, maxWidth);
public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth, GizmoRenderParms parms)
- {
- // 更新多选信息
- UpdateMultiSelectInfo();
-
- if (isMultiSelect)
- {
- return DrawMultiSelectGizmo(topLeft, maxWidth);
- }
- else
- {
- return DrawSingleSelectGizmo(topLeft, maxWidth);
- }
- }
-
- private GizmoResult DrawMultiSelectGizmo(Vector2 topLeft, float maxWidth)
- {
- // 计算显示多少个建筑的进度
- int displayCount = Mathf.Min(multiSelectProviders.Count, 4); // 最多显示4个
-
- // 计算高度
- float contentHeight = Padding * 2 + Text.LineHeight + Spacing; // 标题
- contentHeight += displayCount * (BarHeight + Spacing + 14f); // 每个建筑的进度条
- float totalHeight = Mathf.Max(75f, contentHeight);
-
- Rect rect = new Rect(topLeft.x, topLeft.y - (totalHeight - 75f), GetWidth(maxWidth), totalHeight);
- Widgets.DrawWindowBackground(rect);
-
- Rect innerRect = rect.ContractedBy(Padding);
- float curY = innerRect.y;
-
- // === 多选标题区域 ===
- Text.Font = GameFont.Small;
- Rect titleRect = new Rect(innerRect.x, curY, innerRect.width, Text.LineHeight);
-
- string title = "ARA_Gizmo_MultiSelectTitle".Translate(multiSelectProviders.Count);
- GUI.color = new Color(0.7f, 0.9f, 1f);
- Widgets.Label(titleRect, title);
- GUI.color = Color.white;
-
- curY += Text.LineHeight + Spacing;
-
- // === 显示每个建筑的进度 ===
- for (int i = 0; i < displayCount; i++)
- {
- var currentProvider = multiSelectProviders[i];
- var orders = currentProvider.GetOrdersForGizmo();
-
- if (orders.Count > 0)
- {
- // 建筑标签
- Text.Font = GameFont.Tiny;
- Rect buildingLabelRect = new Rect(innerRect.x, curY, innerRect.width, 12f);
- string buildingLabel = $"{i+1}. {(currentProvider as Thing)?.LabelCap ?? "Unknown"}";
- Widgets.Label(buildingLabelRect, buildingLabel);
- curY += 12f;
-
- // 显示第一个订单
- var order = orders[0];
- Rect orderRect = new Rect(innerRect.x, curY, innerRect.width, BarHeight + 14f);
- DrawMultiSelectOrderItem(orderRect, order, currentProvider, i);
- curY += BarHeight + 14f + Spacing;
- }
- else
- {
- // 无订单状态
- Text.Font = GameFont.Tiny;
- Rect emptyRect = new Rect(innerRect.x, curY, innerRect.width, 20f);
- GUI.color = new Color(0.7f, 0.7f, 0.7f);
- Widgets.Label(emptyRect, "ARA_Status_Empty".Translate());
- GUI.color = Color.white;
- curY += 20f + Spacing;
- }
-
- // 添加分隔线
- if (i < displayCount - 1)
- {
- Widgets.DrawLineHorizontal(innerRect.x, curY - Spacing/2, innerRect.width);
- curY += 2f;
- }
- }
-
- // 如果有更多建筑,显示提示
- if (multiSelectProviders.Count > displayCount)
- {
- Text.Font = GameFont.Tiny;
- Rect moreRect = new Rect(innerRect.x, curY, innerRect.width, 14f);
- GUI.color = new Color(0.5f, 0.5f, 0.5f);
- Widgets.Label(moreRect, "ARA_Gizmo_MoreBuildings".Translate(multiSelectProviders.Count - displayCount));
- GUI.color = Color.white;
- }
-
- Text.Font = GameFont.Small;
- return new GizmoResult(GizmoState.Clear);
- }
-
- private void DrawMultiSelectOrderItem(Rect rect, PawnOrderDisplayInfo order, IOrderGizmoProvider provider, int index)
- {
- float labelHeight = 14f;
-
- // 标签行
- Text.Font = GameFont.Tiny;
- Rect labelRect = new Rect(rect.x, rect.y, rect.width - 20f, labelHeight);
-
- GUI.color = Color.white;
- Widgets.Label(labelRect, $"{order.label} {order.progress.ToStringPercent("F0")}");
-
- // 取消按钮(针对单个建筑)
- Rect cancelRect = new Rect(rect.xMax - 16f, rect.y, 16f, labelHeight);
- if (Widgets.ButtonText(cancelRect, "×", false))
- {
- provider.RemoveOrderByIndex(0);
- }
-
- // 进度条
- Rect barRect = new Rect(rect.x, rect.y + labelHeight, rect.width, BarHeight);
-
- if (order.status == OrderStatus.Incubating)
- {
- // 双向进度条:品质向左,进度向右
- float midX = barRect.x + barRect.width / 2f;
- float halfWidth = barRect.width / 2f;
-
- // 背景
- GUI.DrawTexture(barRect, EmptyBarTex);
-
- // 品质进度(向左)
- float qualityWidth = halfWidth * order.qualityProgress;
- Rect qualityRect = new Rect(midX - qualityWidth, barRect.y, qualityWidth, barRect.height);
- GUI.DrawTexture(qualityRect, QualityBarTex);
-
- // 生产进度(向右)
- float progressWidth = halfWidth * order.progress;
- Rect progressRect = new Rect(midX, barRect.y, progressWidth, barRect.height);
- GUI.DrawTexture(progressRect, ProgressBarTex);
-
- // 中线
- Widgets.DrawLineVertical(midX, barRect.y, barRect.height);
-
- // 百分比文字
- Text.Font = GameFont.Tiny;
- Text.Anchor = TextAnchor.MiddleLeft;
- GUI.color = new Color(0.8f, 0.9f, 1f);
- Widgets.Label(new Rect(barRect.x + 2f, barRect.y, halfWidth - 4f, barRect.height),
- order.qualityProgress.ToStringPercent("F0"));
-
- Text.Anchor = TextAnchor.MiddleRight;
- GUI.color = new Color(0.8f, 1f, 0.8f);
- Widgets.Label(new Rect(midX + 2f, barRect.y, halfWidth - 4f, barRect.height),
- order.progress.ToStringPercent("F0"));
-
- Text.Anchor = TextAnchor.UpperLeft;
- GUI.color = Color.white;
- }
- else
- {
- // 等待幼虫状态:显示等待指示
- GUI.DrawTexture(barRect, EmptyBarTex);
- Text.Font = GameFont.Tiny;
- Text.Anchor = TextAnchor.MiddleCenter;
- GUI.color = new Color(0.8f, 0.6f, 0.2f);
- Widgets.Label(barRect, "ARA_Status_WaitingForLarva".Translate());
- GUI.color = Color.white;
- Text.Anchor = TextAnchor.UpperLeft;
- }
- }
-
- private GizmoResult DrawSingleSelectGizmo(Vector2 topLeft, float maxWidth)
{
var orders = provider.GetOrdersForGizmo();
int orderCount = orders.Count;
@@ -257,10 +51,10 @@ namespace ArachnaeSwarm
// === 标题区域(可点击打开菜单) ===
Text.Font = GameFont.Small;
Rect titleRect = new Rect(innerRect.x, curY, innerRect.width, Text.LineHeight);
-
+
string title;
bool canAdd = orderCount < provider.QueueLimit;
-
+
if (orderCount > 0)
{
// 显示第一个订单名称
@@ -279,12 +73,12 @@ namespace ArachnaeSwarm
{
Widgets.DrawHighlight(titleRect);
}
-
+
if (Widgets.ButtonInvisible(titleRect))
{
provider.ShowOrderMenu();
}
-
+
// 带下拉箭头的标题
GUI.color = new Color(0.7f, 0.9f, 1f);
Widgets.Label(titleRect, title.Truncate(titleRect.width - 20f) + " ▼");
@@ -305,18 +99,18 @@ namespace ArachnaeSwarm
float listHeight = Mathf.Min(visibleCount, orderCount) * itemHeight;
float totalContentHeight = orderCount * itemHeight;
bool needsScrollbar = orderCount > MaxVisibleOrders;
-
+
float scrollbarWidth = needsScrollbar ? 12f : 0f;
Rect listRect = new Rect(innerRect.x, curY, innerRect.width - scrollbarWidth, listHeight);
Rect viewRect = new Rect(0, 0, listRect.width, totalContentHeight);
-
+
// 滚动条区域
if (needsScrollbar)
{
Rect scrollbarRect = new Rect(innerRect.xMax - scrollbarWidth, curY, scrollbarWidth, listHeight);
float scrollMax = totalContentHeight - listHeight;
provider.GizmoScrollPosition = GUI.VerticalScrollbar(scrollbarRect, provider.GizmoScrollPosition, listHeight, 0f, totalContentHeight);
-
+
// 也支持滚轮
if (Mouse.IsOver(listRect))
{
@@ -332,7 +126,7 @@ namespace ArachnaeSwarm
{
var order = orders[i];
Rect itemRect = new Rect(0, drawY, listRect.width, itemHeight - Spacing);
-
+
if (itemRect.yMax > 0 && itemRect.y < listRect.height)
{
DrawOrderItem(itemRect, order, i);
@@ -358,11 +152,11 @@ namespace ArachnaeSwarm
private void DrawOrderItem(Rect rect, PawnOrderDisplayInfo order, int index)
{
float labelHeight = 14f;
-
+
// 标签行
Text.Font = GameFont.Tiny;
Rect labelRect = new Rect(rect.x, rect.y, rect.width - 20f, labelHeight);
-
+
if (order.status == OrderStatus.WaitingForLarva)
{
// 整个标签区域可点击呼叫幼虫
@@ -370,12 +164,12 @@ namespace ArachnaeSwarm
{
Widgets.DrawHighlight(labelRect);
}
-
+
if (Widgets.ButtonInvisible(labelRect))
{
provider.CallLarvaForGizmo();
}
-
+
GUI.color = new Color(1f, 0.8f, 0.4f);
Widgets.Label(labelRect, $"{order.label} [" + "ARA_Status_WaitingForLarva".Translate() + "]");
}
@@ -395,7 +189,7 @@ namespace ArachnaeSwarm
// 进度条
Rect barRect = new Rect(rect.x, rect.y + labelHeight, rect.width, BarHeight);
-
+
if (order.status == OrderStatus.Incubating)
{
// 双向进度条:品质向左,进度向右
@@ -417,24 +211,24 @@ namespace ArachnaeSwarm
// 中线
Widgets.DrawLineVertical(midX, barRect.y, barRect.height);
-
+
// 百分比文字(在进度条内部)
Text.Font = GameFont.Tiny;
Text.Anchor = TextAnchor.MiddleLeft;
GUI.color = new Color(0.8f, 0.9f, 1f);
- Widgets.Label(new Rect(barRect.x + 2f, barRect.y, halfWidth - 4f, barRect.height),
+ Widgets.Label(new Rect(barRect.x + 2f, barRect.y, halfWidth - 4f, barRect.height),
order.qualityProgress.ToStringPercent("F0"));
-
+
Text.Anchor = TextAnchor.MiddleRight;
GUI.color = new Color(0.8f, 1f, 0.8f);
- Widgets.Label(new Rect(midX + 2f, barRect.y, halfWidth - 4f, barRect.height),
+ Widgets.Label(new Rect(midX + 2f, barRect.y, halfWidth - 4f, barRect.height),
order.progress.ToStringPercent("F0"));
-
+
Text.Anchor = TextAnchor.UpperLeft;
GUI.color = Color.white;
// Tooltip
- string tooltip = $"{order.label}\n" +
+ string tooltip = $"{order.label}\n" +
"ARA_Tooltip_Quality".Translate(order.qualityProgress.ToStringPercent(), order.estimatedQuality) + "\n" +
"ARA_Tooltip_Progress".Translate(order.progress.ToStringPercent()) + "\n" +
"ARA_Tooltip_Remaining".Translate(order.remainingTime);
diff --git a/Source/ArachnaeSwarm/Jobs/JobDriver_FollowProducer/ThinkNode_ConditionalNotProducedByMechCarrier.cs b/Source/ArachnaeSwarm/Jobs/JobDriver_FollowProducer/ThinkNode_ConditionalNotProducedByMechCarrier.cs
index 73ef1c0..528b4ab 100644
--- a/Source/ArachnaeSwarm/Jobs/JobDriver_FollowProducer/ThinkNode_ConditionalNotProducedByMechCarrier.cs
+++ b/Source/ArachnaeSwarm/Jobs/JobDriver_FollowProducer/ThinkNode_ConditionalNotProducedByMechCarrier.cs
@@ -14,17 +14,14 @@ namespace ArachnaeSwarm
private bool checkProducerAlive = true;
// 可选:是否检查生产者是否在同一地图
- private bool checkSameMap = true;
+ private bool checkSameMap = false;
// 可选:是否检查生产者是否可到达
- private bool checkReachable = true;
+ private bool checkReachable = false;
// 可选:是否检查生产者类型(pawn必须征召才跟随)
private bool checkProducerTypeConditions = true;
- // 可选:额外条件类(可以通过XML添加额外条件)
- public string extraConditionClass;
-
public ThinkNode_ConditionalNotProducedByMechCarrier()
{
}