using Robust.Shared.Containers;
using Robust.Shared.Prototypes;
+using Robust.Shared.Timing;
namespace Content.Shared.Containers;
/// </summary>
public sealed class ContainerCompSystem : EntitySystem
{
+ [Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly IPrototypeManager _proto = default!;
public override void Initialize()
private void OnConRemove(Entity<ContainerCompComponent> ent, ref EntRemovedFromContainerMessage args)
{
- if (args.Container.ID != ent.Comp.Container)
+ if (args.Container.ID != ent.Comp.Container || _timing.ApplyingState)
return;
- if (_proto.TryIndex(ent.Comp.Container, out var entProto))
+ if (_proto.TryIndex(ent.Comp.Proto, out var entProto))
{
- foreach (var entry in entProto.Components.Values)
- {
- RemComp(args.Entity, entry.Component);
- }
+ EntityManager.RemoveComponents(args.Entity, entProto.Components);
}
}
private void OnConInsert(Entity<ContainerCompComponent> ent, ref EntInsertedIntoContainerMessage args)
{
- if (args.Container.ID != ent.Comp.Container)
+ if (args.Container.ID != ent.Comp.Container || _timing.ApplyingState)
return;
if (_proto.TryIndex(ent.Comp.Proto, out var entProto))