From 338bfbf9a0b191143cc2543df534aca9ee5a2b4a Mon Sep 17 00:00:00 2001 From: Francinum <5572280+francinum@users.noreply.github.com> Date: Fri, 15 Sep 2023 20:28:42 -0400 Subject: [PATCH] Saline drips have a valid icon again Update Icon Blocker can now specify what to block specifically. --- code/datums/elements/update_icon_blocker.dm | 16 +++++++++++++--- code/game/machinery/iv_drip.dm | 11 ++++++++--- .../reagents/reagent_containers/glass.dm | 5 ----- icons/obj/iv_drip.dmi | Bin 2903 -> 3968 bytes 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/code/datums/elements/update_icon_blocker.dm b/code/datums/elements/update_icon_blocker.dm index 674b314ec9c1..9f73ba704fa5 100644 --- a/code/datums/elements/update_icon_blocker.dm +++ b/code/datums/elements/update_icon_blocker.dm @@ -1,12 +1,22 @@ //Prevents calling anything in update_icon() like update_icon_state() or update_overlays() -/datum/element/update_icon_blocker/Attach(datum/target) +/datum/element/update_icon_blocker + element_flags = ELEMENT_BESPOKE + id_arg_index = 2 + + /// Set of COMSIG_ATOM_UPDATE_ICON to return. See [signals_atom_main.dm] + var/blocking_flags + +/datum/element/update_icon_blocker/Attach(datum/target, blocking_flags = COMSIG_ATOM_NO_UPDATE_ICON_STATE | COMSIG_ATOM_NO_UPDATE_OVERLAYS) . = ..() - if(!istype(target, /atom)) + if(!isatom(target)) return ELEMENT_INCOMPATIBLE + if(!blocking_flags) + CRASH("Attempted to block icon updates with a null blocking_flags argument. Why?") + src.blocking_flags = blocking_flags RegisterSignal(target, COMSIG_ATOM_UPDATE_ICON, PROC_REF(block_update_icon)) /datum/element/update_icon_blocker/proc/block_update_icon() SIGNAL_HANDLER - return COMSIG_ATOM_NO_UPDATE_ICON_STATE | COMSIG_ATOM_NO_UPDATE_OVERLAYS + return blocking_flags diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 0125f3c207c5..a0cf93cba917 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -24,6 +24,8 @@ var/obj/item/reagent_container ///Set false to block beaker use and instead use an internal reagent holder var/use_internal_storage = FALSE + ///If use_internal_storage is true, this is the created volume of the container + var/internal_storage_volume = 100 ///Typecache of containers we accept var/static/list/drip_containers = typecacheof(list( /obj/item/reagent_containers/blood, @@ -38,7 +40,7 @@ . = ..() update_appearance() if(use_internal_storage) - create_reagents(100, TRANSPARENT) + create_reagents(internal_storage_volume, TRANSPARENT) interaction_flags_machine |= INTERACT_MACHINE_OFFLINE /obj/machinery/iv_drip/Destroy() @@ -312,13 +314,16 @@ desc = "An all-you-can-drip saline canister designed to supply a hospital without running out, with a scary looking pump rigged to inject saline into containers, but filling people directly might be a bad idea." icon_state = "saline" base_icon_state = "saline" + use_internal_storage = TRUE + internal_storage_volume = 5000 density = TRUE inject_only = TRUE /obj/machinery/iv_drip/saline/Initialize(mapload) + AddElement(/datum/element/update_icon_blocker, COMSIG_ATOM_NO_UPDATE_OVERLAYS) . = ..() - reagent_container = new /obj/item/reagent_containers/glass/saline(src) - AddElement(/datum/element/update_icon_blocker) + // Parent call creates our container. Fill it up to max. + reagents.add_reagent(/datum/reagent/medicine/saline_glucose, internal_storage_volume) /obj/machinery/iv_drip/saline/eject_beaker() return diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 52e171e9cd76..253ce6131621 100755 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -385,8 +385,3 @@ grinded = I return to_chat(user, span_warning("You can't grind this!")) - -/obj/item/reagent_containers/glass/saline - name = "saline canister" - volume = 5000 - list_reagents = list(/datum/reagent/medicine/saline_glucose = 5000) diff --git a/icons/obj/iv_drip.dmi b/icons/obj/iv_drip.dmi index 7e06a0c851d2ab7d62dd9ed65a8b25bae56660b4..df9a52b61a482845463e795986d650f2c488e79e 100644 GIT binary patch literal 3968 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 IhEv4<0TZdK{Qv*} literal 2903 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 P$^iRg7*vg|Z~Q+2-%fgC