diff --git a/Content.Shared/Anomaly/SharedAnomalySystem.cs b/Content.Shared/Anomaly/SharedAnomalySystem.cs index dd07cf0441..b36fec7a02 100644 --- a/Content.Shared/Anomaly/SharedAnomalySystem.cs +++ b/Content.Shared/Anomaly/SharedAnomalySystem.cs @@ -51,13 +51,18 @@ public abstract class SharedAnomalySystem : EntitySystem return; // anomalies are static by default, so we have set them to dynamic to be throwable - _physics.SetBodyType(ent, BodyType.Dynamic, body: body); + // only regular anomalies are static, so the check is meant to filter out things such as infection anomalies, which affect players + if (TryComp(ent, out var physics) && physics.BodyType == BodyType.Static) + _physics.SetBodyType(ent, BodyType.Dynamic, body: body); ChangeAnomalyStability(ent, Random.NextFloat(corePowered.StabilityPerThrow.X, corePowered.StabilityPerThrow.Y), ent.Comp); } private void OnLand(Entity ent, ref LandEvent args) { - // revert back to static + // revert back to static, but only if the object was dynamic (such as thrown anomalies, but not anomaly infected players) + if (!TryComp(ent, out var body) || body.BodyType != BodyType.Dynamic) + return; + _physics.SetBodyType(ent, BodyType.Static); }