using Content.Server.Storage.Components;
using Content.Server.Storage.EntitySystems;
+using Content.Shared.Access.Components;
using Content.Shared.CardboardBox;
using Content.Shared.CardboardBox.Components;
using Content.Shared.Damage;
SubscribeLocalEvent<CardboardBoxComponent, StorageAfterOpenEvent>(AfterStorageOpen);
SubscribeLocalEvent<CardboardBoxComponent, StorageBeforeOpenEvent>(BeforeStorageOpen);
SubscribeLocalEvent<CardboardBoxComponent, StorageAfterCloseEvent>(AfterStorageClosed);
- SubscribeLocalEvent<CardboardBoxComponent, ActivateInWorldEvent>(OnInteracted);
+ SubscribeLocalEvent<CardboardBoxComponent, GetAdditionalAccessEvent>(OnGetAdditionalAccess);
+ SubscribeLocalEvent<CardboardBoxComponent, ActivateInWorldEvent>(OnInteracted);
SubscribeLocalEvent<CardboardBoxComponent, InteractedNoHandEvent>(OnNoHandInteracted);
SubscribeLocalEvent<CardboardBoxComponent, EntInsertedIntoContainerMessage>(OnEntInserted);
SubscribeLocalEvent<CardboardBoxComponent, EntRemovedFromContainerMessage>(OnEntRemoved);
SubscribeLocalEvent<CardboardBoxComponent, DamageChangedEvent>(OnDamage);
}
- private void OnInteracted(EntityUid uid, CardboardBoxComponent component, ActivateInWorldEvent args)
+ private void OnInteracted(EntityUid uid, CardboardBoxComponent component, ActivateInWorldEvent args)
{
- if (!TryComp<EntityStorageComponent>(uid, out var box))
+ if (!TryComp<EntityStorageComponent>(uid, out var box))
return;
args.Handled = true;
_storage.ToggleOpen(args.User, uid, box);
- if (box.Contents.Contains(args.User) && !box.Open)
- {
- _mover.SetRelay(args.User, uid);
- component.Mover = args.User;
- }
+ if (box.Contents.Contains(args.User) && !box.Open)
+ {
+ _mover.SetRelay(args.User, uid);
+ component.Mover = args.User;
+ }
}
private void OnNoHandInteracted(EntityUid uid, CardboardBoxComponent component, InteractedNoHandEvent args)
_storage.OpenStorage(uid);
}
+ private void OnGetAdditionalAccess(EntityUid uid, CardboardBoxComponent component, ref GetAdditionalAccessEvent args)
+ {
+ if (component.Mover == null)
+ return;
+ args.Entities.Add(component.Mover.Value);
+ }
+
private void BeforeStorageOpen(EntityUid uid, CardboardBoxComponent component, ref StorageBeforeOpenEvent args)
{
- if (component.Quiet)
- return;
+ if (component.Quiet)
+ return;
//Play effect & sound
if (component.Mover != null)
if (component.Mover == null)
{
_mover.SetRelay(args.Entity, uid);
- component.Mover = args.Entity;
+ component.Mover = args.Entity;
}
}