A wrong PIN now only locks that specific safe, so the player can
still try opening other safes. Also surfaces remaining attempts and
lock duration in the notify messages.
Distance rejection now says exactly why, the PIN rate-limit shows
remaining seconds, and the client no longer announces pickup success
before the server validates it.
Adds distance validation on placement, PIN attempt rate limiting,
proximity checks on open/pickup, and prevents item loss on pickup
when the safe still has contents.