diff --git a/code/modules/reagents/reagents/dispenser.dm b/code/modules/reagents/reagents/dispenser.dm index 3a14d62a35..6b4becfc53 100644 --- a/code/modules/reagents/reagents/dispenser.dm +++ b/code/modules/reagents/reagents/dispenser.dm @@ -587,6 +587,7 @@ if(O.unacidable || is_type_in_list(O, GLOB.item_digestion_blacklist)) //CHOMPEdit End return if((istype(O, /obj/item) || istype(O, /obj/effect/plant)) && (volume > meltdose)) + eject_container_from_machines(O) var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc) I.desc = "Looks like this was \an [O] some time ago." for(var/mob/M in viewers(5, O)) @@ -612,6 +613,21 @@ L.adjustFireLoss(volume * power * 0.2) remove_self(volume) //CHOMPAdd End +/// Eject from chemdispenser if melted inside of one. Handled here with typechecks instead of adding logic to every machine for acid's snowflake behavior +/datum/reagent/acid/proc/eject_container_from_machines(obj/melting_object) + if(istype(melting_object.loc, /obj/machinery/chemical_dispenser)) + var/obj/machinery/chemical_dispenser/dispenser = melting_object.loc + dispenser.container.forceMove(get_turf(dispenser)) + dispenser.container = null + dispenser.update_icon() + return + if(istype(melting_object.loc, /obj/machinery/chem_master)) + var/obj/machinery/chem_master/mixer = melting_object.loc + mixer.beaker.forceMove(get_turf(mixer)) + mixer.beaker = null + mixer.update_icon() + return + /datum/reagent/silicon name = REAGENT_SILICON id = REAGENT_ID_SILICON