diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm
index ff74b59b712..fae6eb72e4e 100644
--- a/code/game/machinery/computer/HolodeckControl.dm
+++ b/code/game/machinery/computer/HolodeckControl.dm
@@ -52,6 +52,7 @@
dat += "(Disable Safety Protocols?)
"
dat += "
"
dat += "Safety Protocols are ENABLED
"
+
user << browse(dat, "window=computer;size=400x500")
onclose(user, "computer")
@@ -119,6 +120,8 @@
/obj/machinery/computer/HolodeckControl/attackby(var/obj/item/weapon/D as obj, var/mob/user as mob)
+//Warning, uncommenting this can have concequences. For example, deconstructing the computer may cause holographic eswords to never derez
+
/* if(istype(D, /obj/item/weapon/screwdriver))
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
@@ -166,6 +169,30 @@
// if(target)
// loadProgram(target)
+//This could all be done better, but it works for now.
+/obj/machinery/computer/HolodeckControl/Del()
+ emergencyShutdown()
+ ..()
+
+/obj/machinery/computer/HolodeckControl/meteorhit(var/obj/O as obj)
+ emergencyShutdown()
+ ..()
+
+
+/obj/machinery/computer/HolodeckControl/emp_act(severity)
+ emergencyShutdown()
+ ..()
+
+
+/obj/machinery/computer/HolodeckControl/ex_act(severity)
+ emergencyShutdown()
+ ..()
+
+
+/obj/machinery/computer/HolodeckControl/blob_act()
+ emergencyShutdown()
+ ..()
+
/obj/machinery/computer/HolodeckControl/process()
@@ -282,7 +309,18 @@
T.hotspot_expose(50000,50000,1)
+/obj/machinery/computer/HolodeckControl/proc/emergencyShutdown()
+ //Get rid of any items
+ for(var/item in holographic_items)
+ derez(item)
+ //Turn it back to the regular non-holographic room
+ target = locate(/area/holodeck/source_plating)
+ if(target)
+ loadProgram(target)
+ var/area/targetsource = locate(/area/holodeck/source_plating)
+ targetsource.copy_contents_to(linkedholodeck , 1)
+ active = 0
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 114c569fdca..06ccb4af05f 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -243,7 +243,19 @@
/mob/proc/show_inv(mob/user as mob)
user.machine = src
- var/dat = text("\n[]
\n\tHead(Mask): []
\n\tLeft Hand: []
\n\tRight Hand: []
\n\tBack: []
\n\t[]
\n\t[]
\n\t[]
\n\tEmpty Pockets
\nClose
\n", name, src, (wear_mask ? text("[]", wear_mask) : "Nothing"), src, (l_hand ? text("[]", l_hand) : "Nothing"), src, (r_hand ? text("[]", r_hand) : "Nothing"), src, (back ? text("[]", back) : "Nothing"), ((istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""), (internal ? text("Remove Internal", src) : ""), (handcuffed ? text("Handcuffed", src) : text("Not Handcuffed", src)), src, user, name)
+ var/dat = {"
+
[name]
+