diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 561a72edb3..b259fe1ded 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -15,6 +15,11 @@
..()
findsleeper()
+/obj/machinery/sleep_console/Destroy()
+ if(sleeper)
+ sleeper.console = null
+ return ..()
+
/obj/machinery/sleep_console/proc/findsleeper()
spawn(5)
var/obj/machinery/sleeper/sleepernew = null
@@ -34,16 +39,18 @@
if(..())
return 1
+ if(!sleeper)
+ findsleeper()
+ if(!sleeper)
+ to_chat(user, "Sleeper not found!")
+ return
+
if(sleeper.panel_open)
to_chat(user, "Close the maintenance panel first.")
return
- if(!sleeper)
- findsleeper()
if(sleeper)
return ui_interact(user)
- else
- to_chat(user, "Sleeper not found!")
/obj/machinery/sleep_console/attackby(var/obj/item/I, var/mob/user)
if(computer_deconstruction_screwdriver(user, I))
@@ -155,7 +162,8 @@
anchored = 1
circuit = /obj/item/weapon/circuitboard/sleeper
var/mob/living/carbon/human/occupant = null
- var/list/available_chemicals = list("inaprovaline" = "Inaprovaline", "paracetamol" = "Paracetamol", "anti_toxin" = "Dylovene", "dexalin" = "Dexalin")
+ var/list/available_chemicals = list()
+ var/list/base_chemicals = list("inaprovaline" = "Inaprovaline", "paracetamol" = "Paracetamol", "anti_toxin" = "Dylovene", "dexalin" = "Dexalin")
var/obj/item/weapon/reagent_containers/glass/beaker = null
var/filtering = 0
var/obj/machinery/sleep_console/console
@@ -180,13 +188,19 @@
component_parts += new /obj/item/weapon/reagent_containers/syringe(src)
component_parts += new /obj/item/stack/material/glass/reinforced(src, 2)
- RefreshParts(0)
+ RefreshParts()
-/obj/machinery/sleeper/RefreshParts(var/limited = 1)
+/obj/machinery/sleeper/Destroy()
+ if(console)
+ console.sleeper = null
+ return ..()
+
+/obj/machinery/sleeper/RefreshParts(var/limited = 0)
var/man_rating = 0
var/cap_rating = 0
- available_chemicals = initial(available_chemicals)
+ available_chemicals.Cut()
+ available_chemicals = base_chemicals.Copy()
idle_power_usage = initial(idle_power_usage)
active_power_usage = initial(active_power_usage)
@@ -204,14 +218,14 @@
if(istype(P, /obj/item/weapon/stock_parts/manipulator))
man_rating += P.rating - 1
- var/new_chemicals = list()
+ var/list/new_chemicals = list()
if(man_rating >= 4) // Alien tech.
- var/reag_ID = pickweight(
+ var/reag_ID = pickweight(list(
"healing_nanites" = 10,
"shredding_nanites" = 5,
"irradiated_nanites" = 5,
- "neurophage_nanites" = 2
+ "neurophage_nanites" = 2)
)
new_chemicals[reag_ID] = "Nanite"
if(man_rating >= 3) // Anomalous tech.
@@ -221,7 +235,8 @@
if(man_rating >= 1) // Tier 2.
new_chemicals["leporazine"] = "Leporazine"
- available_chemicals += new_chemicals
+ if(new_chemicals.len)
+ available_chemicals += new_chemicals
return
/obj/machinery/sleeper/Initialize()
@@ -258,11 +273,8 @@
var/obj/item/weapon/grab/G = I
if(G.affecting)
go_in(G.affecting, user)
- else if(default_deconstruction_screwdriver(user, I))
return
- else if(default_deconstruction_crowbar(user, I))
- return
- else if(istype(I, /obj/item/weapon/reagent_containers/glass))
+ if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(!beaker)
beaker = I
user.drop_item()
@@ -271,6 +283,13 @@
else
to_chat(user, "\The [src] has a beaker already.")
return
+ if(!occupant)
+ if(default_deconstruction_screwdriver(user, I))
+ return
+ if(default_deconstruction_crowbar(user, I))
+ return
+ if(default_part_replacement(user, I))
+ return
/obj/machinery/sleeper/verb/move_eject()
set name = "Eject occupant"
@@ -397,4 +416,4 @@
/obj/machinery/sleeper/survival_pod/Initialize()
..()
- RefreshParts()
+ RefreshParts(1)
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index c101202b38..1e3afe8150 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -24,6 +24,11 @@
component_parts += new /obj/item/stack/material/glass/reinforced(src, 2)
RefreshParts()
+/obj/machinery/bodyscanner/Destroy()
+ if(console)
+ console.scanner = null
+ return ..()
+
/obj/machinery/bodyscanner/power_change()
..()
if(!(stat & (BROKEN|NOPOWER)))
@@ -32,11 +37,7 @@
set_light(0)
/obj/machinery/bodyscanner/attackby(var/obj/item/G, user as mob)
- if(default_deconstruction_screwdriver(user, G))
- return
- else if(default_deconstruction_crowbar(user, G))
- return
- else if(istype(G, /obj/item/weapon/grab))
+ if(istype(G, /obj/item/weapon/grab))
var/obj/item/weapon/grab/H = G
if(panel_open)
to_chat(user, "Close the maintenance panel first.")
@@ -61,6 +62,11 @@
update_icon() //icon_state = "body_scanner_1" //VOREStation Edit - Health display for consoles with light and such.
add_fingerprint(user)
qdel(G)
+ if(!occupant)
+ if(default_deconstruction_screwdriver(user, G))
+ return
+ if(default_deconstruction_crowbar(user, G))
+ return
/obj/machinery/bodyscanner/MouseDrop_T(mob/living/carbon/O, mob/user as mob)
if(!istype(O))
@@ -176,6 +182,11 @@
..()
findscanner()
+/obj/machinery/body_scanconsole/Destroy()
+ if(scanner)
+ scanner.console = null
+ return ..()
+
/obj/machinery/body_scanconsole/attackby(var/obj/item/I, var/mob/user)
if(computer_deconstruction_screwdriver(user, I))
return
@@ -245,18 +256,18 @@
if(stat & (NOPOWER|BROKEN))
return
+ if(!scanner)
+ findscanner()
+ if(!scanner)
+ to_chat(user, "Scanner not found!")
+ return
+
if (scanner.panel_open)
to_chat(user, "Close the maintenance panel first.")
return
- if(!scanner)
- findscanner()
- if(scanner)
- return ui_interact(user)
- else if(scanner)
+ if(scanner)
return ui_interact(user)
- else
- to_chat(user, "Scanner not found!")
/obj/machinery/body_scanconsole/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
var/data[0]