From bdc7e504fb19d5b4c8bd40c13f569e778f9b8eed Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Mon, 30 Apr 2018 20:30:58 -0400 Subject: [PATCH] Redo cryo item storage Fixes #2682, Fixes #2610 Cryo no longer stores any items, only logs for admin use and for player use who cryo'd with what 'important' items. --- code/game/machinery/cryopod.dm | 14 +++++++++----- code/game/machinery/cryopod_vr.dm | 28 +++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index ea4f8c1e69..61d301e2ce 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -94,8 +94,8 @@ dat += "View storage log.
" if(allow_items) dat += "View objects.
" - dat += "Recover object.
" - dat += "Recover all objects.
" + //dat += "Recover object.
" //VOREStation Removal - Just log them. + //dat += "Recover all objects.
" //VOREStation Removal user << browse(dat, "window=cryopod_console") onclose(user, "cryopod_console") @@ -122,8 +122,10 @@ if(!allow_items) return var/dat = "Recently stored objects


" - for(var/obj/item/I in frozen_items) - dat += "[I.name]
" + //VOREStation Edit Start + for(var/I in frozen_items) + dat += "[I]
" + //VOREStation Edit End dat += "
" user << browse(dat, "window=cryoitems") @@ -429,12 +431,14 @@ if(!preserve) qdel(W) else + log_special_item(W,to_despawn) //VOREStation Add + /* VOREStation Removal - We do our own thing. if(control_computer && control_computer.allow_items) control_computer.frozen_items += W W.loc = control_computer //VOREStation Edit else W.forceMove(src.loc) - + VOREStation Removal End */ for(var/obj/structure/B in items) if(istype(B,/obj/structure/bed)) qdel(B) diff --git a/code/game/machinery/cryopod_vr.dm b/code/game/machinery/cryopod_vr.dm index 51fa134ac1..b6aa3e227f 100644 --- a/code/game/machinery/cryopod_vr.dm +++ b/code/game/machinery/cryopod_vr.dm @@ -31,4 +31,30 @@ /obj/machinery/computer/cryopod/dorms name = "residential oversight console" desc = "An interface between visitors and the residential oversight systems tasked with keeping track of all visitors in the residential district." -*/ \ No newline at end of file +*/ + +/obj/machinery/cryopod/proc/log_special_item(var/atom/movable/item,var/mob/to_despawn) + ASSERT(item && to_despawn) + + var/loaded_from_key + var/char_name = to_despawn.name + var/item_name = item.name + + // Best effort key aquisition + if(ishuman(to_despawn)) + var/mob/living/carbon/human/H = to_despawn + if(H.original_player) + loaded_from_key = H.original_player + + if(!loaded_from_key && to_despawn.mind && to_despawn.mind.loaded_from_ckey) + loaded_from_key = to_despawn.mind.loaded_from_ckey + + else + loaded_from_key = "INVALID" + + // Log to harrass them later + log_game("CRYO [loaded_from_key]/([to_despawn.name]) cryo'd with [item_name] ([item.type])") + qdel(item) + + if(control_computer && control_computer.allow_items) + control_computer.frozen_items += "[item_name] ([char_name])"