diff --git a/Content.Client/_DV/Pain/PainSystem.cs b/Content.Client/_DV/Pain/PainSystem.cs
new file mode 100644
index 0000000000..8633c0cdb7
--- /dev/null
+++ b/Content.Client/_DV/Pain/PainSystem.cs
@@ -0,0 +1,5 @@
+using Content.Shared._DV.Pain;
+
+namespace Content.Client._DV.Pain;
+
+public abstract class PainSystem : SharedPainSystem;
\ No newline at end of file
diff --git a/Content.Server/_DV/EntityEffects/Effects/AffectsGlimmerEntityEffectSystem.cs b/Content.Server/_DV/EntityEffects/Effects/AffectsGlimmerEntityEffectSystem.cs
deleted file mode 100644
index 0616b3c335..0000000000
--- a/Content.Server/_DV/EntityEffects/Effects/AffectsGlimmerEntityEffectSystem.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using Content.Shared._DV.Pain;
-using Content.Shared.EntityEffects;
-using Content.Shared.StatusEffect;
-using Robust.Shared.Prototypes;
-using Content.Server.Abilities.Psionics;
-using Content.Server.Psionics;
-using Content.Shared.Psionics.Glimmer;
-
-namespace Content.Server._DV.EntityEffects.Effects;
-
-///
-/// Changes glimmer when reaction happens.
-///
-///
-public sealed partial class AffectsGlimmerEntityEffectSystem : EntityEffectSystem
-{
- [Dependency] private readonly GlimmerSystem _glimmer = default!;
- protected override void Effect(Entity entity, ref EntityEffectEvent args)
- {
- _glimmer.Glimmer += args.Effect.Amount;
- }
-}
-
-///
-public sealed partial class AffectsGlimmer : EntityEffectBase
-{
- ///
- /// Amount that is added or subtracted from glimmer.
- ///
- [DataField]
- public int Amount = 1;
-
- public override string? EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
- => Loc.GetString("reagent-effect-guidebook-change-glimmer-reaction-effect", ("chance", Probability),
- ("amount", Amount));
-}
diff --git a/Content.Server/_DV/EntityEffects/Effects/CosmicCult/CleanseCosmicCultEntityEffectSystem.cs b/Content.Server/_DV/EntityEffects/Effects/CosmicCult/CleanseCosmicCultEntityEffectSystem.cs
index 1ea7cc1e01..ee6e57bad6 100644
--- a/Content.Server/_DV/EntityEffects/Effects/CosmicCult/CleanseCosmicCultEntityEffectSystem.cs
+++ b/Content.Server/_DV/EntityEffects/Effects/CosmicCult/CleanseCosmicCultEntityEffectSystem.cs
@@ -1,11 +1,6 @@
-using Content.Shared._DV.Pain;
-using Content.Shared.EntityEffects;
-using Content.Shared.StatusEffect;
-using Robust.Shared.Prototypes;
-using Content.Server.Abilities.Psionics;
-using Content.Server.Psionics;
-using Content.Shared.Psionics.Glimmer;
+using Content.Shared._DV.EntityEffects.Effects.CosmicCult;
using Content.Shared._DV.CosmicCult.Components;
+using Content.Shared.EntityEffects;
namespace Content.Server._DV.EntityEffects.Effects;
@@ -21,11 +16,4 @@ public sealed partial class CleanseCosmicCultEntityEffectSystem : EntityEffectSy
if (_ent.HasComponent(entity))
_ent.EnsureComponent(entity); // We just slap them with the component and let the Deconversion system handle the rest.
}
-}
-
-///
-public sealed partial class CleanseCosmicCult : EntityEffectBase
-{
- public override string? EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
- => Loc.GetString("reagent-effect-guidebook-cleanse-cultist", ("chance", Probability));
-}
+}
\ No newline at end of file
diff --git a/Content.Server/_DV/EntityEffects/Effects/Glimmer/AffectsGlimmerEntityEffectSystem.cs b/Content.Server/_DV/EntityEffects/Effects/Glimmer/AffectsGlimmerEntityEffectSystem.cs
new file mode 100644
index 0000000000..34b3f808b3
--- /dev/null
+++ b/Content.Server/_DV/EntityEffects/Effects/Glimmer/AffectsGlimmerEntityEffectSystem.cs
@@ -0,0 +1,18 @@
+using Content.Shared.EntityEffects;
+using Content.Shared.Psionics.Glimmer;
+using Content.Shared._DV.EntityEffects.Effects.Glimmer;
+
+namespace Content.Server._DV.EntityEffects.Effects.Glimmer;
+
+///
+/// Changes glimmer when reaction happens.
+///
+///
+public sealed partial class AffectsGlimmerEntityEffectSystem : EntityEffectSystem
+{
+ [Dependency] private readonly GlimmerSystem _glimmer = default!;
+ protected override void Effect(Entity entity, ref EntityEffectEvent args)
+ {
+ _glimmer.Glimmer += args.Effect.Amount;
+ }
+}
\ No newline at end of file
diff --git a/Content.Server/_DV/EntityEffects/Effects/RemovePsionicAbilitiesEntityEffectSystem.cs b/Content.Server/_DV/EntityEffects/Effects/Psionics/RemovePsionicAbilitiesEntityEffectSystem.cs
similarity index 68%
rename from Content.Server/_DV/EntityEffects/Effects/RemovePsionicAbilitiesEntityEffectSystem.cs
rename to Content.Server/_DV/EntityEffects/Effects/Psionics/RemovePsionicAbilitiesEntityEffectSystem.cs
index a9c3772bea..46d86f3631 100644
--- a/Content.Server/_DV/EntityEffects/Effects/RemovePsionicAbilitiesEntityEffectSystem.cs
+++ b/Content.Server/_DV/EntityEffects/Effects/Psionics/RemovePsionicAbilitiesEntityEffectSystem.cs
@@ -1,11 +1,12 @@
-using Content.Shared._DV.Pain;
+using Content.Shared._DV.EntityEffects.Effects.Psionics;
using Content.Shared.EntityEffects;
using Content.Shared.StatusEffect;
-using Robust.Shared.Prototypes;
using Content.Server.Abilities.Psionics;
using Content.Server.Psionics;
-namespace Content.Server._DV.EntityEffects.Effects;
+using Robust.Shared.Prototypes;
+
+namespace Content.Server._DV.EntityEffects.Effects.Psionics;
///
/// Removes psionic abilities when at least 1u of the reagent is in the system.
@@ -23,11 +24,4 @@ public sealed partial class RemovePsionicAbilitiesEntityEffectSystem : EntityEff
_psionicAbilities.RemovePsionics(entity);
_psionic.GrantNewPsionicReroll(entity);
}
-}
-
-///
-public sealed partial class RemovePsionicAbilities : EntityEffectBase
-{
- public override string? EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
- => Loc.GetString("reagent-effect-guidebook-chem-remove-psionic", ("chance", Probability));
-}
+}
\ No newline at end of file
diff --git a/Content.Server/_DV/EntityEffects/Effects/RerollPsionicAbilitiesEntityEffectSystem.cs b/Content.Server/_DV/EntityEffects/Effects/Psionics/RerollPsionicAbilitiesEntityEffectSystem.cs
similarity index 59%
rename from Content.Server/_DV/EntityEffects/Effects/RerollPsionicAbilitiesEntityEffectSystem.cs
rename to Content.Server/_DV/EntityEffects/Effects/Psionics/RerollPsionicAbilitiesEntityEffectSystem.cs
index 5f075f854b..b2b4f6f883 100644
--- a/Content.Server/_DV/EntityEffects/Effects/RerollPsionicAbilitiesEntityEffectSystem.cs
+++ b/Content.Server/_DV/EntityEffects/Effects/Psionics/RerollPsionicAbilitiesEntityEffectSystem.cs
@@ -1,11 +1,11 @@
-using Content.Shared._DV.Pain;
+using Content.Server.Psionics;
+using Content.Shared._DV.EntityEffects.Effects.Psionics;
using Content.Shared.EntityEffects;
using Content.Shared.StatusEffect;
-using Robust.Shared.Prototypes;
using Content.Server.Abilities.Psionics;
-using Content.Server.Psionics;
+using Robust.Shared.Prototypes;
-namespace Content.Server._DV.EntityEffects.Effects;
+namespace Content.Server._DV.EntityEffects.Effects.Psionics;
///
/// Rerolls psionic abilities when at least 1u of the reagent is in the system.
@@ -21,17 +21,4 @@ public sealed partial class RerollPsionicAbilitiesEntityEffectSystem : EntityEff
_psionic.RerollPsionics(entity, bonusMuliplier: args.Effect.BonusMultiplier);
}
-}
-
-///
-public sealed partial class RerollPsionicAbilities : EntityEffectBase
-{
- ///
- /// Reroll multiplier.
- ///
- [DataField("bonusMultiplier")]
- public float BonusMultiplier = 1f;
-
- public override string? EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
- => Loc.GetString("reagent-effect-guidebook-chem-reroll-psionic", ("chance", Probability));
-}
+}
\ No newline at end of file
diff --git a/Content.Server/_DV/Pain/PainSystem.cs b/Content.Server/_DV/Pain/PainSystem.cs
index ce4b6711d7..f7cccdd536 100644
--- a/Content.Server/_DV/Pain/PainSystem.cs
+++ b/Content.Server/_DV/Pain/PainSystem.cs
@@ -1,90 +1,5 @@
using Content.Shared._DV.Pain;
-using Content.Shared.Popups;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Random;
-using Robust.Shared.Timing;
namespace Content.Server._DV.Pain;
-public sealed class PainSystem : SharedPainSystem
-{
- [Dependency] private readonly IGameTiming _timing = default!;
- [Dependency] private readonly IPrototypeManager _prototype = default!;
- [Dependency] private readonly IRobustRandom _random = default!;
- [Dependency] private readonly SharedPopupSystem _popup = default!;
-
- public override void Initialize()
- {
- base.Initialize();
- SubscribeLocalEvent(OnMapInit);
- }
-
- private void OnMapInit(Entity ent, ref MapInitEvent args)
- {
- ent.Comp.NextUpdateTime = _timing.CurTime;
- ent.Comp.NextPopupTime = _timing.CurTime;
- }
-
- protected override void UpdatePainSuppression(Entity ent, float duration, PainSuppressionLevel level)
- {
- var curTime = _timing.CurTime;
- var newEndTime = curTime + TimeSpan.FromSeconds(duration);
-
- // Only update if this would extend the suppression
- if (newEndTime <= ent.Comp.SuppressionEndTime)
- return;
-
- ent.Comp.LastPainkillerTime = curTime;
- ent.Comp.SuppressionEndTime = newEndTime;
- UpdateSuppressed(ent);
- }
-
- private void UpdateSuppressed(Entity ent)
- {
- ent.Comp.Suppressed = (_timing.CurTime < ent.Comp.SuppressionEndTime);
- Dirty(ent);
- }
-
- private void ShowPainPopup(Entity ent)
- {
- if (!_prototype.TryIndex(ent.Comp.DatasetPrototype, out var dataset))
- return;
-
- var effects = dataset.Values;
- if (effects.Count == 0)
- return;
-
- var effect = _random.Pick(effects);
- _popup.PopupEntity(Loc.GetString(effect), ent, ent);
-
- // Set next popup time
- var delay = _random.NextFloat(ent.Comp.MinimumPopupDelay, ent.Comp.MaximumPopupDelay);
- ent.Comp.NextPopupTime = _timing.CurTime + TimeSpan.FromSeconds(delay);
- }
-
- public override void Update(float frameTime)
- {
- base.Update(frameTime);
-
- var curTime = _timing.CurTime;
- var query = EntityQueryEnumerator();
-
- while (query.MoveNext(out var uid, out var component))
- {
- if (curTime < component.NextUpdateTime)
- continue;
-
- var ent = new Entity(uid, component);
-
- if (component.Suppressed)
- {
- UpdateSuppressed(ent);
- }
- else if (curTime >= component.NextPopupTime)
- {
- ShowPainPopup(ent);
- }
- component.NextUpdateTime = curTime + TimeSpan.FromSeconds(1);
- }
- }
-}
+public sealed class PainSystem : SharedPainSystem;
\ No newline at end of file
diff --git a/Content.Shared/_DV/EntityEffects/Effects/AddictingEntityEffectSystem.cs b/Content.Shared/_DV/EntityEffects/Effects/Addiction/AddictingEntityEffectSystem.cs
similarity index 95%
rename from Content.Shared/_DV/EntityEffects/Effects/AddictingEntityEffectSystem.cs
rename to Content.Shared/_DV/EntityEffects/Effects/Addiction/AddictingEntityEffectSystem.cs
index 2e8ca28089..d303b44311 100644
--- a/Content.Shared/_DV/EntityEffects/Effects/AddictingEntityEffectSystem.cs
+++ b/Content.Shared/_DV/EntityEffects/Effects/Addiction/AddictingEntityEffectSystem.cs
@@ -3,7 +3,7 @@ using Content.Shared.EntityEffects;
using Content.Shared.StatusEffect;
using Robust.Shared.Prototypes;
-namespace Content.Shared._DV.EntityEffects.Effects;
+namespace Content.Shared._DV.EntityEffects.Effects.Addiction;
// TODO: When Addiction is moved to new Status, make this use StatusEffectsContainerComponent.
///
diff --git a/Content.Shared/_DV/EntityEffects/Effects/SuppressAddictionEntityEffectSystem.cs b/Content.Shared/_DV/EntityEffects/Effects/Addiction/SuppressAddictionEntityEffectSystem.cs
similarity index 95%
rename from Content.Shared/_DV/EntityEffects/Effects/SuppressAddictionEntityEffectSystem.cs
rename to Content.Shared/_DV/EntityEffects/Effects/Addiction/SuppressAddictionEntityEffectSystem.cs
index ab75bc326f..15b9744835 100644
--- a/Content.Shared/_DV/EntityEffects/Effects/SuppressAddictionEntityEffectSystem.cs
+++ b/Content.Shared/_DV/EntityEffects/Effects/Addiction/SuppressAddictionEntityEffectSystem.cs
@@ -3,7 +3,7 @@ using Content.Shared.EntityEffects;
using Content.Shared.StatusEffect;
using Robust.Shared.Prototypes;
-namespace Content.Shared._DV.EntityEffects.Effects;
+namespace Content.Shared._DV.EntityEffects.Effects.Addiction;
// TODO: When Addiction is moved to new Status, make this use StatusEffectsContainerComponent.
///
diff --git a/Content.Shared/_DV/EntityEffects/Effects/CosmicCult/CleanseCosmicCultEntityEffect.cs b/Content.Shared/_DV/EntityEffects/Effects/CosmicCult/CleanseCosmicCultEntityEffect.cs
new file mode 100644
index 0000000000..88ab058240
--- /dev/null
+++ b/Content.Shared/_DV/EntityEffects/Effects/CosmicCult/CleanseCosmicCultEntityEffect.cs
@@ -0,0 +1,11 @@
+using Content.Shared.EntityEffects;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared._DV.EntityEffects.Effects.CosmicCult;
+
+///
+public sealed partial class CleanseCosmicCult : EntityEffectBase
+{
+ public override string? EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
+ => Loc.GetString("reagent-effect-guidebook-cleanse-cultist", ("chance", Probability));
+}
\ No newline at end of file
diff --git a/Content.Shared/_DV/EntityEffects/Effects/Glimmer/AffectsGlimmerEntityEffect.cs b/Content.Shared/_DV/EntityEffects/Effects/Glimmer/AffectsGlimmerEntityEffect.cs
new file mode 100644
index 0000000000..ba4e4c9eac
--- /dev/null
+++ b/Content.Shared/_DV/EntityEffects/Effects/Glimmer/AffectsGlimmerEntityEffect.cs
@@ -0,0 +1,18 @@
+using Content.Shared.EntityEffects;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared._DV.EntityEffects.Effects.Glimmer;
+
+///
+public sealed partial class AffectsGlimmer : EntityEffectBase
+{
+ ///
+ /// Amount that is added or subtracted from glimmer.
+ ///
+ [DataField]
+ public int Amount = 1;
+
+ public override string? EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
+ => Loc.GetString("reagent-effect-guidebook-change-glimmer-reaction-effect", ("chance", Probability),
+ ("amount", Amount));
+}
diff --git a/Content.Shared/_DV/EntityEffects/Effects/InPainEntityEffectSystem.cs b/Content.Shared/_DV/EntityEffects/Effects/Pain/InPainEntityEffectSystem.cs
similarity index 95%
rename from Content.Shared/_DV/EntityEffects/Effects/InPainEntityEffectSystem.cs
rename to Content.Shared/_DV/EntityEffects/Effects/Pain/InPainEntityEffectSystem.cs
index 3bd90767e5..b3e1d7f609 100644
--- a/Content.Shared/_DV/EntityEffects/Effects/InPainEntityEffectSystem.cs
+++ b/Content.Shared/_DV/EntityEffects/Effects/Pain/InPainEntityEffectSystem.cs
@@ -3,7 +3,7 @@ using Content.Shared.EntityEffects;
using Content.Shared.StatusEffect;
using Robust.Shared.Prototypes;
-namespace Content.Shared._DV.EntityEffects.Effects;
+namespace Content.Shared._DV.EntityEffects.Effects.Pain;
// TODO: When Pain is moved to new Status, make this use StatusEffectsContainerComponent.
///
diff --git a/Content.Shared/_DV/EntityEffects/Effects/SuppressPainEntityEffectSystem.cs b/Content.Shared/_DV/EntityEffects/Effects/Pain/SuppressPainEntityEffectSystem.cs
similarity index 96%
rename from Content.Shared/_DV/EntityEffects/Effects/SuppressPainEntityEffectSystem.cs
rename to Content.Shared/_DV/EntityEffects/Effects/Pain/SuppressPainEntityEffectSystem.cs
index 74ad77c5c2..5522deb322 100644
--- a/Content.Shared/_DV/EntityEffects/Effects/SuppressPainEntityEffectSystem.cs
+++ b/Content.Shared/_DV/EntityEffects/Effects/Pain/SuppressPainEntityEffectSystem.cs
@@ -3,7 +3,7 @@ using Content.Shared.EntityEffects;
using Content.Shared.StatusEffect;
using Robust.Shared.Prototypes;
-namespace Content.Shared._DV.EntityEffects.Effects;
+namespace Content.Shared._DV.EntityEffects.Effects.Pain;
// TODO: When Pain is moved to new Status, make this use StatusEffectsContainerComponent.
///
diff --git a/Content.Shared/_DV/EntityEffects/Effects/Psionics/RemovePsionicAbilitiesEntityEffect.cs b/Content.Shared/_DV/EntityEffects/Effects/Psionics/RemovePsionicAbilitiesEntityEffect.cs
new file mode 100644
index 0000000000..0cf5405aca
--- /dev/null
+++ b/Content.Shared/_DV/EntityEffects/Effects/Psionics/RemovePsionicAbilitiesEntityEffect.cs
@@ -0,0 +1,11 @@
+using Content.Shared.EntityEffects;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared._DV.EntityEffects.Effects.Psionics;
+
+///
+public sealed partial class RemovePsionicAbilities : EntityEffectBase
+{
+ public override string? EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
+ => Loc.GetString("reagent-effect-guidebook-chem-remove-psionic", ("chance", Probability));
+}
diff --git a/Content.Shared/_DV/EntityEffects/Effects/Psionics/RerollPsionicAbilitiesEntityEffect.cs b/Content.Shared/_DV/EntityEffects/Effects/Psionics/RerollPsionicAbilitiesEntityEffect.cs
new file mode 100644
index 0000000000..90365a87b7
--- /dev/null
+++ b/Content.Shared/_DV/EntityEffects/Effects/Psionics/RerollPsionicAbilitiesEntityEffect.cs
@@ -0,0 +1,17 @@
+using Content.Shared.EntityEffects;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared._DV.EntityEffects.Effects.Psionics;
+
+///
+public sealed partial class RerollPsionicAbilities : EntityEffectBase
+{
+ ///
+ /// Reroll multiplier.
+ ///
+ [DataField("bonusMultiplier")]
+ public float BonusMultiplier = 1f;
+
+ public override string? EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
+ => Loc.GetString("reagent-effect-guidebook-chem-reroll-psionic", ("chance", Probability));
+}
diff --git a/Content.Shared/_DV/Pain/SharedPainSystem.cs b/Content.Shared/_DV/Pain/SharedPainSystem.cs
index b4addc0881..ab0709a14c 100644
--- a/Content.Shared/_DV/Pain/SharedPainSystem.cs
+++ b/Content.Shared/_DV/Pain/SharedPainSystem.cs
@@ -1,17 +1,27 @@
using Content.Shared.StatusEffect;
+using Content.Shared.Popups;
using Robust.Shared.Prototypes;
+using Robust.Shared.Random;
+using Robust.Shared.Timing;
namespace Content.Shared._DV.Pain;
public abstract class SharedPainSystem : EntitySystem
{
+ [Dependency] private readonly IGameTiming _timing = default!;
+ [Dependency] private readonly IPrototypeManager _prototype = default!;
+ [Dependency] private readonly IRobustRandom _random = default!;
+ [Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly StatusEffectsSystem _statusEffects = default!;
public ProtoId StatusEffectKey = "InPain";
- protected abstract void UpdatePainSuppression(Entity ent, float duration, PainSuppressionLevel level);
+ public override void Initialize()
+ {
+ SubscribeLocalEvent(OnMapInit);
+ }
- public virtual void TryApplyPain(EntityUid uid, float painTime, StatusEffectsComponent? status = null)
+ public void TryApplyPain(EntityUid uid, float painTime, StatusEffectsComponent? status = null)
{
if (!Resolve(uid, ref status, false))
return;
@@ -26,13 +36,83 @@ public abstract class SharedPainSystem : EntitySystem
}
}
- public virtual void TrySuppressPain(EntityUid uid, float duration, PainSuppressionLevel level = PainSuppressionLevel.Normal)
+ public void TrySuppressPain(EntityUid uid, float duration, PainSuppressionLevel level = PainSuppressionLevel.Normal)
{
if (!TryComp(uid, out var comp))
return;
UpdatePainSuppression((uid, comp), duration, level);
}
+
+ protected void UpdatePainSuppression(Entity ent, float duration, PainSuppressionLevel level)
+ {
+ var curTime = _timing.CurTime;
+ var newEndTime = curTime + TimeSpan.FromSeconds(duration);
+
+ // Only update if this would extend the suppression
+ if (newEndTime <= ent.Comp.SuppressionEndTime)
+ return;
+
+ ent.Comp.LastPainkillerTime = curTime;
+ ent.Comp.SuppressionEndTime = newEndTime;
+ UpdateSuppressed(ent);
+ }
+
+ private void UpdateSuppressed(Entity ent)
+ {
+ ent.Comp.Suppressed = (_timing.CurTime < ent.Comp.SuppressionEndTime);
+ Dirty(ent);
+ }
+
+
+ private void OnMapInit(Entity ent, ref MapInitEvent args)
+ {
+ ent.Comp.NextUpdateTime = _timing.CurTime;
+ ent.Comp.NextPopupTime = _timing.CurTime;
+ }
+
+ private void ShowPainPopup(Entity ent)
+ {
+ if (!_prototype.TryIndex(ent.Comp.DatasetPrototype, out var dataset))
+ return;
+
+ var effects = dataset.Values;
+ if (effects.Count == 0)
+ return;
+
+ var effect = _random.Pick(effects);
+ _popup.PopupEntity(Loc.GetString(effect), ent, ent);
+
+ // Set next popup time
+ var delay = _random.NextFloat(ent.Comp.MinimumPopupDelay, ent.Comp.MaximumPopupDelay);
+ ent.Comp.NextPopupTime = _timing.CurTime + TimeSpan.FromSeconds(delay);
+ }
+
+ public override void Update(float frameTime)
+ {
+ base.Update(frameTime);
+
+ var curTime = _timing.CurTime;
+ var query = EntityQueryEnumerator();
+
+ while (query.MoveNext(out var uid, out var component))
+ {
+ if (curTime < component.NextUpdateTime)
+ continue;
+
+ var ent = new Entity(uid, component);
+
+ if (component.Suppressed)
+ {
+ UpdateSuppressed(ent);
+ }
+ else if (curTime >= component.NextPopupTime)
+ {
+ ShowPainPopup(ent);
+ }
+ component.NextUpdateTime = curTime + TimeSpan.FromSeconds(1);
+ }
+ }
}
// Used by the StatusEffect
diff --git a/Resources/Locale/en-US/_Funkystation/reagents/meta/medicine.ftl b/Resources/Locale/en-US/_Funkystation/reagents/meta/medicine.ftl
index 968d31dc81..4ded799f73 100644
--- a/Resources/Locale/en-US/_Funkystation/reagents/meta/medicine.ftl
+++ b/Resources/Locale/en-US/_Funkystation/reagents/meta/medicine.ftl
@@ -31,9 +31,6 @@ reagent-desc-penteticacid = A complicated anti-toxin solution that quickly flush
reagent-name-granibitulari = granibitulari
reagent-desc-granibitulari = A common, slow-acting medicine for all types of injuries.
-reagent-name-pielovene = pielovene
-reagent-desc-pielovene = A honk-spectrum anti-toxin, which treats a broad variety of damage in clowns. Harmful to mimes.
-
reagent-name-hypothium = hypothium
reagent-desc-hypothium = A difficult to synthesize drug used to cure most wounds and clot blood.