]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Stuttering during blood loss. (#15153)
authorIlushkins33 <128389588+Ilushkins33@users.noreply.github.com>
Fri, 5 May 2023 13:46:52 +0000 (21:46 +0800)
committerGitHub <noreply@github.com>
Fri, 5 May 2023 13:46:52 +0000 (23:46 +1000)
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Content.Server/Body/Components/BloodstreamComponent.cs
Content.Server/Body/Systems/BloodstreamSystem.cs
Content.Shared/Speech/EntitySystems/SharedStutteringSystem.cs

index 29806908e3b7b2372e435dcf2d06d443f8d76dff..d056df289d1b2d83831e51ba6d2fe690c4ba8928 100644 (file)
@@ -150,9 +150,9 @@ namespace Content.Server.Body.Components
         public Solution BloodTemporarySolution = default!;
 
         /// <summary>
-        /// Variable that stores the amount of drunk time added by having a low blood level.
+        /// Variable that stores the amount of status time added by having a low blood level.
         /// </summary>
         [ViewVariables(VVAccess.ReadWrite)]
-        public float DrunkTime;
+        public float StatusTime;
     }
 }
index fa8b9055f271bb4c0913170b9723c40e182b6a93..017d92a9c9773283340a5146bd57ffce538a1f97 100644 (file)
@@ -21,6 +21,7 @@ using Robust.Shared.Audio;
 using Robust.Shared.Player;
 using Robust.Shared.Prototypes;
 using Robust.Shared.Random;
+using Content.Shared.Speech.EntitySystems;
 
 namespace Content.Server.Body.Systems;
 
@@ -35,6 +36,7 @@ public sealed class BloodstreamSystem : EntitySystem
     [Dependency] private readonly MobStateSystem _mobStateSystem = default!;
     [Dependency] private readonly SharedDrunkSystem _drunkSystem = default!;
     [Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
+    [Dependency] private readonly SharedStutteringSystem _stutteringSystem = default!;
 
     public override void Initialize()
     {
@@ -117,21 +119,21 @@ public sealed class BloodstreamSystem : EntitySystem
                 // The effect is applied in a way that it will never be cleared without being healthy.
                 // Multiplying by 2 is arbitrary but works for this case, it just prevents the time from running out
                 _drunkSystem.TryApplyDrunkenness(uid, bloodstream.UpdateInterval*2, false);
+                _stutteringSystem.DoStutter(uid, TimeSpan.FromSeconds(bloodstream.UpdateInterval*2), false);
 
-                // storing the drunk time so we can remove it independently from other effects additions
-                bloodstream.DrunkTime += bloodstream.UpdateInterval * 2;
-
+                // storing the drunk and stutter time so we can remove it independently from other effects additions
+                bloodstream.StatusTime += bloodstream.UpdateInterval * 2;
             }
             else if (_mobStateSystem.IsAlive(uid))
             {
                 // If they're healthy, we'll try and heal some bloodloss instead.
                 _damageableSystem.TryChangeDamage(uid, bloodstream.BloodlossHealDamage * bloodPercentage, true, false);
 
-                // Remove the drunk effect when healthy. Should only remove the amount of drunk added by low blood level
-                _drunkSystem.TryRemoveDrunkenessTime(uid, bloodstream.DrunkTime);
-                // Reset the drunk time to zero
-                bloodstream.DrunkTime = 0;
-
+                // Remove the drunk effect when healthy. Should only remove the amount of drunk and stutter added by low blood level
+                _drunkSystem.TryRemoveDrunkenessTime(uid, bloodstream.StatusTime);
+                _stutteringSystem.DoRemoveStutterTime(uid, bloodstream.StatusTime);
+                // Reset the drunk and stutter time to zero
+                bloodstream.StatusTime = 0;
             }
         }
     }
index f6aaa3c983bcf83b08c6450835735d1645e090b2..4816675ab9819e3a5fb41706a8b8110a87a0f774 100644 (file)
@@ -1,12 +1,25 @@
 using Content.Shared.StatusEffect;
 
-namespace Content.Shared.Speech.EntitySystems
+namespace Content.Shared.Speech.EntitySystems;
+
+public abstract class SharedStutteringSystem : EntitySystem
 {
-    public abstract class SharedStutteringSystem : EntitySystem
+    public const string StutterKey = "Stutter";
+
+    [Dependency] private readonly StatusEffectsSystem _statusEffectsSystem = default!;  
+
+    // For code in shared... I imagine we ain't getting accent prediction anytime soon so let's not bother.
+    public virtual void DoStutter(EntityUid uid, TimeSpan time, bool refresh, StatusEffectsComponent? status = null)
+    {
+    }
+    
+    public virtual void DoRemoveStutterTime(EntityUid uid, double timeRemoved)
+    {
+        _statusEffectsSystem.TryRemoveTime(uid, StutterKey, TimeSpan.FromSeconds(timeRemoved));
+    }
+    
+    public void DoRemoveStutter(EntityUid uid, double timeRemoved)
     {
-        // For code in shared... I imagine we ain't getting accent prediction anytime soon so let's not bother.
-        public virtual void DoStutter(EntityUid uid, TimeSpan time, bool refresh, StatusEffectsComponent? status = null)
-        {
-        }
+       _statusEffectsSystem.TryRemoveStatusEffect(uid, StutterKey);
     }
 }