diff --git a/Content.Server/Explosion/Components/TriggerOnCollideComponent.cs b/Content.Server/Explosion/Components/TriggerOnCollideComponent.cs
index bb5b3b6020..b35a3ebb6a 100644
--- a/Content.Server/Explosion/Components/TriggerOnCollideComponent.cs
+++ b/Content.Server/Explosion/Components/TriggerOnCollideComponent.cs
@@ -5,5 +5,11 @@ namespace Content.Server.Explosion.Components
{
[DataField("fixtureID", required: true)]
public string FixtureID = String.Empty;
+
+ ///
+ /// Doesn't trigger if the other colliding fixture is nonhard.
+ ///
+ [DataField("ignoreOtherNonHard")]
+ public bool IgnoreOtherNonHard = true;
}
}
diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs
index a9b0afa5f1..02f7c0b42e 100644
--- a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs
+++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs
@@ -102,7 +102,7 @@ namespace Content.Server.Explosion.EntitySystems
private void OnTriggerCollide(EntityUid uid, TriggerOnCollideComponent component, ref StartCollideEvent args)
{
- if(args.OurFixture.ID == component.FixtureID)
+ if(args.OurFixture.ID == component.FixtureID && (!component.IgnoreOtherNonHard || args.OtherFixture.Hard))
Trigger(component.Owner);
}
diff --git a/Content.Shared/Teleportation/Systems/LinkedEntitySystem.cs b/Content.Shared/Teleportation/Systems/LinkedEntitySystem.cs
index 3c8e4a7413..bf05e83e8e 100644
--- a/Content.Shared/Teleportation/Systems/LinkedEntitySystem.cs
+++ b/Content.Shared/Teleportation/Systems/LinkedEntitySystem.cs
@@ -40,7 +40,7 @@ public sealed class LinkedEntitySystem : EntitySystem
// Remove any links to this entity when deleted.
foreach (var ent in component.LinkedEntities.ToArray())
{
- if (LifeStage(ent) < EntityLifeStage.Terminating && TryComp(ent, out var link))
+ if (!Deleted(ent) && LifeStage(ent) < EntityLifeStage.Terminating && TryComp(ent, out var link))
{
TryUnlink(uid, ent, component, link);
}