From 0bf60e79dc4db23d7388855ebe7f3520d60a3da6 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Sat, 25 Aug 2018 19:50:35 -0700 Subject: [PATCH] Readds medium screens (#39632) Circuits may have deserved many of the nerfs in #39376, but the removal of medium screens was absolutely not one of them. It is one of the only meaningful ways to send feedback to the user, and fills the niche of essentially being a to_chat() that the TTS circuit doesn't do (TTS announces to EVERYBODY within a screen's range, medium screens only announce to the user and anybody adjacent). The main reason for removal was "anti-deaf" circuits. The usefulness of those is only questionably useful at best to begin with, as it is very situational (requires you to have printed and to be carrying the circuit with you and then go deaf and then get into a conversation where the other person is unaware that you are deaf). I don't believe this was even close to enough of a reason to remove one of the only meaningful ways of giving user feedback with circuits. --- .../integrated_electronics/subtypes/output.dm | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 10c76fae92e..0ad2714e283 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -34,6 +34,33 @@ else stuff_to_display = replacetext("[I.data]", eol , "
") +/obj/item/integrated_circuit/output/screen/large + name = "large screen" + desc = "Takes any data type as an input and displays it to anybody near the device when pulsed. \ + It can also be examined to see the last thing it displayed." + icon_state = "screen_medium" + power_draw_per_use = 20 + +/obj/item/integrated_circuit/output/screen/large/do_work() + ..() + + if(isliving(assembly.loc))//this whole block just returns if the assembly is neither in a mobs hands or on the ground + var/mob/living/H = assembly.loc + if(H.get_active_held_item() != assembly && H.get_inactive_held_item() != assembly) + return + else + if(!isturf(assembly.loc)) + return + + var/list/nearby_things = range(0, get_turf(src)) + for(var/mob/M in nearby_things) + var/obj/O = assembly ? assembly : src + to_chat(M, "[icon2html(O.icon, world, O.icon_state)] [stuff_to_display]") + if(assembly) + assembly.investigate_log("displayed \"[html_encode(stuff_to_display)]\" with [type].", INVESTIGATE_CIRCUIT) + else + investigate_log("displayed \"[html_encode(stuff_to_display)]\" as [type].", INVESTIGATE_CIRCUIT) + /obj/item/integrated_circuit/output/light name = "light" desc = "A basic light which can be toggled on/off when pulsed."