From 5412d7e113d28f6fe9d3a42ee52615c0f81e8ab7 Mon Sep 17 00:00:00 2001 From: Neerti Date: Thu, 15 Sep 2016 08:23:22 -0400 Subject: [PATCH] More Additions You can now cancel inputting on a text or numberpad. Zero is now displayed properly on the UI and not be shown as null. The small and medium assemblies now have real sprites. Total health percentage for med scanners and advanced med scanners now reports a proper percentage and not 1 or 0. The constant memory chip now can be set by using it in hand, making it usable. The constant memory chip now accepts refs as data to store. To use, select 'ref' when using inhand, then hit it against the thing you want to store. --- .../integrated_electronics/_defines.dm | 2 +- .../integrated_electronics/assemblies.dm | 11 +++++- .../integrated_electronics/input_output.dm | 8 ++--- code/modules/integrated_electronics/memory.dm | 33 +++++++++++++----- icons/obj/electronic_assemblies.dmi | Bin 1370 -> 2514 bytes 5 files changed, 39 insertions(+), 15 deletions(-) diff --git a/code/modules/integrated_electronics/_defines.dm b/code/modules/integrated_electronics/_defines.dm index f25791bd7cd..7e0655c80ce 100644 --- a/code/modules/integrated_electronics/_defines.dm +++ b/code/modules/integrated_electronics/_defines.dm @@ -277,7 +277,7 @@ ..() /datum/integrated_io/proc/display_data() - if(!data) + if(isnull(data)) return "(null)" // Empty data means nothing to show. if(istext(data)) return "(\"[data]\")" // Wraps the 'string' in escaped quotes, so that people know it's a 'string'. diff --git a/code/modules/integrated_electronics/assemblies.dm b/code/modules/integrated_electronics/assemblies.dm index 983d84570a3..e727f4c3d81 100644 --- a/code/modules/integrated_electronics/assemblies.dm +++ b/code/modules/integrated_electronics/assemblies.dm @@ -3,19 +3,21 @@ desc = "It's a case, for building electronics with." w_class = 2 icon = 'icons/obj/electronic_assemblies.dmi' - icon_state = "setup" + icon_state = "setup_small" var/max_components = 10 var/max_complexity = 30 var/opened = 0 /obj/item/device/electronic_assembly/medium name = "electronic mechanism" + icon_state = "setup_medium" w_class = 3 max_components = 20 max_complexity = 50 /obj/item/device/electronic_assembly/large name = "electronic machine" + icon_state = "setup" w_class = 4 max_components = 30 max_complexity = 60 @@ -35,6 +37,12 @@ IC.work() */ +/obj/item/device/electronic_assembly/update_icon() + if(opened) + icon_state = initial(icon_state) + "-open" + else + icon_state = initial(icon_state) + /obj/item/device/electronic_assembly/examine(mob/user) ..() if(user.Adjacent(src)) @@ -87,6 +95,7 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) opened = !opened user << "You [opened ? "opened" : "closed"] \the [src]." + update_icon() if(istype(I, /obj/item/device/integrated_electronics/wirer)) if(opened) var/obj/item/integrated_circuit/IC = input(user, "Which circuit do you want to examine?", "Examination") as null|anything in contents diff --git a/code/modules/integrated_electronics/input_output.dm b/code/modules/integrated_electronics/input_output.dm index f36c6a36e5a..4bb4c013097 100644 --- a/code/modules/integrated_electronics/input_output.dm +++ b/code/modules/integrated_electronics/input_output.dm @@ -41,7 +41,7 @@ ) /obj/item/integrated_circuit/input/numberpad/ask_for_input(mob/user) - var/new_input = input(user, "Enter a number, please.","Number pad") as num + var/new_input = input(user, "Enter a number, please.","Number pad") as null|num if(isnum(new_input)) var/datum/integrated_io/O = outputs[1] O.data = new_input @@ -67,7 +67,7 @@ ) /obj/item/integrated_circuit/input/textpad/ask_for_input(mob/user) - var/new_input = input(user, "Enter some words, please.","Number pad") as text + var/new_input = input(user, "Enter some words, please.","Number pad") as null|text if(new_input && istext(new_input)) var/datum/integrated_io/O = outputs[1] O.data = new_input @@ -101,7 +101,7 @@ return var/mob/living/carbon/human/H = I.data if(H.Adjacent(get_turf(src))) // Like normal analysers, it can't be used at range. - var/total_health = round(H.health/H.maxHealth)*100 + var/total_health = round(H.health/H.maxHealth, 0.1)*100 var/missing_health = H.maxHealth - H.health var/datum/integrated_io/total = outputs[1] @@ -144,7 +144,7 @@ return var/mob/living/carbon/human/H = I.data if(H.Adjacent(get_turf(src))) // Like normal analysers, it can't be used at range. - var/total_health = round(H.health/H.maxHealth)*100 + var/total_health = round(H.health/H.maxHealth, 0.1)*100 var/missing_health = H.maxHealth - H.health var/datum/integrated_io/total = outputs[1] diff --git a/code/modules/integrated_electronics/memory.dm b/code/modules/integrated_electronics/memory.dm index 3305cf0a939..ec06c7784b2 100644 --- a/code/modules/integrated_electronics/memory.dm +++ b/code/modules/integrated_electronics/memory.dm @@ -58,26 +58,41 @@ number_of_outputs = 1 number_of_activators = 1 activator_names = list( - "trigger output" + "push data" ) + var/accepting_refs = 0 /obj/item/integrated_circuit/memory/constant/work() - if(..()) - var/datum/integrated_io/O = outputs[1] - O.push_data() - -/obj/item/integrated_circuit/memory/constant/attack_hand(mob/user) var/datum/integrated_io/O = outputs[1] - var/type_to_use = input("Please choose a type to use.","[src] type setting") as null|anything in list("string","number") + O.push_data() + +/obj/item/integrated_circuit/memory/constant/attack_self(mob/user) + var/datum/integrated_io/O = outputs[1] + var/type_to_use = input("Please choose a type to use.","[src] type setting") as null|anything in list("string","number","ref") var/new_data = null switch(type_to_use) if("string") + accepting_refs = 0 new_data = input("Now type in a string.","[src] string writing") as null|text if(istext(new_data)) O.data = new_data - user << "You set \the [src]'s memory to '[new_data]'." + user << "You set \the [src]'s memory to [O.display_data()]." if("number") + accepting_refs = 0 new_data = input("Now type in a number.","[src] number writing") as null|num if(isnum(new_data)) O.data = new_data - user << "You set \the [src]'s memory to '[new_data]'." \ No newline at end of file + user << "You set \the [src]'s memory to [O.display_data()]." + if("ref") + accepting_refs = 1 + user << "You turn \the [src]'s ref scanner on. Slide it across \ + an object for a ref of that object to save it in memory." + +/obj/item/integrated_circuit/memory/constant/afterattack(atom/target, mob/living/user, proximity) + if(accepting_refs && proximity) + var/datum/integrated_io/O = outputs[1] + O.data = target + visible_message("[user] slides \a [src]'s over \the [target].") + user << "You set \the [src]'s memory to a reference to [O.display_data()]. The ref scanner is \ + now off." + accepting_refs = 0 \ No newline at end of file diff --git a/icons/obj/electronic_assemblies.dmi b/icons/obj/electronic_assemblies.dmi index e4fd3c230bbfe419d4b55a94489b5b07ec47bca3..18ba8650eed85494b2240b066e411cfaa3d2f180 100644 GIT binary patch delta 2511 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