private void OnHandPickUp(Entity<GluedComponent> entity, ref GotEquippedHandEvent args)
{
- EnsureComp<UnremoveableComponent>(entity);
+ var comp = EnsureComp<UnremoveableComponent>(entity);
+ comp.DeleteOnDrop = false;
entity.Comp.Until = _timing.CurTime + entity.Comp.Duration;
}
}
if (!_containerSystem.TryGetContainingContainer(uid, out var container) || !_actionBlockerSystem.CanInteract(uid, container.Owner))
return;
+ // Make sure there's nothing stopped the removal (like being glued)
+ if (!_containerSystem.CanRemove(uid, container))
+ {
+ _popupSystem.PopupEntity(Loc.GetString("escape-inventory-component-failed-resisting"), uid, uid);
+ return;
+ }
+
// Contested
if (_handsSystem.IsHolding(container.Owner, uid, out var inHand))
{
contestResults = 1;
if (contestResults >= MaximumMassDisadvantage)
+ {
+ _popupSystem.PopupEntity(Loc.GetString("escape-inventory-component-failed-resisting"), uid, uid);
return;
+ }
AttemptEscape(uid, container.Owner, component, contestResults);
return;
if (!_doAfterSystem.TryStartDoAfter(doAfterEventArgs, out component.DoAfter))
return;
- Dirty(user, component);
_popupSystem.PopupEntity(Loc.GetString("escape-inventory-component-start-resisting"), user, user);
_popupSystem.PopupEntity(Loc.GetString("escape-inventory-component-start-resisting-target"), container, container);
}
private void OnEscape(EntityUid uid, CanEscapeInventoryComponent component, EscapeInventoryEvent args)
{
component.DoAfter = null;
- Dirty(uid, component);
if (args.Handled || args.Cancelled)
return;