// really this should be handled by ItemSlotsSystem, but for whatever reason MachineDeconstructedEvent is server-side? So eh. private void OnSlotsDeconstruct(EntityUid uid, ItemSlotsComponent component, MachineDeconstructedEvent args) { foreach (var slot in component.Slots.Values) { if (slot.EjectOnDeconstruct && slot.Item != null) { slot.ContainerSlot?.Remove(slot.Item.Value); } } }
private void OnDeconstruct(EntityUid uid, EmptyOnMachineDeconstructComponent component, MachineDeconstructedEvent ev) { if (!EntityManager.TryGetComponent <IContainerManager>(uid, out var mComp)) { return; } var baseCoords = EntityManager.GetComponent <TransformComponent>(component.Owner).Coordinates; foreach (var v in component.Containers) { if (mComp.TryGetContainer(v, out var container)) { container.EmptyContainer(true, baseCoords); } } }