From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Wed, 13 Mar 2024 09:35:48 +0000 (-0700) Subject: Syringe doafter based on Syringe contents (#25890) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=37cd12524e85b6a3b31827e4751a94ca51268694;p=space-station-14.git Syringe doafter based on Syringe contents (#25890) Syringe delay based on amount in syringe Co-authored-by: Plykiya --- diff --git a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs index 40e637615e..e718e14683 100644 --- a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs @@ -128,9 +128,21 @@ public sealed class InjectorSystem : SharedInjectorSystem return; var actualDelay = MathHelper.Max(injector.Comp.Delay, TimeSpan.FromSeconds(1)); + float amountToInject; + if (injector.Comp.ToggleState == InjectorToggleMode.Draw) + { + // additional delay is based on actual volume left to draw in syringe when smaller than transfer amount + amountToInject = Math.Min(injector.Comp.TransferAmount.Float(), (solution.MaxVolume - solution.Volume).Float()); + } + else + { + // additional delay is based on actual volume left to inject in syringe when smaller than transfer amount + amountToInject = Math.Min(injector.Comp.TransferAmount.Float(), solution.Volume.Float()); + } + + // Injections take 0.5 seconds longer per 5u of possible space/content + actualDelay += TimeSpan.FromSeconds(amountToInject / 10); - // Injections take 0.5 seconds longer per additional 5u - actualDelay += TimeSpan.FromSeconds(injector.Comp.TransferAmount.Float() / injector.Comp.Delay.TotalSeconds - 0.5f); var isTarget = user != target;