Kills off /obj/item/device (#6561)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/obj/item/device/integrated_electronics/analyzer
|
||||
/obj/item/integrated_electronics/analyzer
|
||||
name = "circuit analyzer"
|
||||
desc = "This tool can scan an assembly and generate code necessary to recreate it in a circuit printer."
|
||||
icon = 'icons/obj/assemblies/electronic_tools.dmi'
|
||||
@@ -6,8 +6,8 @@
|
||||
flags_1 = CONDUCT_1
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/device/integrated_electronics/analyzer/afterattack(var/atom/A, var/mob/living/user)
|
||||
if(istype(A, /obj/item/device/electronic_assembly))
|
||||
/obj/item/integrated_electronics/analyzer/afterattack(var/atom/A, var/mob/living/user)
|
||||
if(istype(A, /obj/item/electronic_assembly))
|
||||
var/saved = "[A.name] analyzed! On circuit printers with cloning enabled, you may use the code below to clone the circuit:<br><br><code>[SScircuit.save_electronic_assembly(A)]</code>"
|
||||
if(saved)
|
||||
to_chat(user, "<span class='notice'>You scan [A].</span>")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#define IC_MAX_SIZE_BASE 25
|
||||
#define IC_COMPLEXITY_BASE 75
|
||||
|
||||
/obj/item/device/electronic_assembly
|
||||
/obj/item/electronic_assembly
|
||||
name = "electronic assembly"
|
||||
obj_flags = CAN_BE_HIT
|
||||
desc = "It's a case, for building small electronics with."
|
||||
@@ -54,17 +54,17 @@
|
||||
COLOR_ASSEMBLY_PURPLE
|
||||
)
|
||||
|
||||
/obj/item/device/electronic_assembly/examine(mob/user)
|
||||
/obj/item/electronic_assembly/examine(mob/user)
|
||||
. = ..()
|
||||
if(can_anchor)
|
||||
to_chat(user, "<span class='notice'>The anchoring bolts [anchored ? "are" : "can be"] <b>wrenched</b> in place and the maintainence panel [opened ? "can be" : "is"] <b>screwed</b> in place.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The maintainence panel [opened ? "can be" : "is"] <b>screwed</b> in place.</span>")
|
||||
|
||||
/obj/item/device/electronic_assembly/proc/check_interactivity(mob/user)
|
||||
/obj/item/electronic_assembly/proc/check_interactivity(mob/user)
|
||||
return user.canUseTopic(src, BE_CLOSE)
|
||||
|
||||
/obj/item/device/electronic_assembly/Collide(atom/AM)
|
||||
/obj/item/electronic_assembly/Collide(atom/AM)
|
||||
collw = AM
|
||||
.=..()
|
||||
if((istype(collw, /obj/machinery/door/airlock) || istype(collw, /obj/machinery/door/window)) && (!isnull(access_card)))
|
||||
@@ -72,7 +72,7 @@
|
||||
if(D.check_access(access_card))
|
||||
D.open()
|
||||
|
||||
/obj/item/device/electronic_assembly/Initialize()
|
||||
/obj/item/electronic_assembly/Initialize()
|
||||
.=..()
|
||||
START_PROCESSING(SScircuit, src)
|
||||
materials[MAT_METAL] = round((max_complexity + max_components) / 4) * SScircuit.cost_multiplier
|
||||
@@ -88,14 +88,14 @@
|
||||
|
||||
access_card = new /obj/item/card/id(src)
|
||||
|
||||
/obj/item/device/electronic_assembly/Destroy()
|
||||
/obj/item/electronic_assembly/Destroy()
|
||||
STOP_PROCESSING(SScircuit, src)
|
||||
for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds)
|
||||
diag_hud.remove_from_hud(src)
|
||||
QDEL_NULL(access_card)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/electronic_assembly/process()
|
||||
/obj/item/electronic_assembly/process()
|
||||
handle_idle_power()
|
||||
check_pulling()
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
diag_hud_set_circuithealth()
|
||||
diag_hud_set_circuitcell()
|
||||
|
||||
/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 assembly_components)
|
||||
P.make_energy()
|
||||
@@ -115,10 +115,10 @@
|
||||
if(!draw_power(IC.power_draw_idle))
|
||||
IC.power_fail()
|
||||
|
||||
/obj/item/device/electronic_assembly/interact(mob/user)
|
||||
/obj/item/electronic_assembly/interact(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/item/device/electronic_assembly/ui_interact(mob/user)
|
||||
/obj/item/electronic_assembly/ui_interact(mob/user)
|
||||
. = ..()
|
||||
if(!check_interactivity(user))
|
||||
return
|
||||
@@ -176,7 +176,7 @@
|
||||
HTML += "</body></html>"
|
||||
user << browse(HTML, "window=assembly-[REF(src)];size=655x350;border=1;can_resize=1;can_close=1;can_minimize=1")
|
||||
|
||||
/obj/item/device/electronic_assembly/Topic(href, href_list)
|
||||
/obj/item/electronic_assembly/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
|
||||
interact(usr) // To refresh the UI.
|
||||
|
||||
/obj/item/device/electronic_assembly/pickup(mob/living/user)
|
||||
/obj/item/electronic_assembly/pickup(mob/living/user)
|
||||
. = ..()
|
||||
//update diagnostic hud when picked up, true is used to force the hud to be hidden
|
||||
diag_hud_set_circuithealth(TRUE)
|
||||
@@ -243,7 +243,7 @@
|
||||
diag_hud_set_circuitstat(TRUE)
|
||||
diag_hud_set_circuittracking(TRUE)
|
||||
|
||||
/obj/item/device/electronic_assembly/dropped(mob/user)
|
||||
/obj/item/electronic_assembly/dropped(mob/user)
|
||||
. = ..()
|
||||
//update diagnostic hud when dropped
|
||||
diag_hud_set_circuithealth()
|
||||
@@ -251,7 +251,7 @@
|
||||
diag_hud_set_circuitstat()
|
||||
diag_hud_set_circuittracking()
|
||||
|
||||
/obj/item/device/electronic_assembly/proc/rename()
|
||||
/obj/item/electronic_assembly/proc/rename()
|
||||
var/mob/M = usr
|
||||
if(!check_interactivity(M))
|
||||
return
|
||||
@@ -263,10 +263,10 @@
|
||||
to_chat(M, "<span class='notice'>The machine now has a label reading '[input]'.</span>")
|
||||
name = input
|
||||
|
||||
/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
|
||||
@@ -278,7 +278,7 @@
|
||||
detail_overlay.color = detail_color
|
||||
add_overlay(detail_overlay)
|
||||
|
||||
/obj/item/device/electronic_assembly/examine(mob/user)
|
||||
/obj/item/electronic_assembly/examine(mob/user)
|
||||
..()
|
||||
for(var/I in assembly_components)
|
||||
var/obj/item/integrated_circuit/IC = I
|
||||
@@ -286,14 +286,14 @@
|
||||
if(opened)
|
||||
interact(user)
|
||||
|
||||
/obj/item/device/electronic_assembly/proc/return_total_complexity()
|
||||
/obj/item/electronic_assembly/proc/return_total_complexity()
|
||||
. = 0
|
||||
var/obj/item/integrated_circuit/part
|
||||
for(var/p in assembly_components)
|
||||
part = p
|
||||
. += part.complexity
|
||||
|
||||
/obj/item/device/electronic_assembly/proc/return_total_size()
|
||||
/obj/item/electronic_assembly/proc/return_total_size()
|
||||
. = 0
|
||||
var/obj/item/integrated_circuit/part
|
||||
for(var/p in assembly_components)
|
||||
@@ -301,7 +301,7 @@
|
||||
. += part.size
|
||||
|
||||
// Returns true if the circuit made it inside.
|
||||
/obj/item/device/electronic_assembly/proc/try_add_component(obj/item/integrated_circuit/IC, mob/user)
|
||||
/obj/item/electronic_assembly/proc/try_add_component(obj/item/integrated_circuit/IC, mob/user)
|
||||
if(!opened)
|
||||
to_chat(user, "<span class='warning'>\The [src]'s hatch is closed, you can't put anything inside.</span>")
|
||||
return FALSE
|
||||
@@ -334,7 +334,7 @@
|
||||
|
||||
|
||||
// Actually puts the circuit inside, doesn't perform any checks.
|
||||
/obj/item/device/electronic_assembly/proc/add_component(obj/item/integrated_circuit/component)
|
||||
/obj/item/electronic_assembly/proc/add_component(obj/item/integrated_circuit/component)
|
||||
component.forceMove(get_object())
|
||||
component.assembly = src
|
||||
assembly_components |= component
|
||||
@@ -350,7 +350,7 @@
|
||||
diag_hud_set_circuittracking()
|
||||
|
||||
|
||||
/obj/item/device/electronic_assembly/proc/try_remove_component(obj/item/integrated_circuit/IC, mob/user, silent)
|
||||
/obj/item/electronic_assembly/proc/try_remove_component(obj/item/integrated_circuit/IC, mob/user, silent)
|
||||
if(!opened)
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>[src]'s hatch is closed, so you can't fiddle with the internal components.</span>")
|
||||
@@ -370,7 +370,7 @@
|
||||
return TRUE
|
||||
|
||||
// Actually removes the component, doesn't perform any checks.
|
||||
/obj/item/device/electronic_assembly/proc/remove_component(obj/item/integrated_circuit/component)
|
||||
/obj/item/electronic_assembly/proc/remove_component(obj/item/integrated_circuit/component)
|
||||
component.disconnect_all()
|
||||
component.forceMove(drop_location())
|
||||
component.assembly = null
|
||||
@@ -387,20 +387,20 @@
|
||||
diag_hud_set_circuittracking()
|
||||
|
||||
|
||||
/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/S in assembly_components)
|
||||
if(S.sense(target,user,proximity))
|
||||
visible_message("<span class='notice'> [user] waves [src] around [target].</span>")
|
||||
|
||||
|
||||
/obj/item/device/electronic_assembly/screwdriver_act(mob/living/user, obj/item/I)
|
||||
/obj/item/electronic_assembly/screwdriver_act(mob/living/user, obj/item/I)
|
||||
I.play_tool_sound(src)
|
||||
opened = !opened
|
||||
to_chat(user, "<span class='notice'>You [opened ? "open" : "close"] the maintenance hatch of [src].</span>")
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
/obj/item/device/electronic_assembly/attackby(obj/item/I, mob/living/user)
|
||||
/obj/item/electronic_assembly/attackby(obj/item/I, mob/living/user)
|
||||
if(can_anchor && default_unfasten_wrench(user, I, 20))
|
||||
return
|
||||
if(istype(I, /obj/item/integrated_circuit))
|
||||
@@ -413,7 +413,7 @@
|
||||
for(var/obj/item/integrated_circuit/input/S in assembly_components)
|
||||
S.attackby_react(I,user,user.a_intent)
|
||||
return ..()
|
||||
else if(istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/integrated_electronics/wirer) || istype(I, /obj/item/device/integrated_electronics/debugger))
|
||||
else if(istype(I, /obj/item/multitool) || istype(I, /obj/item/integrated_electronics/wirer) || istype(I, /obj/item/integrated_electronics/debugger))
|
||||
if(opened)
|
||||
interact(user)
|
||||
return TRUE
|
||||
@@ -442,8 +442,8 @@
|
||||
to_chat(user, "<span class='notice'>You slot \the [cell] inside \the [src]'s power supplier.</span>")
|
||||
interact(user)
|
||||
return TRUE
|
||||
else if(istype(I, /obj/item/device/integrated_electronics/detailer))
|
||||
var/obj/item/device/integrated_electronics/detailer/D = I
|
||||
else if(istype(I, /obj/item/integrated_electronics/detailer))
|
||||
var/obj/item/integrated_electronics/detailer/D = I
|
||||
detail_color = D.detail_color
|
||||
update_icon()
|
||||
else
|
||||
@@ -452,7 +452,7 @@
|
||||
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)
|
||||
@@ -487,32 +487,32 @@
|
||||
if(choice)
|
||||
choice.ask_for_input(user)
|
||||
|
||||
/obj/item/device/electronic_assembly/emp_act(severity)
|
||||
/obj/item/electronic_assembly/emp_act(severity)
|
||||
..()
|
||||
for(var/i in 1 to contents.len)
|
||||
var/atom/movable/AM = contents[i]
|
||||
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.use(amount * GLOB.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 * GLOB.CELLRATE))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/device/electronic_assembly/Moved(oldLoc, dir)
|
||||
/obj/item/electronic_assembly/Moved(oldLoc, dir)
|
||||
for(var/I in assembly_components)
|
||||
var/obj/item/integrated_circuit/IC = I
|
||||
IC.ext_moved(oldLoc, dir)
|
||||
if(light) //Update lighting objects (From light circuits).
|
||||
update_light()
|
||||
|
||||
/obj/item/device/electronic_assembly/stop_pulling()
|
||||
/obj/item/electronic_assembly/stop_pulling()
|
||||
for(var/I in assembly_components)
|
||||
var/obj/item/integrated_circuit/IC = I
|
||||
IC.stop_pulling()
|
||||
@@ -521,7 +521,7 @@
|
||||
|
||||
// Returns the object that is supposed to be used in attack messages, location checks, etc.
|
||||
// Override in children for special behavior.
|
||||
/obj/item/device/electronic_assembly/proc/get_object()
|
||||
/obj/item/electronic_assembly/proc/get_object()
|
||||
return src
|
||||
|
||||
// Returns the location to be used for dropping items.
|
||||
@@ -535,46 +535,46 @@
|
||||
|
||||
return acting_object.drop_location()
|
||||
|
||||
/obj/item/device/electronic_assembly/attack_tk(mob/user)
|
||||
/obj/item/electronic_assembly/attack_tk(mob/user)
|
||||
if(anchored)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/device/electronic_assembly/attack_hand(mob/user)
|
||||
/obj/item/electronic_assembly/attack_hand(mob/user)
|
||||
if(anchored)
|
||||
attack_self(user)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/device/electronic_assembly/default //The /default electronic_assemblys are to allow the introduction of the new naming scheme without breaking old saves.
|
||||
/obj/item/electronic_assembly/default //The /default electronic_assemblys are to allow the introduction of the new naming scheme without breaking old saves.
|
||||
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."
|
||||
|
||||
/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."
|
||||
@@ -582,35 +582,35 @@
|
||||
max_components = IC_MAX_SIZE_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"
|
||||
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."
|
||||
|
||||
/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."
|
||||
@@ -618,35 +618,35 @@
|
||||
max_components = IC_MAX_SIZE_BASE * 4
|
||||
max_complexity = IC_COMPLEXITY_BASE * 4
|
||||
|
||||
/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."
|
||||
|
||||
/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."
|
||||
@@ -656,38 +656,38 @@
|
||||
allowed_circuit_action_flags = IC_ACTION_MOVEMENT | IC_ACTION_COMBAT | IC_ACTION_LONG_RANGE
|
||||
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/secbot
|
||||
/obj/item/electronic_assembly/drone/secbot
|
||||
name = "type-c electronic drone"
|
||||
icon_state = "setup_drone_secbot"
|
||||
desc = "It's a case, for building mobile electronics with. This one resembles a Securitron."
|
||||
|
||||
/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."
|
||||
|
||||
/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 backing to allow it to stick to walls, but you'll still need to wrench the anchoring bolts in place to keep it on."
|
||||
@@ -695,7 +695,7 @@
|
||||
max_components = IC_MAX_SIZE_BASE * 2
|
||||
max_complexity = IC_COMPLEXITY_BASE * 2
|
||||
|
||||
/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 to allow it to stick to walls, but you'll still need to wrench the anchoring bolts in place to keep it on."
|
||||
@@ -703,7 +703,7 @@
|
||||
max_components = IC_MAX_SIZE_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 to allow it to stick to walls, but you'll still need to wrench the anchoring bolts in place to keep it on."
|
||||
@@ -711,7 +711,7 @@
|
||||
max_components = IC_MAX_SIZE_BASE
|
||||
max_complexity = IC_COMPLEXITY_BASE
|
||||
|
||||
/obj/item/device/electronic_assembly/wallmount/proc/mount_assembly(turf/on_wall, mob/user) //Yeah, this is admittedly just an abridged and kitbashed version of the wallframe attach procs.
|
||||
/obj/item/electronic_assembly/wallmount/proc/mount_assembly(turf/on_wall, mob/user) //Yeah, this is admittedly just an abridged and kitbashed version of the wallframe attach procs.
|
||||
if(get_dist(on_wall,user)>1)
|
||||
return
|
||||
var/ndir = get_dir(on_wall, user)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/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."
|
||||
@@ -9,7 +9,7 @@
|
||||
var/data_to_write = null
|
||||
var/accepting_refs = FALSE
|
||||
|
||||
/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(!user.IsAdvancedToolUser())
|
||||
return
|
||||
@@ -36,7 +36,7 @@
|
||||
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)
|
||||
/obj/item/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>")
|
||||
@@ -46,7 +46,7 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/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)
|
||||
if(io.io_type == DATA_CHANNEL)
|
||||
io.write_data_to_pin(data_to_write)
|
||||
var/data_to_show = data_to_write
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/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'
|
||||
@@ -27,17 +27,17 @@
|
||||
"purple" = COLOR_ASSEMBLY_PURPLE
|
||||
)
|
||||
|
||||
/obj/item/device/integrated_electronics/detailer/Initialize()
|
||||
/obj/item/integrated_electronics/detailer/Initialize()
|
||||
.=..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/device/integrated_electronics/detailer/update_icon()
|
||||
/obj/item/integrated_electronics/detailer/update_icon()
|
||||
cut_overlays()
|
||||
var/mutable_appearance/detail_overlay = mutable_appearance('icons/obj/assemblies/electronic_tools.dmi', "detailer-color")
|
||||
detail_overlay.color = detail_color
|
||||
add_overlay(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") as null|anything in color_list
|
||||
if(!color_list[color_choice])
|
||||
return
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
|
||||
// Locates a pin in the assembly when given component number, pin type and pin number
|
||||
// Components list can be supplied from the outside, for use in savefiles
|
||||
/obj/item/device/electronic_assembly/proc/get_pin_ref(component_number, pin_type, pin_number, list/components)
|
||||
/obj/item/electronic_assembly/proc/get_pin_ref(component_number, pin_type, pin_number, list/components)
|
||||
if(!components)
|
||||
components = assembly_components
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
// Same as get_pin_ref, but takes in a list of 3 parameters (same format as get_pin_parameters)
|
||||
// and performs extra sanity checks on parameters list and index numbers
|
||||
/obj/item/device/electronic_assembly/proc/get_pin_ref_list(list/parameters, list/components)
|
||||
/obj/item/electronic_assembly/proc/get_pin_ref_list(list/parameters, list/components)
|
||||
if(!components)
|
||||
components = assembly_components
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "template"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
materials = list() // To be filled later
|
||||
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.
|
||||
@@ -255,14 +255,14 @@ a creative player the means to solve many problems. Circuits are held inside an
|
||||
if(href_list["link"])
|
||||
linked = locate(href_list["link"]) in pin.linked
|
||||
|
||||
if(istype(held_item, /obj/item/device/integrated_electronics) || istype(held_item, /obj/item/device/multitool))
|
||||
if(istype(held_item, /obj/item/integrated_electronics) || istype(held_item, /obj/item/multitool))
|
||||
pin.handle_wire(linked, held_item, href_list["act"], usr)
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>You can't do a whole lot without the proper tools.</span>")
|
||||
|
||||
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
|
||||
|
||||
@@ -105,8 +105,8 @@ D [1]/ ||
|
||||
push_data()
|
||||
|
||||
/datum/integrated_io/proc/handle_wire(datum/integrated_io/linked_pin, obj/item/tool, action, mob/living/user)
|
||||
if(istype(tool, /obj/item/device/multitool))
|
||||
var/obj/item/device/multitool/multitool = tool
|
||||
if(istype(tool, /obj/item/multitool))
|
||||
var/obj/item/multitool/multitool = tool
|
||||
switch(action)
|
||||
if("wire")
|
||||
multitool.wire(src, user)
|
||||
@@ -119,15 +119,15 @@ D [1]/ ||
|
||||
ask_for_pin_data(user)
|
||||
return TRUE
|
||||
|
||||
else if(istype(tool, /obj/item/device/integrated_electronics/wirer))
|
||||
var/obj/item/device/integrated_electronics/wirer/wirer = tool
|
||||
else if(istype(tool, /obj/item/integrated_electronics/wirer))
|
||||
var/obj/item/integrated_electronics/wirer/wirer = tool
|
||||
if(linked_pin)
|
||||
wirer.wire(linked_pin, user)
|
||||
else
|
||||
wirer.wire(src, user)
|
||||
|
||||
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
|
||||
debugger.write_data(src, user)
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#define MAX_CIRCUIT_CLONE_TIME 3 MINUTES //circuit slow-clones can only take up this amount of time to complete
|
||||
|
||||
/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'
|
||||
@@ -16,30 +16,30 @@
|
||||
var/recycling = FALSE // If an assembly is being emptied into this printer
|
||||
var/list/program // Currently loaded save, in form of list
|
||||
|
||||
/obj/item/device/integrated_circuit_printer/proc/check_interactivity(mob/user)
|
||||
/obj/item/integrated_circuit_printer/proc/check_interactivity(mob/user)
|
||||
return user.canUseTopic(src, BE_CLOSE)
|
||||
|
||||
/obj/item/device/integrated_circuit_printer/upgraded
|
||||
/obj/item/integrated_circuit_printer/upgraded
|
||||
upgraded = TRUE
|
||||
can_clone = TRUE
|
||||
fast_clone = TRUE
|
||||
|
||||
/obj/item/device/integrated_circuit_printer/debug //translation: "integrated_circuit_printer/local_server"
|
||||
/obj/item/integrated_circuit_printer/debug //translation: "integrated_circuit_printer/local_server"
|
||||
name = "debug circuit printer"
|
||||
debug = TRUE
|
||||
upgraded = TRUE
|
||||
can_clone = TRUE
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/device/integrated_circuit_printer/Initialize()
|
||||
/obj/item/integrated_circuit_printer/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL), MINERAL_MATERIAL_AMOUNT * 25, TRUE, list(/obj/item/stack, /obj/item/integrated_circuit, /obj/item/device/electronic_assembly))
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL), MINERAL_MATERIAL_AMOUNT * 25, TRUE, list(/obj/item/stack, /obj/item/integrated_circuit, /obj/item/electronic_assembly))
|
||||
|
||||
/obj/item/device/integrated_circuit_printer/Destroy()
|
||||
/obj/item/integrated_circuit_printer/Destroy()
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/integrated_circuit_printer/process()
|
||||
/obj/item/integrated_circuit_printer/process()
|
||||
if(!cloning)
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
if(world.time >= clone_countdown || fast_clone)
|
||||
@@ -50,7 +50,7 @@
|
||||
cloning = FALSE
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/item/device/integrated_circuit_printer/attackby(obj/item/O, mob/user)
|
||||
/obj/item/integrated_circuit_printer/attackby(obj/item/O, mob/user)
|
||||
if(istype(O, /obj/item/disk/integrated_circuit/upgrade/advanced))
|
||||
if(upgraded)
|
||||
to_chat(user, "<span class='warning'>[src] already has this upgrade. </span>")
|
||||
@@ -69,8 +69,8 @@
|
||||
interact(user)
|
||||
return TRUE
|
||||
|
||||
if(istype(O, /obj/item/device/electronic_assembly))
|
||||
var/obj/item/device/electronic_assembly/EA = O //microtransactions not included
|
||||
if(istype(O, /obj/item/electronic_assembly))
|
||||
var/obj/item/electronic_assembly/EA = O //microtransactions not included
|
||||
if(EA.assembly_components.len)
|
||||
if(recycling)
|
||||
return
|
||||
@@ -109,10 +109,10 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/device/integrated_circuit_printer/attack_self(mob/user)
|
||||
/obj/item/integrated_circuit_printer/attack_self(mob/user)
|
||||
interact(user)
|
||||
|
||||
/obj/item/device/integrated_circuit_printer/interact(mob/user)
|
||||
/obj/item/integrated_circuit_printer/interact(mob/user)
|
||||
if(isnull(current_category))
|
||||
current_category = SScircuit.circuit_fabricator_recipe_list[1]
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
|
||||
user << browse(HTML, "window=integrated_printer;size=600x500;border=1;can_resize=1;can_close=1;can_minimize=1")
|
||||
|
||||
/obj/item/device/integrated_circuit_printer/Topic(href, href_list)
|
||||
/obj/item/integrated_circuit_printer/Topic(href, href_list)
|
||||
if(!check_interactivity(usr))
|
||||
return
|
||||
if(..())
|
||||
@@ -186,8 +186,8 @@
|
||||
return TRUE
|
||||
|
||||
var/cost = 400
|
||||
if(ispath(build_type, /obj/item/device/electronic_assembly))
|
||||
var/obj/item/device/electronic_assembly/E = SScircuit.cached_assemblies[build_type]
|
||||
if(ispath(build_type, /obj/item/electronic_assembly))
|
||||
var/obj/item/electronic_assembly/E = SScircuit.cached_assemblies[build_type]
|
||||
cost = E.materials[MAT_METAL]
|
||||
else if(ispath(build_type, /obj/item/integrated_circuit))
|
||||
var/obj/item/integrated_circuit/IC = SScircuit.cached_components[build_type]
|
||||
@@ -204,8 +204,8 @@
|
||||
var/obj/item/built = new build_type(drop_location())
|
||||
usr.put_in_hands(built)
|
||||
|
||||
if(istype(built, /obj/item/device/electronic_assembly))
|
||||
var/obj/item/device/electronic_assembly/E = built
|
||||
if(istype(built, /obj/item/electronic_assembly))
|
||||
var/obj/item/electronic_assembly/E = built
|
||||
E.opened = TRUE
|
||||
E.update_icon()
|
||||
//reupdate diagnostic hud because it was put_in_hands() and not pickup()'ed
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
|
||||
// Saves type and modified name (if any) to a list
|
||||
// The list is converted to JSON down the line.
|
||||
/obj/item/device/electronic_assembly/proc/save()
|
||||
/obj/item/electronic_assembly/proc/save()
|
||||
var/list/assembly_params = list()
|
||||
|
||||
// Save initial name used for differentiating assemblies
|
||||
@@ -138,7 +138,7 @@
|
||||
|
||||
// Verifies a list of assembly parameters
|
||||
// Returns null on success, error name on failure
|
||||
/obj/item/device/electronic_assembly/proc/verify_save(list/assembly_params)
|
||||
/obj/item/electronic_assembly/proc/verify_save(list/assembly_params)
|
||||
// Validate name and color
|
||||
if(assembly_params["name"] && !reject_bad_name(assembly_params["name"], TRUE))
|
||||
return "Bad assembly name."
|
||||
@@ -147,7 +147,7 @@
|
||||
|
||||
// Loads assembly parameters from a list
|
||||
// Doesn't verify any of the parameters it loads, this is the job of verify_save()
|
||||
/obj/item/device/electronic_assembly/proc/load(list/assembly_params)
|
||||
/obj/item/electronic_assembly/proc/load(list/assembly_params)
|
||||
// Load modified name, if any.
|
||||
if(assembly_params["name"])
|
||||
name = assembly_params["name"]
|
||||
@@ -165,7 +165,7 @@
|
||||
|
||||
// Attempts to save an assembly into a save file format.
|
||||
// Returns null if assembly is not complete enough to be saved.
|
||||
/datum/controller/subsystem/processing/circuit/proc/save_electronic_assembly(obj/item/device/electronic_assembly/assembly)
|
||||
/datum/controller/subsystem/processing/circuit/proc/save_electronic_assembly(obj/item/electronic_assembly/assembly)
|
||||
// No components? Don't even try to save it.
|
||||
if(!length(assembly.assembly_components))
|
||||
return
|
||||
@@ -241,7 +241,7 @@
|
||||
|
||||
// Validate type, get a temporary component
|
||||
var/assembly_path = all_assemblies[assembly_params["type"]]
|
||||
var/obj/item/device/electronic_assembly/assembly = cached_assemblies[assembly_path]
|
||||
var/obj/item/electronic_assembly/assembly = cached_assemblies[assembly_path]
|
||||
if(!assembly)
|
||||
return "Invalid assembly type."
|
||||
|
||||
@@ -335,8 +335,8 @@
|
||||
|
||||
// Block 1. Assembly.
|
||||
var/list/assembly_params = blocks["assembly"]
|
||||
var/obj/item/device/electronic_assembly/assembly_path = all_assemblies[assembly_params["type"]]
|
||||
var/obj/item/device/electronic_assembly/assembly = new assembly_path(null)
|
||||
var/obj/item/electronic_assembly/assembly_path = all_assemblies[assembly_params["type"]]
|
||||
var/obj/item/electronic_assembly/assembly = new assembly_path(null)
|
||||
assembly.load(assembly_params)
|
||||
|
||||
|
||||
|
||||
@@ -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 \
|
||||
@@ -15,10 +15,10 @@
|
||||
var/datum/integrated_io/selected_io = null
|
||||
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 class='warning'>\The [io.holder] needs to be secured inside an assembly first.</span>")
|
||||
return
|
||||
@@ -76,7 +76,7 @@
|
||||
[io.name] are not connected.</span>")
|
||||
return
|
||||
|
||||
/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
|
||||
|
||||
Reference in New Issue
Block a user