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); }