/obj/item/integrated_circuit/memory name = "memory chip" desc = "This tiny chip can store one piece of data." icon_state = "memory" complexity = 1 number_of_inputs = 1 number_of_outputs = 1 number_of_activators = 1 activator_names = list( "set" ) /obj/item/integrated_circuit/memory/examine(mob/user) ..() var/i for(i = 1, i <= outputs.len, i++) var/datum/integrated_io/O = outputs[i] user << "\The [src] has [O.data ? "'O.data'" : "nothing"] saved to address [i]." /obj/item/integrated_circuit/memory/work() if(..()) var/i for(i = 1, i <= inputs.len, i++) var/datum/integrated_io/I = inputs[i] var/datum/integrated_io/O = outputs[i] O.data = I.data /obj/item/integrated_circuit/memory/medium name = "memory circuit" desc = "This circuit can store four pieces of data." icon_state = "memory4" complexity = 4 number_of_inputs = 4 number_of_outputs = 4 /obj/item/integrated_circuit/memory/large name = "large memory circuit" desc = "This big circuit can hold eight pieces of data." icon_state = "memory8" complexity = 8 number_of_inputs = 8 number_of_outputs = 8 /obj/item/integrated_circuit/memory/huge name = "large memory stick" desc = "This stick of memory can hold up up to sixteen pieces of data." icon_state = "memory16" complexity = 16 number_of_inputs = 16 number_of_outputs = 16 /obj/item/integrated_circuit/memory/constant name = "constant chip" desc = "This tiny chip can store one piece of data, which cannot be overwritten without disassembly." icon_state = "memory" complexity = 1 number_of_inputs = 0 number_of_outputs = 1 number_of_activators = 1 activator_names = list( "push data" ) var/accepting_refs = 0 /obj/item/integrated_circuit/memory/constant/work() var/datum/integrated_io/O = outputs[1] 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", "null") 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 [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 [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." if("null") O.data = null user << "You set \the [src]'s memory to absolutely nothing." /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