Files
Bubberstation/code/modules/integrated_electronics/core/debugger.dm
arsserpentarium 95b9e19cd9 [READY]Circuitry upgrades (#33579)
* heater,xenobio scan,smoker fix,kill vines,pathfinder

* 1.drag component
2.damage for bot and machines(?)
3.EPv2 scaner(takes ref to thing.returns adress of epv2 adress if there is one)
4.fix work of arithmetic pins

* Update input.dm

* fix, scaner

* grinder,juicer,smokefix, runtime fix

* lag

* Update game_options.txt

* Update reagents.dm

* Update assemblies.dm

* Update grown.dm

* Update grown.dm

* 111

* Delete electronic_components.dmi

* 222

* merge

* Update reagents.dm

* Update assemblies.dm

* concat unfuck

* concat unfuck 2

* reagents

* fixes

* fix2

* hooks

* math

* 111

* sense

* leave it for now.

* fix

* fix(2)

* requested

* okay

* uhhh

* sorry

* kevinz's smoker nerf is enought

* hooks2

* fix for reagents push ref.
2017-12-23 22:55:37 -05:00

63 lines
2.9 KiB
Plaintext

/obj/item/device/integrated_electronics/debugger
name = "circuit debugger"
desc = "This small tool allows one working with custom machinery to directly set data to a specific pin, useful for writing \
settings to specific circuits, or for debugging purposes. It can also pulse activation pins."
icon = 'icons/obj/assemblies/electronic_tools.dmi'
icon_state = "debugger"
flags_1 = CONDUCT_1 | NOBLUDGEON_1
w_class = WEIGHT_CLASS_SMALL
var/data_to_write = null
var/accepting_refs = FALSE
/obj/item/device/integrated_electronics/debugger/attack_self(mob/user)
var/type_to_use = input("Please choose a type to use.","[src] type setting") as null|anything in list("string","number","ref", "null")
if(!user.IsAdvancedToolUser())
return
var/new_data = null
switch(type_to_use)
if("string")
accepting_refs = FALSE
new_data = stripped_input(user, "Now type in a string.","[src] string writing", no_trim = TRUE)
if(istext(new_data) && user.IsAdvancedToolUser())
data_to_write = new_data
to_chat(user, "<span class='notice'>You set \the [src]'s memory to \"[new_data]\".</span>")
if("number")
accepting_refs = FALSE
new_data = input(user, "Now type in a number.","[src] number writing") as null|num
if(isnum(new_data) && user.IsAdvancedToolUser())
data_to_write = new_data
to_chat(user, "<span class='notice'>You set \the [src]'s memory to [new_data].</span>")
if("ref")
accepting_refs = TRUE
to_chat(user, "<span class='notice'>You turn \the [src]'s ref scanner on. Slide it across \
an object for a ref of that object to save it in memory.</span>")
if("null")
data_to_write = null
to_chat(user, "<span class='notice'>You set \the [src]'s memory to absolutely nothing.</span>")
/obj/item/device/integrated_electronics/debugger/afterattack(atom/target, mob/living/user, proximity)
if(accepting_refs && proximity)
data_to_write = WEAKREF(target)
visible_message("<span class='notice'>[user] slides \a [src]'s over \the [target].</span>")
to_chat(user, "<span class='notice'>You set \the [src]'s memory to a reference to [target.name] \[Ref\]. The ref scanner is \
now off.</span>")
accepting_refs = FALSE
else
return ..()
/obj/item/device/integrated_electronics/debugger/proc/write_data(var/datum/integrated_io/io, mob/user)
if(io.io_type == DATA_CHANNEL)
io.write_data_to_pin(data_to_write)
var/data_to_show = data_to_write
if(isweakref(data_to_write))
var/datum/weakref/w = data_to_write
var/atom/A = w.resolve()
data_to_show = A.name
to_chat(user, "<span class='notice'>You write '[data_to_write ? data_to_show : "NULL"]' to the '[io]' pin of \the [io.holder].</span>")
else if(io.io_type == PULSE_CHANNEL)
io.holder.check_then_do_work(io.ord,ignore_power = TRUE)
to_chat(user, "<span class='notice'>You pulse \the [io.holder]'s [io].</span>")
io.holder.interact(user) // This is to update the UI.