diff --git a/Content.Server/Foldable/FoldableSystem.cs b/Content.Server/Foldable/FoldableSystem.cs index b9f7b46d78..c080b188b2 100644 --- a/Content.Server/Foldable/FoldableSystem.cs +++ b/Content.Server/Foldable/FoldableSystem.cs @@ -19,7 +19,8 @@ namespace Content.Server.Foldable SubscribeLocalEvent(OnFoldableOpenAttempt); SubscribeLocalEvent>(AddFoldVerb); - SubscribeLocalEvent(OnEntityStorageInsertAttempt); + SubscribeLocalEvent(OnStoreThisAttempt); + } private void OnFoldableOpenAttempt(EntityUid uid, FoldableComponent component, StorageOpenAttemptEvent args) @@ -87,9 +88,9 @@ namespace Content.Server.Foldable strap.Enabled = !component.IsFolded; } - public void OnEntityStorageInsertAttempt(EntityUid uid, FoldableComponent comp, InsertIntoEntityStorageAttemptEvent args) + public void OnStoreThisAttempt(EntityUid uid, FoldableComponent comp, StoreThisAttemptEvent args) { - if (!comp.IsFolded) + if (comp.IsFolded) args.Cancel(); } diff --git a/Content.Server/Storage/Components/EntityStorageComponent.cs b/Content.Server/Storage/Components/EntityStorageComponent.cs index 45719a0634..71f7fb0ed3 100644 --- a/Content.Server/Storage/Components/EntityStorageComponent.cs +++ b/Content.Server/Storage/Components/EntityStorageComponent.cs @@ -216,14 +216,13 @@ namespace Content.Server.Storage.Components // 4. items can always be eaten unless a previous law prevents it // 5. if this is NOT AN ITEM, then mobs can always be eaten unless unless a previous law prevents it // 6. if this is an item, then mobs must only be eaten if some other component prevents pick-up interactions while a mob is inside (e.g. foldable) - var attemptEvent = new InsertIntoEntityStorageAttemptEvent(); _entMan.EventBus.RaiseLocalEvent(entity, attemptEvent); if (attemptEvent.Cancelled) return false; // checks - + // TODO: Make the others sub to it. var targetIsItem = _entMan.HasComponent(entity); var targetIsMob = _entMan.HasComponent(entity); var storageIsItem = _entMan.HasComponent(Owner); @@ -239,9 +238,14 @@ namespace Content.Server.Storage.Components { if (!storageIsItem) allowedToEat = true; + else + { + var storeEv = new StoreThisAttemptEvent(); + _entMan.EventBus.RaiseLocalEvent(Owner, storeEv); + allowedToEat = !storeEv.Cancelled; + } } - _entMan.EventBus.RaiseLocalEvent(entity, allowedToEat); return allowedToEat; } @@ -367,6 +371,11 @@ namespace Content.Server.Storage.Components public sealed class InsertIntoEntityStorageAttemptEvent : CancellableEntityEventArgs { + } + + public sealed class StoreThisAttemptEvent : CancellableEntityEventArgs + { + } public sealed class StorageOpenAttemptEvent : CancellableEntityEventArgs { diff --git a/Content.Shared/Foldable/SharedFoldableSystem.cs b/Content.Shared/Foldable/SharedFoldableSystem.cs index 77487b9924..27603d4f2d 100644 --- a/Content.Shared/Foldable/SharedFoldableSystem.cs +++ b/Content.Shared/Foldable/SharedFoldableSystem.cs @@ -47,7 +47,7 @@ public abstract class SharedFoldableSystem : EntitySystem public virtual void SetFolded(FoldableComponent component, bool folded) { component.IsFolded = folded; - component.Dirty(); + Dirty(component); if (TryComp(component.Owner, out AppearanceComponent? appearance)) appearance.SetData(FoldKey, folded);