diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index e2258e1..36d7672 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 b2048ec..74d62a1 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml @@ -39,11 +39,12 @@
  • ARA_MorphableResearchBench
  • 80 + 0.9
  • - 1000.0 + 10000.0
  • Foods
  • @@ -418,8 +419,7 @@ 0.5 - 150 - 4 + 50 Building PassThroughOnly @@ -467,6 +467,8 @@
  • ARA_BioforgeIncubator
  • ARA_BioforgeIncubator_Thing
  • + 10 + 20 0.05 0.1 diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompNutrientProvider.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompNutrientProvider.cs index 4224ae7..a38fa3a 100644 --- a/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompNutrientProvider.cs +++ b/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompNutrientProvider.cs @@ -9,6 +9,7 @@ namespace ArachnaeSwarm public class CompNutrientProvider : CompFacility { private CompRefuelableNutrition selfRefuelable; + private new CompProperties_NutrientProvider Props => (CompProperties_NutrientProvider)props; public override void PostSpawnSetup(bool respawningAfterLoad) { @@ -20,7 +21,7 @@ namespace ArachnaeSwarm { StringBuilder sb = new StringBuilder(); - float efficiency = Mathf.Clamp(parent.GetStatValue(StatDef.Named("NutrientTransmissionEfficiency")), 0f, 0.1f); + float efficiency = Mathf.Clamp(parent.GetStatValue(StatDef.Named("NutrientTransmissionEfficiency")), 0f, Props.maxEfficiency); sb.AppendLine("生物质传输效率".Translate() + ": " + efficiency.ToStringPercent()); sb.AppendLine("链接的建筑".Translate() + ":"); @@ -48,15 +49,12 @@ namespace ArachnaeSwarm public override void CompTick() { base.CompTick(); - // Log.Message($"[NutrientProvider] CompTick called for {parent.Label}."); // This will be too spammy if (!parent.IsHashIntervalTick(250)) { return; } - Log.Message($"[NutrientProvider] Rare Tick Logic executing for {parent.Label}."); - if (selfRefuelable == null || !selfRefuelable.HasFuel) { return; @@ -73,12 +71,18 @@ namespace ArachnaeSwarm var consumerComp = targetBuilding.Comp; float desiredLevel = GetDesiredFuelLevel(consumerComp); float fuelNeeded = desiredLevel - consumerComp.Fuel; + + if (fuelNeeded < 0.1f) + { + return; + } + float fuelToTransfer = Mathf.Min(fuelNeeded, selfRefuelable.Fuel); - float efficiency = Mathf.Clamp(parent.GetStatValue(StatDef.Named("NutrientTransmissionEfficiency")), 0f, 0.1f); + 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}"); + // 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); @@ -88,7 +92,7 @@ namespace ArachnaeSwarm private bool NeedsFuel(CompRefuelableNutrition comp) { if (comp == null) return false; - return comp.Fuel < GetDesiredFuelLevel(comp); + return GetDesiredFuelLevel(comp) - comp.Fuel >= 0.1f; } private float GetDesiredFuelLevel(CompRefuelableNutrition comp) diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompProperties_NutrientProvider.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompProperties_NutrientProvider.cs index 9e3677b..3d04413 100644 --- a/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompProperties_NutrientProvider.cs +++ b/Source/ArachnaeSwarm/Building_Comps/ARA_NutrientNetwork/CompProperties_NutrientProvider.cs @@ -1,9 +1,12 @@ using RimWorld; +using Verse; namespace ArachnaeSwarm { public class CompProperties_NutrientProvider : CompProperties_Facility { + public float maxEfficiency = 0.9f; + public CompProperties_NutrientProvider() { compClass = typeof(CompNutrientProvider);