[MDB Ignore] [IDB Ignore] Kills off /obj/item/device (#21774)

This has zero reason to exist in our code base. We have no procs or
variables tied to this. I removed it to make future modifications
cleaner.

---------

Signed-off-by: Cody Brittain <1779662+Generalcamo@users.noreply.github.com>
This commit is contained in:
Cody Brittain
2026-02-01 00:14:26 -05:00
committed by GitHub
parent 75424095ac
commit 3f62424312
857 changed files with 8690 additions and 8599 deletions
@@ -46,7 +46,7 @@
icon = 'icons/obj/assemblies/electronic_components.dmi'
icon_state = "template"
w_class = WEIGHT_CLASS_TINY
var/obj/item/device/electronic_assembly/assembly // Reference to the assembly holding this circuit, if any.
var/obj/item/electronic_assembly/assembly // Reference to the assembly holding this circuit, if any.
var/extended_desc
var/list/inputs = list()
var/list/inputs_default = list() // Assoc list which will fill a pin with data upon creation. e.g. "2" = 0 will set input pin 2 to equal 0 instead of null.
@@ -1,4 +1,4 @@
/obj/item/device/electronic_assembly
/obj/item/electronic_assembly
name = "electronic assembly"
desc = "It's a case, for building small electronics with."
w_class = WEIGHT_CLASS_SMALL
@@ -15,7 +15,7 @@
var/detail_color = COLOR_ASSEMBLY_BLACK
var/obj/item/card/id/access_card
/obj/item/device/electronic_assembly/implant
/obj/item/electronic_assembly/implant
name = "electronic implant"
icon_state = "setup_implant"
desc = "It's a case, for building very tiny electronics with."
@@ -24,20 +24,20 @@
max_complexity = IC_COMPLEXITY_BASE * 3/4
var/obj/item/implant/integrated_circuit/implant = null
/obj/item/device/electronic_assembly/Initialize(mapload, printed = FALSE)
/obj/item/electronic_assembly/Initialize(mapload, printed = FALSE)
. = ..()
if (!printed)
battery = new(src)
START_PROCESSING(SSelectronics, src)
access_card = new /obj/item/card/id(src)
/obj/item/device/electronic_assembly/Destroy()
/obj/item/electronic_assembly/Destroy()
QDEL_NULL(battery)
STOP_PROCESSING(SSelectronics, src)
QDEL_NULL(access_card)
return ..()
/obj/item/device/electronic_assembly/Collide(atom/AM)
/obj/item/electronic_assembly/Collide(atom/AM)
var/collw = AM
.=..()
if((istype(collw, /obj/machinery/door/airlock) || istype(collw, /obj/machinery/door/window)) && (!isnull(access_card)))
@@ -45,10 +45,10 @@
if(D.check_access(access_card))
D.open()
/obj/item/device/electronic_assembly/process()
/obj/item/electronic_assembly/process()
handle_idle_power()
/obj/item/device/electronic_assembly/proc/handle_idle_power()
/obj/item/electronic_assembly/proc/handle_idle_power()
// First we generate power.
for(var/obj/item/integrated_circuit/passive/power/P in contents)
P.make_energy()
@@ -58,25 +58,25 @@
if(IC.power_draw_idle && !draw_power(IC.power_draw_idle))
IC.power_fail()
/obj/item/device/electronic_assembly/implant/update_icon()
/obj/item/electronic_assembly/implant/update_icon()
..()
implant.icon_state = icon_state
/obj/item/device/electronic_assembly/implant/ui_host()
/obj/item/electronic_assembly/implant/ui_host()
return implant
/obj/item/device/electronic_assembly/proc/resolve_ui_host()
/obj/item/electronic_assembly/proc/resolve_ui_host()
return src
/obj/item/device/electronic_assembly/implant/resolve_ui_host()
/obj/item/electronic_assembly/implant/resolve_ui_host()
return implant
/obj/item/device/electronic_assembly/proc/check_interactivity(mob/user)
/obj/item/electronic_assembly/proc/check_interactivity(mob/user)
if(!CanInteract(user, GLOB.physical_state))
return 0
return 1
/obj/item/device/electronic_assembly/interact(mob/user)
/obj/item/electronic_assembly/interact(mob/user)
if(!check_interactivity(user))
return
@@ -125,7 +125,7 @@
B.set_content(HTML.Join())
B.open(FALSE)
/obj/item/device/electronic_assembly/Topic(href, href_list[])
/obj/item/electronic_assembly/Topic(href, href_list[])
if(..())
return 1
if(!opened)
@@ -147,7 +147,7 @@
interact(usr) // To refresh the UI.
/obj/item/device/electronic_assembly/verb/rename()
/obj/item/electronic_assembly/verb/rename()
set name = "Rename Circuit"
set category = "Object"
set desc = "Rename your circuit, useful to stay organized."
@@ -164,10 +164,10 @@
return input
return null
/obj/item/device/electronic_assembly/proc/can_move()
/obj/item/electronic_assembly/proc/can_move()
return FALSE
/obj/item/device/electronic_assembly/update_icon()
/obj/item/electronic_assembly/update_icon()
if(opened)
icon_state = "[initial(icon_state)]-open"
else
@@ -179,12 +179,12 @@
detail_overlay.color = detail_color
AddOverlays(detail_overlay)
/obj/item/device/electronic_assembly/GetAccess()
/obj/item/electronic_assembly/GetAccess()
. = list()
for(var/obj/item/integrated_circuit/part in contents)
. |= part.GetAccess()
/obj/item/device/electronic_assembly/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
/obj/item/electronic_assembly/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
for(var/obj/item/integrated_circuit/IC in contents)
@@ -192,18 +192,18 @@
if(opened)
interact(user)
/obj/item/device/electronic_assembly/proc/get_part_complexity()
/obj/item/electronic_assembly/proc/get_part_complexity()
. = 0
for(var/obj/item/integrated_circuit/part in contents)
. += part.complexity
/obj/item/device/electronic_assembly/proc/get_part_size()
/obj/item/electronic_assembly/proc/get_part_size()
. = 0
for(var/obj/item/integrated_circuit/part in contents)
. += part.size
// Returns true if the circuit made it inside.
/obj/item/device/electronic_assembly/proc/add_circuit(obj/item/integrated_circuit/IC, mob/user)
/obj/item/electronic_assembly/proc/add_circuit(obj/item/integrated_circuit/IC, mob/user)
if(!opened)
to_chat(user, SPAN_WARNING("\The [src] isn't opened, so you can't put anything inside. Try using a crowbar."))
return FALSE
@@ -230,15 +230,15 @@
return TRUE
// Non-interactive version of above that always succeeds, intended for build-in circuits that get added on assembly initialization.
/obj/item/device/electronic_assembly/proc/force_add_circuit(var/obj/item/integrated_circuit/IC)
/obj/item/electronic_assembly/proc/force_add_circuit(var/obj/item/integrated_circuit/IC)
IC.forceMove(src)
IC.assembly = src
/obj/item/device/electronic_assembly/afterattack(atom/target, mob/user, proximity)
/obj/item/electronic_assembly/afterattack(atom/target, mob/user, proximity)
for(var/obj/item/integrated_circuit/input/sensor/S in contents)
S.sense(target, user)
/obj/item/device/electronic_assembly/attackby(obj/item/attacking_item, mob/user)
/obj/item/electronic_assembly/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item, /obj/item/integrated_circuit))
if(!user.unEquip(attacking_item))
return FALSE
@@ -266,7 +266,7 @@
update_icon()
return TRUE
else if(istype(attacking_item, /obj/item/device/integrated_electronics/wirer) || istype(attacking_item, /obj/item/device/integrated_electronics/debugger) || attacking_item.tool_behaviour == TOOL_MULTITOOL || attacking_item.tool_behaviour == TOOL_SCREWDRIVER)
else if(istype(attacking_item, /obj/item/integrated_electronics/wirer) || istype(attacking_item, /obj/item/integrated_electronics/debugger) || attacking_item.tool_behaviour == TOOL_MULTITOOL || attacking_item.tool_behaviour == TOOL_SCREWDRIVER)
if(opened)
interact(user)
else
@@ -295,8 +295,8 @@
to_chat(user, SPAN_NOTICE("You slot \the [cell] inside \the [src]'s power supply."))
interact(user)
return TRUE
else if(istype(attacking_item, /obj/item/device/integrated_electronics/detailer))
var/obj/item/device/integrated_electronics/detailer/D = attacking_item
else if(istype(attacking_item, /obj/item/integrated_electronics/detailer))
var/obj/item/integrated_electronics/detailer/D = attacking_item
detail_color = D.detail_color
update_icon()
return TRUE
@@ -310,7 +310,7 @@
return TRUE
return ..()
/obj/item/device/electronic_assembly/attack_self(mob/user)
/obj/item/electronic_assembly/attack_self(mob/user)
if(!check_interactivity(user))
return
if(opened)
@@ -340,28 +340,28 @@
if(choice)
choice.ask_for_input(user)
/obj/item/device/electronic_assembly/emp_act(severity)
/obj/item/electronic_assembly/emp_act(severity)
. = ..()
for(var/atom/movable/AM in contents)
AM.emp_act(severity)
// Returns true if power was successfully drawn.
/obj/item/device/electronic_assembly/proc/draw_power(amount)
/obj/item/electronic_assembly/proc/draw_power(amount)
if(battery && battery.checked_use(amount * CELLRATE))
return TRUE
return FALSE
// Ditto for giving.
/obj/item/device/electronic_assembly/proc/give_power(amount)
/obj/item/electronic_assembly/proc/give_power(amount)
if(battery && battery.give(amount * CELLRATE))
return TRUE
return FALSE
/obj/item/device/electronic_assembly/proc/on_anchored()
/obj/item/electronic_assembly/proc/on_anchored()
for(var/obj/item/integrated_circuit/IC in contents)
IC.on_anchored()
/obj/item/device/electronic_assembly/proc/on_unanchored()
/obj/item/electronic_assembly/proc/on_unanchored()
for(var/obj/item/integrated_circuit/IC in contents)
IC.on_unanchored()
@@ -3,7 +3,7 @@
// E.g. Glasses have less room than something worn over the chest.
// Note that the electronic assembly is INSIDE the object that actually gets worn, in a similar way to implants.
/obj/item/device/electronic_assembly/clothing
/obj/item/electronic_assembly/clothing
name = "electronic clothing"
var/clothing_icon_state = "circuitry" // Needs to match the clothing's base icon_state.
desc = "It's a case, for building machines attached to clothing."
@@ -12,16 +12,16 @@
max_complexity = IC_COMPLEXITY_BASE
var/obj/item/clothing/clothing = null
/obj/item/device/electronic_assembly/clothing/ui_host()
/obj/item/electronic_assembly/clothing/ui_host()
return clothing
/obj/item/device/electronic_assembly/clothing/resolve_ui_host()
/obj/item/electronic_assembly/clothing/resolve_ui_host()
return clothing
/obj/item/device/electronic_assembly/clothing/get_assembly_holder()
/obj/item/electronic_assembly/clothing/get_assembly_holder()
return clothing
/obj/item/device/electronic_assembly/clothing/update_icon()
/obj/item/electronic_assembly/clothing/update_icon()
clothing.icon_state = "[initial(clothing.icon_state)][opened ? "-open" : ""]"
clothing.ClearOverlays()
var/image/detail_overlay = image('icons/obj/assemblies/wearable_electronic_setups.dmi', "[initial(clothing.icon_state)][opened ? "-open" : ""]-color")
@@ -30,25 +30,25 @@
clothing.update_clothing_icon()
// This is 'small' relative to the size of regular clothing assemblies.
/obj/item/device/electronic_assembly/clothing/small
/obj/item/electronic_assembly/clothing/small
max_components = IC_COMPONENTS_BASE / 2
max_complexity = IC_COMPLEXITY_BASE / 2
w_class = WEIGHT_CLASS_TINY
// Ditto.
/obj/item/device/electronic_assembly/clothing/large
/obj/item/electronic_assembly/clothing/large
max_components = IC_COMPONENTS_BASE * 2
max_complexity = IC_COMPLEXITY_BASE * 2
w_class = WEIGHT_CLASS_NORMAL
/obj/item/device/electronic_assembly/clothing/rename()
/obj/item/electronic_assembly/clothing/rename()
var/input_name = ..()
if(input_name)
clothing.name = input_name
// This is defined higher up, in /clothing to avoid lots of copypasta.
/obj/item/clothing
var/obj/item/device/electronic_assembly/clothing/IC = null
var/obj/item/electronic_assembly/clothing/IC = null
var/obj/item/integrated_circuit/built_in/action_button/action_circuit = null // This gets pulsed when someone clicks the button on the hud, OR when certain interactions are performed (such as clicking on something with gloves worn)
/obj/item/clothing/examine(mob/user, distance, is_adjacent, infix, suffix, show_extended)
@@ -91,7 +91,7 @@
worn_state = "jumpsuit"
/obj/item/clothing/under/circuitry/Initialize()
setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing)
setup_integrated_circuit(/obj/item/electronic_assembly/clothing)
return ..()
/obj/item/clothing/under/circuitry/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
@@ -114,7 +114,7 @@
item_state = "gloves"
/obj/item/clothing/gloves/circuitry/Initialize()
setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small)
setup_integrated_circuit(/obj/item/electronic_assembly/clothing/small)
return ..()
/obj/item/clothing/gloves/circuitry/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
@@ -147,7 +147,7 @@
item_state = "goggles"
/obj/item/clothing/glasses/circuitry/Initialize()
setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small)
setup_integrated_circuit(/obj/item/electronic_assembly/clothing/small)
return ..()
/obj/item/clothing/glasses/circuitry/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
@@ -185,7 +185,7 @@
item_state = "shoes"
/obj/item/clothing/shoes/circuitry/Initialize()
setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small)
setup_integrated_circuit(/obj/item/electronic_assembly/clothing/small)
return ..()
/obj/item/clothing/shoes/circuitry/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
@@ -208,7 +208,7 @@
item_state = "head"
/obj/item/clothing/head/circuitry/Initialize()
setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small)
setup_integrated_circuit(/obj/item/electronic_assembly/clothing/small)
return ..()
/obj/item/clothing/head/circuitry/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
@@ -230,7 +230,7 @@
item_state = "headset"
/obj/item/clothing/ears/circuitry/Initialize()
setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small)
setup_integrated_circuit(/obj/item/electronic_assembly/clothing/small)
return ..()
/obj/item/clothing/ears/circuitry/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
@@ -253,7 +253,7 @@
item_state = "chest"
/obj/item/clothing/suit/circuitry/Initialize()
setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/large)
setup_integrated_circuit(/obj/item/electronic_assembly/clothing/large)
return ..()
/obj/item/clothing/suit/circuitry/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
@@ -2,37 +2,37 @@
// Small assemblies.
/obj/item/device/electronic_assembly/default
/obj/item/electronic_assembly/default
name = "type-a electronic assembly"
/obj/item/device/electronic_assembly/calc
/obj/item/electronic_assembly/calc
name = "type-b electronic assembly"
icon_state = "setup_small_calc"
desc = "It's a case, for building small electronics with. This one resembles a pocket calculator."
/obj/item/device/electronic_assembly/clam
/obj/item/electronic_assembly/clam
name = "type-c electronic assembly"
icon_state = "setup_small_clam"
desc = "It's a case, for building small electronics with. This one has a clamshell design."
/obj/item/device/electronic_assembly/simple
/obj/item/electronic_assembly/simple
name = "type-d electronic assembly"
icon_state = "setup_small_simple"
desc = "It's a case, for building small electronics with. This one has a simple design."
/obj/item/device/electronic_assembly/hook
/obj/item/electronic_assembly/hook
name = "type-e electronic assembly"
icon_state = "setup_small_hook"
desc = "It's a case, for building small electronics with. This one looks like it has a belt clip, but it's purely decorative."
/obj/item/device/electronic_assembly/pda
/obj/item/electronic_assembly/pda
name = "type-f electronic assembly"
icon_state = "setup_small_pda"
desc = "It's a case, for building small electronics with. This one resembles a PDA."
// Tiny assemblies.
/obj/item/device/electronic_assembly/tiny
/obj/item/electronic_assembly/tiny
name = "electronic device"
icon_state = "setup_device"
desc = "It's a case, for building tiny-sized electronics with."
@@ -40,32 +40,32 @@
max_components = IC_COMPONENTS_BASE / 2
max_complexity = IC_COMPLEXITY_BASE / 2
/obj/item/device/electronic_assembly/tiny/default
/obj/item/electronic_assembly/tiny/default
name = "type-a electronic device"
/obj/item/device/electronic_assembly/tiny/cylinder
/obj/item/electronic_assembly/tiny/cylinder
name = "type-b electronic device"
icon_state = "setup_device_cylinder"
desc = "It's a case, for building tiny-sized electronics with. This one has a cylindrical design."
/obj/item/device/electronic_assembly/tiny/scanner
/obj/item/electronic_assembly/tiny/scanner
name = "type-c electronic device"
icon_state = "setup_device_scanner"
desc = "It's a case, for building tiny-sized electronics with. This one has a scanner-like design."
/obj/item/device/electronic_assembly/tiny/hook
/obj/item/electronic_assembly/tiny/hook
name = "type-d electronic device"
icon_state = "setup_device_hook"
desc = "It's a case, for building tiny-sized electronics with. This one looks like it has a belt clip, but it's purely decorative."
/obj/item/device/electronic_assembly/tiny/box
/obj/item/electronic_assembly/tiny/box
name = "type-e electronic device"
icon_state = "setup_device_box"
desc = "It's a case, for building tiny-sized electronics with. This one has a boxy design."
// Medium assemblies.
/obj/item/device/electronic_assembly/medium
/obj/item/electronic_assembly/medium
name = "electronic mechanism"
icon_state = "setup_medium"
desc = "It's a case, for building medium-sized electronics with."
@@ -73,39 +73,39 @@
max_components = IC_COMPONENTS_BASE * 2
max_complexity = IC_COMPLEXITY_BASE * 2
/obj/item/device/electronic_assembly/medium/default
/obj/item/electronic_assembly/medium/default
name = "type-a electronic mechanism"
/obj/item/device/electronic_assembly/medium/box
/obj/item/electronic_assembly/medium/box
name = "type-b electronic mechanism"
icon_state = "setup_medium_box"
desc = "It's a case, for building medium-sized electronics with. This one has a boxy design."
/obj/item/device/electronic_assembly/medium/clam
/obj/item/electronic_assembly/medium/clam
name = "type-c electronic mechanism"
icon_state = "setup_medium_clam"
desc = "It's a case, for building medium-sized electronics with. This one has a clamshell design."
/obj/item/device/electronic_assembly/medium/medical
/obj/item/electronic_assembly/medium/medical
name = "type-d electronic mechanism"
icon_state = "setup_medium_med"
desc = "It's a case, for building medium-sized electronics with. This one resembles some type of medical apparatus."
/obj/item/device/electronic_assembly/medium/gun
/obj/item/electronic_assembly/medium/gun
name = "type-e electronic mechanism"
icon_state = "setup_medium_gun"
item_state = "circuitgun"
desc = "It's a case, for building medium-sized electronics with. This one resembles a gun, or some type of tool, \
if you're feeling optimistic."
/obj/item/device/electronic_assembly/medium/radio
/obj/item/electronic_assembly/medium/radio
name = "type-f electronic mechanism"
icon_state = "setup_medium_radio"
desc = "It's a case, for building medium-sized electronics with. This one resembles an old radio."
// Large assemblies.
/obj/item/device/electronic_assembly/large
/obj/item/electronic_assembly/large
name = "electronic machine"
icon_state = "setup_large"
desc = "It's a case, for building large electronics with."
@@ -114,37 +114,37 @@
max_complexity = IC_COMPLEXITY_BASE * 4
can_anchor = TRUE
/obj/item/device/electronic_assembly/large/default
/obj/item/electronic_assembly/large/default
name = "type-a electronic machine"
/obj/item/device/electronic_assembly/large/scope
/obj/item/electronic_assembly/large/scope
name = "type-b electronic machine"
icon_state = "setup_large_scope"
desc = "It's a case, for building large electronics with. This one resembles an oscilloscope."
/obj/item/device/electronic_assembly/large/terminal
/obj/item/electronic_assembly/large/terminal
name = "type-c electronic machine"
icon_state = "setup_large_terminal"
desc = "It's a case, for building large electronics with. This one resembles a computer terminal."
/obj/item/device/electronic_assembly/large/arm
/obj/item/electronic_assembly/large/arm
name = "type-d electronic machine"
icon_state = "setup_large_arm"
desc = "It's a case, for building large electronics with. This one resembles a robotic arm."
/obj/item/device/electronic_assembly/large/tall
/obj/item/electronic_assembly/large/tall
name = "type-e electronic machine"
icon_state = "setup_large_tall"
desc = "It's a case, for building large electronics with. This one has a tall design."
/obj/item/device/electronic_assembly/large/industrial
/obj/item/electronic_assembly/large/industrial
name = "type-f electronic machine"
icon_state = "setup_large_industrial"
desc = "It's a case, for building large electronics with. This one resembles some kind of industrial machinery."
// Drone assemblies, which can move with the locomotion circuit.
/obj/item/device/electronic_assembly/drone
/obj/item/electronic_assembly/drone
name = "electronic drone"
icon_state = "setup_drone"
desc = "It's a case, for building mobile electronics with."
@@ -153,35 +153,35 @@
max_complexity = IC_COMPLEXITY_BASE * 1.5
can_anchor = FALSE
/obj/item/device/electronic_assembly/drone/can_move()
/obj/item/electronic_assembly/drone/can_move()
return TRUE
/obj/item/device/electronic_assembly/drone/default
/obj/item/electronic_assembly/drone/default
name = "type-a electronic drone"
/obj/item/device/electronic_assembly/drone/arms
/obj/item/electronic_assembly/drone/arms
name = "type-b electronic drone"
icon_state = "setup_drone_arms"
desc = "It's a case, for building mobile electronics with. This one is armed and dangerous."
/obj/item/device/electronic_assembly/drone/medbot
/obj/item/electronic_assembly/drone/medbot
name = "type-d electronic drone"
icon_state = "setup_drone_medbot"
desc = "It's a case, for building mobile electronics with. This one resembles a Medibot."
/obj/item/device/electronic_assembly/drone/genbot
/obj/item/electronic_assembly/drone/genbot
name = "type-e electronic drone"
icon_state = "setup_drone_genbot"
desc = "It's a case, for building mobile electronics with. This one has a generic bot design."
/obj/item/device/electronic_assembly/drone/android
/obj/item/electronic_assembly/drone/android
name = "type-f electronic drone"
icon_state = "setup_drone_android"
desc = "It's a case, for building mobile electronics with. This one has a hominoid design."
// Wall mounted assemblies.
/obj/item/device/electronic_assembly/wallmount
/obj/item/electronic_assembly/wallmount
name = "wall-mounted electronic assembly"
icon_state = "setup_wallmount_medium"
desc = "It's a case, for building medium-sized electronics with. It has a magnetized \
@@ -191,7 +191,7 @@
max_complexity = IC_COMPLEXITY_BASE * 2
can_anchor = TRUE
/obj/item/device/electronic_assembly/wallmount/proc/mount_assembly(turf/on_wall, mob/user)
/obj/item/electronic_assembly/wallmount/proc/mount_assembly(turf/on_wall, mob/user)
if(get_dist(on_wall,user) > 1)
return
var/ndir = get_dir(on_wall, user)
@@ -212,16 +212,16 @@
on_anchored()
set_pixel_offsets()
/obj/item/device/electronic_assembly/wallmount/on_unanchored()
/obj/item/electronic_assembly/wallmount/on_unanchored()
pixel_x = 0
pixel_y = 0
..()
/obj/item/device/electronic_assembly/wallmount/set_pixel_offsets()
/obj/item/electronic_assembly/wallmount/set_pixel_offsets()
pixel_x = DIR2PIXEL_X(dir)
pixel_y = DIR2PIXEL_Y(dir)
/obj/item/device/electronic_assembly/wallmount/heavy
/obj/item/electronic_assembly/wallmount/heavy
name = "heavy wall-mounted electronic assembly"
icon_state = "setup_wallmount_large"
desc = "It's a case, for building large electronics with. It has a magnetized backing \
@@ -230,7 +230,7 @@
max_components = IC_COMPONENTS_BASE * 4
max_complexity = IC_COMPLEXITY_BASE * 4
/obj/item/device/electronic_assembly/wallmount/light
/obj/item/electronic_assembly/wallmount/light
name = "light wall-mounted electronic assembly"
icon_state = "setup_wallmount_small"
desc = "It's a case, for building small electronics with. It has a magnetized backing \
@@ -239,7 +239,7 @@
max_components = IC_COMPONENTS_BASE
max_complexity = IC_COMPLEXITY_BASE
/obj/item/device/electronic_assembly/wallmount/tiny
/obj/item/electronic_assembly/wallmount/tiny
name = "tiny wall-mounted electronic assembly"
icon_state = "setup_wallmount_tiny"
desc = "It's a case, for building tiny electronics with. It has a magnetized backing \
@@ -248,5 +248,5 @@
max_components = IC_COMPONENTS_BASE / 2
max_complexity = IC_COMPLEXITY_BASE / 2
/obj/item/device/electronic_assembly/proc/get_assembly_holder()
/obj/item/electronic_assembly/proc/get_assembly_holder()
return src
@@ -1,23 +1,23 @@
/obj/item/device/assembly/electronic_assembly
/obj/item/assembly/electronic_assembly
name = "electronic device"
desc = "It's a case for building electronics with. It can be attached to other small devices."
icon_state = "setup_device"
var/opened = 0
var/obj/item/device/electronic_assembly/device/EA
var/obj/item/electronic_assembly/device/EA
/obj/item/device/assembly/electronic_assembly/Initialize()
/obj/item/assembly/electronic_assembly/Initialize()
. = ..()
EA = new(src)
EA.holder = src
/obj/item/device/assembly/electronic_assembly/Destroy()
/obj/item/assembly/electronic_assembly/Destroy()
EA.holder = null
QDEL_NULL(EA)
. = ..()
/obj/item/device/assembly/electronic_assembly/attackby(obj/item/attacking_item, mob/user)
/obj/item/assembly/electronic_assembly/attackby(obj/item/attacking_item, mob/user)
if (attacking_item.tool_behaviour == TOOL_CROWBAR)
toggle_open(user)
else if (opened)
@@ -25,7 +25,7 @@
else
..()
/obj/item/device/assembly/electronic_assembly/proc/toggle_open(mob/user)
/obj/item/assembly/electronic_assembly/proc/toggle_open(mob/user)
playsound(get_turf(src), 'sound/items/crowbar_pry.ogg', 50, 1)
opened = !opened
EA.opened = opened
@@ -33,7 +33,7 @@
secured = 1
update_icon()
/obj/item/device/assembly/electronic_assembly/update_icon()
/obj/item/assembly/electronic_assembly/update_icon()
if(EA)
icon_state = initial(icon_state)
else
@@ -41,23 +41,23 @@
if(opened)
icon_state = "[icon_state]-open"
/obj/item/device/assembly/electronic_assembly/attack_self(mob/user as mob)
/obj/item/assembly/electronic_assembly/attack_self(mob/user as mob)
if(EA)
EA.attack_self(user)
//Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs
/obj/item/device/assembly/electronic_assembly/pulsed(radio = 0)
/obj/item/assembly/electronic_assembly/pulsed(radio = 0)
if(EA)
for(var/obj/item/integrated_circuit/built_in/device_input/I in EA.contents)
I.do_work()
/obj/item/device/assembly/electronic_assembly/examine(mob/user, distance, is_adjacent, infix, suffix, show_extended)
/obj/item/assembly/electronic_assembly/examine(mob/user, distance, is_adjacent, infix, suffix, show_extended)
. = ..()
if(EA)
for(var/obj/item/integrated_circuit/IC in EA.contents)
IC.external_examine(user)
/obj/item/device/assembly/electronic_assembly/verb/toggle()
/obj/item/assembly/electronic_assembly/verb/toggle()
set src in usr
set category = "Object"
set name = "Open/Close Device Assembly"
@@ -65,7 +65,7 @@
toggle_open(usr)
/obj/item/device/electronic_assembly/device
/obj/item/electronic_assembly/device
name = "electronic device"
icon_state = "setup_device"
desc = "It's a tiny electronic device with specific use for attaching to other devices."
@@ -73,12 +73,12 @@
max_components = IC_COMPONENTS_BASE * 3/4
max_complexity = IC_COMPLEXITY_BASE * 3/4
var/obj/item/device/assembly/electronic_assembly/holder
var/obj/item/assembly/electronic_assembly/holder
var/obj/item/integrated_circuit/built_in/device_input/input
var/obj/item/integrated_circuit/built_in/device_output/output
/obj/item/device/electronic_assembly/device/Initialize()
/obj/item/electronic_assembly/device/Initialize()
. = ..()
src.input = new(src)
@@ -87,7 +87,7 @@
src.input.assembly = src
src.output.assembly = src
/obj/item/device/electronic_assembly/device/Destroy()
/obj/item/electronic_assembly/device/Destroy()
src.holder = null
src.input.assembly = null
@@ -98,7 +98,7 @@
. = ..()
/obj/item/device/electronic_assembly/device/check_interactivity(mob/user)
/obj/item/electronic_assembly/device/check_interactivity(mob/user)
if(!CanInteract(user, state = GLOB.deep_inventory_state))
return 0
return 1
@@ -60,15 +60,15 @@
return activators[pin_number]
return null
/obj/item/integrated_circuit/proc/handle_wire(datum/integrated_io/pin, obj/item/device/integrated_electronics/tool)
if(istype(tool, /obj/item/device/integrated_electronics/wirer))
var/obj/item/device/integrated_electronics/wirer/wirer = tool
/obj/item/integrated_circuit/proc/handle_wire(datum/integrated_io/pin, obj/item/integrated_electronics/tool)
if(istype(tool, /obj/item/integrated_electronics/wirer))
var/obj/item/integrated_electronics/wirer/wirer = tool
if(pin)
wirer.wire(pin, usr)
return 1
else if(istype(tool, /obj/item/device/integrated_electronics/debugger))
var/obj/item/device/integrated_electronics/debugger/debugger = tool
else if(istype(tool, /obj/item/integrated_electronics/debugger))
var/obj/item/integrated_electronics/debugger/debugger = tool
if(pin)
debugger.write_data(pin, usr)
return 1
@@ -49,8 +49,8 @@ a creative player the means to solve many problems. Circuits are held inside an
. = ..()
/obj/item/integrated_circuit/ui_host()
if(istype(src.loc, /obj/item/device/electronic_assembly))
var/obj/item/device/electronic_assembly/assembly = loc
if(istype(src.loc, /obj/item/electronic_assembly))
var/obj/item/electronic_assembly/assembly = loc
return assembly.resolve_ui_host()
return ..()
@@ -191,7 +191,7 @@ a creative player the means to solve many problems. Circuits are held inside an
return 1
var/update = 1
var/obj/item/device/electronic_assembly/A = src.assembly
var/obj/item/electronic_assembly/A = src.assembly
var/update_to_assembly = 0
var/datum/integrated_io/pin = locate(href_list["pin"]) in inputs + outputs + activators
var/datum/integrated_io/linked = null
@@ -200,7 +200,7 @@ a creative player the means to solve many problems. Circuits are held inside an
var/obj/item/held_item = usr.get_active_hand()
var/obj/item/off_hand = usr.get_inactive_hand()
var/obj/item/device/multitool/M
var/obj/item/multitool/M
if(held_item?.tool_behaviour == TOOL_MULTITOOL)
M = held_item
if(!M && off_hand?.tool_behaviour == TOOL_MULTITOOL)
@@ -213,7 +213,7 @@ a creative player the means to solve many problems. Circuits are held inside an
rename_component(usr)
if(href_list["from_assembly"])
update = 0
var/obj/item/device/electronic_assembly/ea = loc
var/obj/item/electronic_assembly/ea = loc
if(istype(ea))
ea.interact(usr)
@@ -237,15 +237,15 @@ a creative player the means to solve many problems. Circuits are held inside an
M.unwire(pin, linked, usr)
if(href_list["wire"])
if(istype(held_item, /obj/item/device/integrated_electronics/wirer))
var/obj/item/device/integrated_electronics/wirer/wirer = held_item
if(istype(held_item, /obj/item/integrated_electronics/wirer))
var/obj/item/integrated_electronics/wirer/wirer = held_item
if(linked)
wirer.wire(linked, usr)
else if(pin)
wirer.wire(pin, usr)
else if(istype(held_item, /obj/item/device/integrated_electronics/debugger))
var/obj/item/device/integrated_electronics/debugger/debugger = held_item
else if(istype(held_item, /obj/item/integrated_electronics/debugger))
var/obj/item/integrated_electronics/debugger/debugger = held_item
if(pin)
debugger.write_data(pin, usr)
else
@@ -271,8 +271,8 @@ a creative player the means to solve many problems. Circuits are held inside an
update_to_assembly = 1
if(href_list["scan"])
if(istype(held_item, /obj/item/device/integrated_electronics/debugger))
var/obj/item/device/integrated_electronics/debugger/D = held_item
if(istype(held_item, /obj/item/integrated_electronics/debugger))
var/obj/item/integrated_electronics/debugger/D = held_item
if(D.accepting_refs)
D.afterattack(src, usr, TRUE)
else
@@ -294,7 +294,7 @@ a creative player the means to solve many problems. Circuits are held inside an
if(!removable)
to_chat(usr, SPAN_WARNING("\The [src] seems to be permanently attached to the case."))
return
var/obj/item/device/electronic_assembly/ea = loc
var/obj/item/electronic_assembly/ea = loc
disconnect_all()
var/turf/T = get_turf(src)
forceMove(T)
@@ -1,4 +1,4 @@
/obj/item/device/integrated_circuit_printer
/obj/item/integrated_circuit_printer
name = "integrated circuit printer"
desc = "A portable(ish) machine made to print tiny modular circuitry out of metal."
icon = 'icons/obj/assemblies/electronic_tools.dmi'
@@ -10,13 +10,13 @@
var/upgraded = FALSE // When hit with an upgrade disk, will turn true, allowing it to print the higher tier circuits.
var/can_clone = FALSE // Same for above, but will allow the printer to duplicate a specific assembly.
var/obj/item/device/electronic_assembly/assembly_to_clone
var/obj/item/electronic_assembly/assembly_to_clone
/obj/item/device/integrated_circuit_printer/upgraded
/obj/item/integrated_circuit_printer/upgraded
upgraded = TRUE
can_clone = TRUE
/obj/item/device/integrated_circuit_printer/attackby(obj/item/attacking_item, mob/user)
/obj/item/integrated_circuit_printer/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item,/obj/item/stack/material))
var/obj/item/stack/material/stack = attacking_item
if(stack.material.name == DEFAULT_WALL_MATERIAL)
@@ -54,16 +54,16 @@
return ..()
/obj/item/device/integrated_circuit_printer/attack_self(var/mob/user)
/obj/item/integrated_circuit_printer/attack_self(var/mob/user)
ui_interact(user)
/obj/item/device/integrated_circuit_printer/ui_interact(mob/user, datum/tgui/ui)
/obj/item/integrated_circuit_printer/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "CircuitPrinter", "Integrated Circuit Printer", 600, 500)
ui.open()
/obj/item/device/integrated_circuit_printer/ui_data(mob/user)
/obj/item/integrated_circuit_printer/ui_data(mob/user)
var/list/data = list()
data["metal"] = metal / metal_per_sheet
@@ -81,7 +81,7 @@
return data
/obj/item/device/integrated_circuit_printer/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
/obj/item/integrated_circuit_printer/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
@@ -99,8 +99,8 @@
var/cost = 1
var/is_asm = FALSE
if(ispath(build_type, /obj/item/device/electronic_assembly))
var/obj/item/device/electronic_assembly/E = build_type
if(ispath(build_type, /obj/item/electronic_assembly))
var/obj/item/electronic_assembly/E = build_type
cost = round( (initial(E.max_complexity) + initial(E.max_components) ) / 4)
is_asm = TRUE
else if(ispath(build_type, /obj/item/integrated_circuit))
@@ -117,7 +117,7 @@
new build_type(get_turf(loc))
. = TRUE
/obj/item/device/integrated_circuit_printer/proc/can_print(build_type)
/obj/item/integrated_circuit_printer/proc/can_print(build_type)
for(var/category in SSelectronics.printer_recipe_list)
var/list/current_list = SSelectronics.printer_recipe_list[category]
@@ -3,7 +3,7 @@
#define UNWIRE "unwire"
#define UNWIRING "unwiring"
/obj/item/device/integrated_electronics/wirer
/obj/item/integrated_electronics/wirer
name = "circuit wirer"
desc = "It's a small wiring tool, with a wire roll, electric soldering iron, wire cutter, and more in one package. \
The wires used are generally useful for small electronics, such as circuitboards and breadboards, as opposed to larger wires \
@@ -16,10 +16,10 @@
var/datum/integrated_io/selected_io
var/mode = WIRE
/obj/item/device/integrated_electronics/wirer/update_icon()
/obj/item/integrated_electronics/wirer/update_icon()
icon_state = "wirer-[mode]"
/obj/item/device/integrated_electronics/wirer/proc/wire(var/datum/integrated_io/io, mob/user)
/obj/item/integrated_electronics/wirer/proc/wire(var/datum/integrated_io/io, mob/user)
if(!io.holder.assembly)
to_chat(user, SPAN_WARNING("\The [io.holder] needs to be secured inside an assembly first."))
return
@@ -82,7 +82,7 @@
[io.name] are not connected."))
/obj/item/device/integrated_electronics/wirer/attack_self(mob/user)
/obj/item/integrated_electronics/wirer/attack_self(mob/user)
switch(mode)
if(WIRE)
mode = UNWIRE
@@ -106,7 +106,7 @@
#undef UNWIRE
#undef UNWIRING
/obj/item/device/integrated_electronics/debugger
/obj/item/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."
@@ -118,7 +118,7 @@
var/data_to_write = null
var/accepting_refs = 0
/obj/item/device/integrated_electronics/debugger/attack_self(mob/user)
/obj/item/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(!CanInteract(user, GLOB.physical_state))
return
@@ -145,7 +145,7 @@
data_to_write = null
to_chat(user, SPAN_NOTICE("You set \the [src]'s memory to absolutely nothing."))
/obj/item/device/integrated_electronics/debugger/afterattack(atom/target, mob/living/user, proximity)
/obj/item/integrated_electronics/debugger/afterattack(atom/target, mob/living/user, proximity)
if(accepting_refs && proximity)
data_to_write = WEAKREF(target)
visible_message(SPAN_NOTICE("[user] slides [src]'s ref scanner over \the [target]."))
@@ -153,7 +153,7 @@
now off.</span>")
accepting_refs = 0
/obj/item/device/integrated_electronics/debugger/proc/write_data(var/datum/integrated_io/io, mob/user)
/obj/item/integrated_electronics/debugger/proc/write_data(var/datum/integrated_io/io, mob/user)
switch (io.io_type)
if (DATA_CHANNEL)
io.write_data_to_pin(data_to_write)
@@ -169,7 +169,7 @@
io.holder.interact(user) // This is to update the UI.
/obj/item/device/integrated_electronics/detailer
/obj/item/integrated_electronics/detailer
name = "assembly detailer"
desc = "A combination autopainter and flash anodizer designed to give electronic assemblies a colorful, wear-resistant finish."
icon = 'icons/obj/assemblies/electronic_tools.dmi'
@@ -196,17 +196,17 @@
"hot pink" = COLOR_ASSEMBLY_HOT_PINK
)
/obj/item/device/integrated_electronics/detailer/Initialize()
/obj/item/integrated_electronics/detailer/Initialize()
update_icon()
return ..()
/obj/item/device/integrated_electronics/detailer/update_icon()
/obj/item/integrated_electronics/detailer/update_icon()
ClearOverlays()
var/image/detail_overlay = image('icons/obj/assemblies/electronic_tools.dmi', "detailer-color")
detail_overlay.color = detail_color
AddOverlays(detail_overlay)
/obj/item/device/integrated_electronics/detailer/attack_self(mob/user)
/obj/item/integrated_electronics/detailer/attack_self(mob/user)
var/color_choice = input(user, "Select color.", "Assembly Detailer", detail_color) as null|anything in color_list
if(!color_choice)
return
@@ -225,11 +225,11 @@
can_hold = list(
/obj/item/integrated_circuit,
/obj/item/storage/bag/circuits/mini,
/obj/item/device/electronic_assembly,
/obj/item/device/integrated_electronics,
/obj/item/electronic_assembly,
/obj/item/integrated_electronics,
/obj/item/crowbar,
/obj/item/screwdriver,
/obj/item/device/multitool
/obj/item/multitool
)
make_exact_fit = TRUE
@@ -246,10 +246,10 @@
new /obj/item/storage/bag/circuits/mini/converter(src)
new /obj/item/storage/bag/circuits/mini/power(src)
new /obj/item/device/electronic_assembly(src)
new /obj/item/device/assembly/electronic_assembly(src)
new /obj/item/device/assembly/electronic_assembly(src)
new /obj/item/device/multitool(src)
new /obj/item/electronic_assembly(src)
new /obj/item/assembly/electronic_assembly(src)
new /obj/item/assembly/electronic_assembly(src)
new /obj/item/multitool(src)
new /obj/item/screwdriver(src)
new /obj/item/crowbar(src)
@@ -269,12 +269,12 @@
new /obj/item/storage/bag/circuits/mini/converter/all(src)
new /obj/item/storage/bag/circuits/mini/power/all(src)
new /obj/item/device/electronic_assembly(src)
new /obj/item/device/electronic_assembly/medium(src)
new /obj/item/device/electronic_assembly/large(src)
new /obj/item/device/electronic_assembly/drone(src)
new /obj/item/device/integrated_electronics/wirer(src)
new /obj/item/device/integrated_electronics/debugger(src)
new /obj/item/electronic_assembly(src)
new /obj/item/electronic_assembly/medium(src)
new /obj/item/electronic_assembly/large(src)
new /obj/item/electronic_assembly/drone(src)
new /obj/item/integrated_electronics/wirer(src)
new /obj/item/integrated_electronics/debugger(src)
new /obj/item/crowbar(src)
/obj/item/storage/bag/circuits/mini
@@ -86,8 +86,8 @@
/obj/item/integrated_circuit/passive/power/metabolic_siphon/make_energy()
var/mob/living/carbon/human/host
if(assembly && istype(assembly, /obj/item/device/electronic_assembly/implant))
var/obj/item/device/electronic_assembly/implant/implant_assembly = assembly
if(assembly && istype(assembly, /obj/item/electronic_assembly/implant))
var/obj/item/electronic_assembly/implant/implant_assembly = assembly
if(implant_assembly.implant.imp_in)
host = implant_assembly.implant.imp_in
if(!get_pin_data(IC_INPUT, 1))
@@ -23,8 +23,8 @@
activators = list("pulse attached" = IC_PINTYPE_PULSE_IN)
/obj/item/integrated_circuit/built_in/device_output/do_work()
if(istype(assembly, /obj/item/device/electronic_assembly/device))
var/obj/item/device/electronic_assembly/device/device = assembly
if(istype(assembly, /obj/item/electronic_assembly/device))
var/obj/item/electronic_assembly/device/device = assembly
device.holder.pulse()
// Triggered when clothing assembly's hud button is clicked, used in-hand, or when another clothing-specific interaction occurs (like touching something with gloves on).
@@ -406,7 +406,7 @@
name = "global positioning system"
desc = "This allows you to easily know the position of a machine containing this device."
extended_desc = "The GPS's coordinates it gives is absolute, not relative."
icon = 'icons/obj/item/device/gps.dmi'
icon = 'icons/obj/item/gps.dmi'
icon_state = "gps"
item_state = "radio"
contained_sprite = TRUE