From 7a0dd8b27b69e69eb7729490c1e175ae11c00b26 Mon Sep 17 00:00:00 2001 From: ArtForz Date: Tue, 22 Apr 2014 10:41:44 +0200 Subject: [PATCH] Correct supply limited Reactor resource return Fixes collector fed AM reactors producing way more power than intended. Amount returned should be based on 1-used/(max*resource_ratio), not 1-used/max. That exposes powerPcnt calculation is off in the exact inverse, so fix that, too. --- FNPlugin/FNReactor.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/FNPlugin/FNReactor.cs b/FNPlugin/FNReactor.cs index 8e8b3c52..a4e0825d 100644 --- a/FNPlugin/FNReactor.cs +++ b/FNPlugin/FNReactor.cs @@ -486,9 +486,13 @@ public override void OnFixedUpdate() { // total power total_power_ratio = total_power / ThermalPower / TimeWarp.fixedDeltaTime; ongoing_consumption_rate = (float)total_power_ratio; - double return_ratio = 1 - total_power_ratio; + double used_power_ratio = 0; + if (power_to_supply > 0) { + used_power_ratio = total_power / power_to_supply; + } + double return_ratio = 1 - used_power_ratio; double resource_returned = returnReactorResource(resource_provided * return_ratio); - powerPcnt = (float)(resource_ratio * 100.0 * total_power_ratio); + powerPcnt = (float)(100.0 * total_power_ratio); tritium_rate = (float)(thermal_power_received / TimeWarp.fixedDeltaTime / 1000.0f / GameConstants.tritiumBreedRate)*(1-chargedParticleRatio); if (breedtritium) { double lith_rate = tritium_rate * TimeWarp.fixedDeltaTime;