diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index 36d7672..b5d2326 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/Thing_building/ARA_NutrientNetworkBuilding.xml b/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml
index 74d62a1..cf3413a 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml
@@ -39,9 +39,22 @@
ARA_MorphableResearchBench
80
+ 10
0.9
+
+
+
+ ARA_BioforgeIncubator
+ ARA_BioforgeIncubator_Thing
+ ARA_JellyVat
+ ARA_GrowthVat
+ ARA_MorphableResearchBench
+
+ 80
+
+
10000.0
@@ -63,6 +76,7 @@
ARA_GrowthVat
+
ARA_Buildings
diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
index e4961eb..0e25ad9 100644
--- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
+++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
@@ -107,6 +107,10 @@
+
+
+
+
@@ -121,9 +125,6 @@
-
-
-
diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompLineDrawer.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompLineDrawer.cs
new file mode 100644
index 0000000..9bd7783
--- /dev/null
+++ b/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompLineDrawer.cs
@@ -0,0 +1,70 @@
+using RimWorld;
+using Verse;
+using UnityEngine;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace ArachnaeSwarm
+{
+ public class CompProperties_LineDrawer : CompProperties
+ {
+ public List linkableBuildings;
+ public float maxDistance = 999f;
+
+ public CompProperties_LineDrawer()
+ {
+ compClass = typeof(CompLineDrawer);
+ }
+ }
+
+ public class CompLineDrawer : ThingComp
+ {
+ private CompProperties_LineDrawer Props => (CompProperties_LineDrawer)props;
+ private List linkedBuildings = new List();
+
+ public override void PostSpawnSetup(bool respawningAfterLoad)
+ {
+ base.PostSpawnSetup(respawningAfterLoad);
+ FindAndLinkBuildings();
+ }
+
+ public override void CompTick()
+ {
+ base.CompTick();
+ if (parent.IsHashIntervalTick(120))
+ {
+ FindAndLinkBuildings();
+ }
+ }
+
+ private void FindAndLinkBuildings()
+ {
+ int previousCount = linkedBuildings.Count;
+
+ linkedBuildings.Clear();
+ if (Props.linkableBuildings.NullOrEmpty()) return;
+
+ var potentialTargets = parent.Map.listerBuildings.allBuildingsColonist.Where(b =>
+ b != parent &&
+ Props.linkableBuildings.Contains(b.def) &&
+ parent.Position.DistanceTo(b.Position) <= Props.maxDistance
+ );
+
+ linkedBuildings.AddRange(potentialTargets);
+
+ if (linkedBuildings.Count != previousCount)
+ {
+ parent.Map.mapDrawer.MapMeshDirty(parent.Position, MapMeshFlagDefOf.Things, true, false);
+ }
+ }
+
+ public override void PostPrintOnto(SectionLayer layer)
+ {
+ base.PostPrintOnto(layer);
+ foreach (var building in linkedBuildings)
+ {
+ PowerNetGraphics.PrintWirePieceConnecting(layer, this.parent, building, false);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompNutrientProvider.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompNutrientProvider.cs
index a38fa3a..d447c98 100644
--- a/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompNutrientProvider.cs
+++ b/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompNutrientProvider.cs
@@ -3,6 +3,7 @@ using Verse;
using System.Linq;
using UnityEngine;
using System.Text;
+using System.Collections.Generic;
namespace ArachnaeSwarm
{
@@ -10,7 +11,7 @@ namespace ArachnaeSwarm
{
private CompRefuelableNutrition selfRefuelable;
private new CompProperties_NutrientProvider Props => (CompProperties_NutrientProvider)props;
-
+
public override void PostSpawnSetup(bool respawningAfterLoad)
{
base.PostSpawnSetup(respawningAfterLoad);
@@ -82,8 +83,6 @@ namespace ArachnaeSwarm
float efficiency = Mathf.Clamp(parent.GetStatValue(StatDef.Named("NutrientTransmissionEfficiency")), 0f, Props.maxEfficiency);
float finalCost = fuelToTransfer * (1 - efficiency);
- // Log.Message($"[NutrientProvider] Found target: {targetBuilding.Building.Label}. Fuel: {consumerComp.Fuel:F0}/{consumerComp.Props.fuelCapacity:F0}. Needs: {fuelNeeded:F2}. Transferring: {fuelToTransfer:F2}. Final cost: {finalCost:F2}");
-
selfRefuelable.ConsumeFuel(finalCost);
consumerComp.ReceiveFuel(fuelToTransfer);
}
@@ -97,12 +96,10 @@ namespace ArachnaeSwarm
private float GetDesiredFuelLevel(CompRefuelableNutrition comp)
{
- // If target is 0 (initial default) or max (UI default), treat as "fill to full".
if (comp.TargetFuelLevel <= 0.01f || comp.TargetFuelLevel >= comp.Props.fuelCapacity * 0.99f)
{
return comp.Props.fuelCapacity;
}
- // Otherwise, respect the player's custom setting.
return comp.TargetFuelLevel;
}
}