Improves the way chem machines handle qdel, fixes some runtimes (#33415)

This commit is contained in:
ACCount
2017-12-10 22:24:42 +03:00
committed by CitadelStationBot
parent e18457f92e
commit fd6a386779
4 changed files with 73 additions and 37 deletions
@@ -59,6 +59,11 @@
recharge()
dispensable_reagents = sortList(dispensable_reagents)
/obj/machinery/chem_dispenser/Destroy()
QDEL_NULL(beaker)
QDEL_NULL(cell)
return ..()
/obj/machinery/chem_dispenser/process()
if(recharged < 0)
@@ -303,6 +308,7 @@
if(beaker)
beaker.forceMove(drop_location())
beaker = null
return ..()
/obj/machinery/chem_dispenser/drinks
name = "soda dispenser"
@@ -13,6 +13,28 @@
var/heater_coefficient = 0.1
var/on = FALSE
/obj/machinery/chem_heater/Destroy()
QDEL_NULL(beaker)
return ..()
/obj/machinery/chem_heater/handle_atom_del(atom/A)
. = ..()
if(A == beaker)
beaker = null
update_icon()
/obj/machinery/chem_heater/update_icon()
if(beaker)
icon_state = "mixer1b"
else
icon_state = "mixer0b"
/obj/machinery/chem_heater/proc/eject_beaker()
if(beaker)
beaker.forceMove(drop_location())
beaker = null
update_icon()
/obj/machinery/chem_heater/RefreshParts()
heater_coefficient = 0.1
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
@@ -52,12 +74,13 @@
return
beaker = I
to_chat(user, "<span class='notice'>You add [I] to [src].</span>")
icon_state = "mixer1b"
update_icon()
return
return ..()
/obj/machinery/chem_heater/on_deconstruction()
eject_beaker()
return ..()
/obj/machinery/chem_heater/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
@@ -108,10 +131,3 @@
on = FALSE
eject_beaker()
. = TRUE
/obj/machinery/chem_heater/proc/eject_beaker()
if(beaker)
beaker.forceMove(drop_location())
beaker.reagents.handle_reactions()
beaker = null
icon_state = "mixer0b"
@@ -13,7 +13,7 @@
var/obj/item/reagent_containers/beaker = null
var/obj/item/storage/pill_bottle/bottle = null
var/mode = 1
var/condi = 0
var/condi = FALSE
var/screen = "home"
var/analyzeVars[0]
var/useramount = 30 // Last used amount
@@ -23,6 +23,11 @@
add_overlay("waitlight")
. = ..()
/obj/machinery/chem_master/Destroy()
QDEL_NULL(beaker)
QDEL_NULL(bottle)
return ..()
/obj/machinery/chem_master/RefreshParts()
reagents.maximum_volume = 0
for(var/obj/item/reagent_containers/glass/beaker/B in component_parts)
@@ -44,10 +49,22 @@
if(A == beaker)
beaker = null
reagents.clear_reagents()
icon_state = "mixer0"
update_icon()
else if(A == bottle)
bottle = null
/obj/machinery/chem_master/update_icon()
if(beaker)
icon_state = "mixer1"
else
icon_state = "mixer0"
/obj/machinery/chem_master/proc/eject_beaker()
if(beaker)
beaker.forceMove(drop_location())
adjust_item_drop_location(beaker)
beaker = null
update_icon()
/obj/machinery/chem_master/blob_act(obj/structure/blob/B)
if (prob(50))
@@ -61,15 +78,6 @@
/obj/machinery/chem_master/attackby(obj/item/I, mob/user, params)
if(default_deconstruction_screwdriver(user, "mixer0_nopower", "mixer0", I))
if(beaker)
beaker.forceMove(drop_location())
adjust_item_drop_location(beaker)
beaker = null
reagents.clear_reagents()
if(bottle)
bottle.forceMove(drop_location())
adjust_item_drop_location(bottle)
bottle = null
return
else if(exchange_parts(user, I))
@@ -94,7 +102,7 @@
beaker = I
to_chat(user, "<span class='notice'>You add [I] to [src].</span>")
src.updateUsrDialog()
icon_state = "mixer1"
update_icon()
else if(!condi && istype(I, /obj/item/storage/pill_bottle))
if(bottle)
@@ -109,6 +117,13 @@
else
return ..()
/obj/machinery/chem_master/on_deconstruction()
eject_beaker()
if(bottle)
bottle.forceMove(drop_location())
adjust_item_drop_location(bottle)
bottle = null
return ..()
/obj/machinery/chem_master/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
@@ -154,13 +169,8 @@
return
switch(action)
if("eject")
if(beaker)
beaker.forceMove(drop_location())
adjust_item_drop_location(beaker)
beaker = null
reagents.clear_reagents()
icon_state = "mixer0"
. = TRUE
eject_beaker()
. = TRUE
if("ejectp")
if(bottle)
@@ -348,7 +358,7 @@
#if DM_VERSION >= 513
#warning 512 is definitely stable now, remove the old code
#endif
#if DM_VERSION >= 512
. += hex2num(md5[i])
#else
@@ -361,4 +371,4 @@
/obj/machinery/chem_master/condimaster
name = "CondiMaster 3000"
desc = "Used to create condiments and other cooking supplies."
condi = 1
condi = TRUE
@@ -25,6 +25,12 @@
QDEL_NULL(beaker)
return ..()
/obj/machinery/computer/pandemic/handle_atom_del(atom/A)
. = ..()
if(A == beaker)
beaker = null
update_icon()
/obj/machinery/computer/pandemic/proc/get_by_index(thing, index)
if(!beaker || !beaker.reagents)
return
@@ -121,9 +127,10 @@
add_overlay("waitlight")
/obj/machinery/computer/pandemic/proc/eject_beaker()
beaker.forceMove(drop_location())
beaker = null
update_icon()
if(beaker)
beaker.forceMove(drop_location())
beaker = null
update_icon()
/obj/machinery/computer/pandemic/ui_interact(mob/user, ui_key = "main", datum/tgui/ui, force_open = FALSE, datum/tgui/master_ui, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
@@ -159,8 +166,7 @@
return
switch(action)
if("eject_beaker")
if(beaker)
eject_beaker()
eject_beaker()
. = TRUE
if("empty_beaker")
if(beaker)
@@ -236,7 +242,5 @@
return ..()
/obj/machinery/computer/pandemic/on_deconstruction()
if(beaker)
beaker.forceMove(drop_location())
beaker = null
eject_beaker()
. = ..()