From 2102398dd1703b3af9a2dcce50953cf49b1bf895 Mon Sep 17 00:00:00 2001 From: Will <7099514+Willburd@users.noreply.github.com> Date: Tue, 14 Jul 2026 17:04:25 -0400 Subject: [PATCH] Acid dispensed into buckets no longer runtimes the machine it is inside of (#19605) * acidable * lets not actually --- code/modules/reagents/reagents/dispenser.dm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/code/modules/reagents/reagents/dispenser.dm b/code/modules/reagents/reagents/dispenser.dm index 1c14a64a245..fa495ec7687 100644 --- a/code/modules/reagents/reagents/dispenser.dm +++ b/code/modules/reagents/reagents/dispenser.dm @@ -559,6 +559,7 @@ if(O.unacidable) 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)) @@ -566,6 +567,21 @@ qdel(O) remove_self(meltdose) // 10 units of acid will not melt EVERYTHING on the tile +/// 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