Files
CHOMPStation2/code/game/objects/items/devices/multitool.dm
Neerti 22954a5a04 QoL: Hacking (#6810)
* Makes hacking window consider all hands instead of just the active one.

* Makes bottom indicators in hacking window go bold if they changed since the last refresh.

* Changelog
2020-03-11 20:36:42 -04:00

96 lines
3.2 KiB
Plaintext

/**
* Multitool -- A multitool is used for hacking electronic devices.
* TO-DO -- Using it as a power measurement tool for cables etc. Nannek.
*
*/
/obj/item/device/multitool
name = "multitool"
desc = "Used for pulsing wires to test which to cut. Not recommended by doctors."
icon_state = "multitool"
force = 5.0
w_class = ITEMSIZE_SMALL
throwforce = 5.0
throw_range = 15
throw_speed = 3
desc = "You can use this on airlocks or APCs to try to hack them without cutting wires."
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
var/mode_index = 1
var/toolmode = MULTITOOL_MODE_STANDARD
var/list/modes = list(MULTITOOL_MODE_STANDARD, MULTITOOL_MODE_INTCIRCUITS)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
var/obj/machinery/clonepod/connecting //same for cryopod linkage
var/obj/machinery/connectable //Used to connect machinery.
var/weakref_wiring //Used to store weak references for integrated circuitry. This is now the Omnitool.
toolspeed = 1
/obj/item/device/multitool/attack_self(mob/living/user)
var/choice = alert("What do you want to do with \the [src]?","Multitool Menu", "Switch Mode", "Clear Buffers", "Cancel")
switch(choice)
if("Cancel")
to_chat(user,"<span class='notice'>You lower \the [src].</span>")
return
if("Clear Buffers")
to_chat(user,"<span class='notice'>You clear \the [src]'s memory.</span>")
buffer = null
connecting = null
connectable = null
weakref_wiring = null
accepting_refs = 0
if(toolmode == MULTITOOL_MODE_INTCIRCUITS)
accepting_refs = 1
if("Switch Mode")
mode_switch(user)
update_icon()
return ..()
/obj/item/device/multitool/proc/mode_switch(mob/living/user)
if(mode_index + 1 > modes.len) mode_index = 1
else
mode_index += 1
toolmode = modes[mode_index]
to_chat(user,"<span class='notice'>\The [src] is now set to [toolmode].</span>")
accepting_refs = (toolmode == MULTITOOL_MODE_INTCIRCUITS)
return
/obj/item/device/multitool/is_multitool()
return TRUE
/obj/item/device/multitool/cyborg
name = "multitool"
desc = "Optimised and stripped-down version of a regular multitool."
toolspeed = 0.5
/datum/category_item/catalogue/anomalous/precursor_a/alien_multitool
name = "Precursor Alpha Object - Pulse Tool"
desc = "This ancient object appears to be an electrical tool. \
It has a simple mechanism at the handle, which will cause a pulse of \
energy to be emitted from the head of the tool. This can be used on a \
conductive object such as a wire, in order to send a pulse signal through it.\
<br><br>\
These qualities make this object somewhat similar in purpose to the common \
multitool, and can probably be used for tasks such as direct interfacing with \
an airlock, if one knows how."
value = CATALOGUER_REWARD_EASY
/obj/item/device/multitool/alien
name = "alien multitool"
desc = "An omni-technological interface."
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_multitool)
icon = 'icons/obj/abductor.dmi'
icon_state = "multitool"
toolspeed = 0.1
origin_tech = list(TECH_MAGNET = 5, TECH_ENGINEERING = 5)