diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 5d457dfeed..a7ed8e7c11 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -196,10 +196,6 @@ for(var/I in assembly_components) var/obj/item/integrated_circuit/IC = I IC.external_examine(user) - if(istype(IC, /obj/item/integrated_circuit/output/screen)) - var/obj/item/integrated_circuit/output/screen/S - if(S.stuff_to_display) - to_chat(user, "There's a little screen labeled '[S]', which displays '[S.stuff_to_display]'.") if(opened) interact(user) diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 813b77d6c2..62f15d927b 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -302,15 +302,15 @@ var/max_items = 10 /obj/item/integrated_circuit/manipulation/grabber/do_work() - var/turf/T = get_turf(src) + var/atom/movable/acting_object = get_object() + var/turf/T = get_turf(acting_object) var/obj/item/AM = get_pin_data_as_type(IC_INPUT, 1, /obj/item) if(AM) - var/turf/P = get_turf(AM) var/mode = get_pin_data(IC_INPUT, 2) if(mode == 1) - if(P.Adjacent(T)) - if((contents.len < max_items) && AM && (AM.w_class <= max_w_class)) + if(AM.Adjacent(acting_object) && isturf(AM.loc)) + if((contents.len < max_items) && (!max_w_class || AM.w_class <= max_w_class)) AM.forceMove(src) if(mode == 0) if(contents.len) @@ -372,11 +372,14 @@ var/target_y_rel = round(get_pin_data(IC_INPUT, 2)) var/obj/item/A = get_pin_data_as_type(IC_INPUT, 3, /obj/item) - if(!A || A.anchored || (A.w_class > max_w_class)) + if(!A || A.anchored || A.throwing) + return + + if(max_w_class && (A.w_class > max_w_class)) return var/atom/movable/acting_object = get_object() - if(!A.Adjacent(acting_object) && !(A in acting_object.GetAllContents())) + if(!(A.Adjacent(acting_object) && isturf(A.loc)) && !(A in acting_object.GetAllContents())) return var/turf/T = get_turf(acting_object) diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 7cb2479ec9..7f61968c04 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -17,7 +17,11 @@ stuff_to_display = null /obj/item/integrated_circuit/output/screen/any_examine(mob/user) - to_chat(user, "There is a little screen labeled '[name]', which displays [!isnull(stuff_to_display) ? "'[stuff_to_display]'" : "nothing"].") + var/shown_label = "" + if(displayed_name && displayed_name != name) + shown_label = " labeled '[displayed_name]'" + + to_chat(user, "There is \a [src][shown_label], which displays [!isnull(stuff_to_display) ? "'[stuff_to_display]'" : "nothing"].") /obj/item/integrated_circuit/output/screen/do_work() var/datum/integrated_io/I = inputs[1]