Fix item cabinet locking while open and locker favoritism (#12508)

Co-authored-by: Moony <moony@hellomouse.net>
Fixes https://github.com/space-wizards/space-station-14/issues/12426
This commit is contained in:
Bright0
2022-12-06 16:59:59 -06:00
committed by GitHub
parent 14599c0a90
commit f55d85a975
4 changed files with 40 additions and 13 deletions

View File

@@ -148,23 +148,14 @@ namespace Content.Server.Lock
/// <summary>
/// Before locking the entity, check whether it's a locker. If is, prevent it from being locked from the inside or while it is open.
/// </summary>
public bool CanToggleLock(EntityUid uid, EntityUid user, EntityStorageComponent? storage = null, bool quiet = true)
public bool CanToggleLock(EntityUid uid, EntityUid user, bool quiet = true)
{
if (!Resolve(uid, ref storage, logMissing: false))
return true;
if (!HasComp<SharedHandsComponent>(user))
return false;
// Cannot lock if the entity is currently opened.
if (storage.Open)
return false;
// Cannot (un)lock from the inside. Maybe a bad idea? Security jocks could trap nerds in lockers?
if (storage.Contents.Contains(user))
return false;
return true;
var ev = new LockToggleAttemptEvent(user, quiet);
RaiseLocalEvent(uid, ref ev, true);
return !ev.Cancelled;
}
private bool HasUserAccess(EntityUid uid, EntityUid user, AccessReaderComponent? reader = null, bool quiet = true)