diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index 45629caf16..e97215f646 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -542,7 +542,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem if (entry == default || component is not DisposalUnitComponent sDisposals) { component.Engaged = false; - Dirty(component); + Dirty(uid, component); return false; } @@ -550,7 +550,10 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem _disposalTubeSystem.TryInsert(entry, sDisposals, beforeFlushArgs.Tags); - component.NextPressurized = GameTiming.CurTime + TimeSpan.FromSeconds(1f / PressurePerSecond); + component.NextPressurized = GameTiming.CurTime; + if (!component.DisablePressure) + component.NextPressurized += TimeSpan.FromSeconds(1f / PressurePerSecond); + component.Engaged = false; // stop queuing NOW component.NextFlush = null; @@ -558,7 +561,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem UpdateVisualState(uid, component, true); UpdateInterface(uid, component, component.Powered); - Dirty(component); + Dirty(uid, component); return true; } @@ -674,7 +677,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem component.RecentlyEjected.Add(toRemove); UpdateVisualState(uid, component); - Dirty(component); + Dirty(uid, component); } public bool CanFlush(EntityUid unit, SharedDisposalUnitComponent component) @@ -689,7 +692,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem component.Engaged = true; UpdateVisualState(uid, component); UpdateInterface(uid, component, component.Powered); - Dirty(component); + Dirty(uid, component); if (!CanFlush(uid, component)) return; @@ -713,7 +716,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem UpdateVisualState(uid, component); UpdateInterface(uid, component, component.Powered); - Dirty(component); + Dirty(uid, component); } /// diff --git a/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs b/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs index 111de81e6a..4b867c639f 100644 --- a/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs +++ b/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs @@ -55,7 +55,7 @@ public abstract partial class SharedDisposalUnitComponent : Component /// Removes the pressure requirement for flushing. /// [DataField("disablePressure"), ViewVariables(VVAccess.ReadWrite)] - public bool DisablePressure = false; + public bool DisablePressure; /// /// Last time that an entity tried to exit this disposal unit. diff --git a/Content.Shared/Disposal/SharedDisposalUnitSystem.cs b/Content.Shared/Disposal/SharedDisposalUnitSystem.cs index b69e674f21..f0c32c5ee0 100644 --- a/Content.Shared/Disposal/SharedDisposalUnitSystem.cs +++ b/Content.Shared/Disposal/SharedDisposalUnitSystem.cs @@ -80,8 +80,7 @@ public abstract class SharedDisposalUnitSystem : EntitySystem var otherBody = args.OtherEntity; // Items dropped shouldn't collide but items thrown should - if (EntityManager.HasComponent(otherBody) && - !EntityManager.HasComponent(otherBody)) + if (HasComp(otherBody) && !HasComp(otherBody)) { args.Cancelled = true; return; @@ -110,25 +109,20 @@ public abstract class SharedDisposalUnitSystem : EntitySystem public virtual bool CanInsert(EntityUid uid, SharedDisposalUnitComponent component, EntityUid entity) { - if (!EntityManager.GetComponent(uid).Anchored) + if (!Transform(uid).Anchored) return false; // TODO: Probably just need a disposable tag. - if (!EntityManager.TryGetComponent(entity, out ItemComponent? storable) && - !EntityManager.HasComponent(entity)) - { + var storable = HasComp(entity); + if (!storable && !HasComp(entity)) return false; - } //Check if the entity is a mob and if mobs can be inserted if (TryComp(entity, out var damageState) && !component.MobsCanEnter) return false; - if (EntityManager.TryGetComponent(entity, out PhysicsComponent? physics) && - (physics.CanCollide || storable != null)) - { + if (TryComp(entity, out var physics) && (physics.CanCollide || storable)) return true; - } return damageState != null && (!component.MobsCanEnter || _mobState.IsDead(entity, damageState)); }