Files
Cody Brittain 3f62424312 [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>
2026-02-01 05:14:26 +00:00

132 lines
3.7 KiB
Plaintext

/obj/item/assembly
name = "assembly"
desc = "A small electronic device that should never exist."
icon = 'icons/obj/assemblies/new_assemblies.dmi'
icon_state = ""
obj_flags = OBJ_FLAG_CONDUCTABLE
w_class = WEIGHT_CLASS_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 100)
recyclable = TRUE
throwforce = 2
throw_speed = 3
throw_range = 10
drop_sound = 'sound/items/drop/component.ogg'
pickup_sound = 'sound/items/pickup/component.ogg'
origin_tech = list(TECH_MAGNET = 1)
var/secured = TRUE
var/list/attached_overlays = null
var/obj/item/assembly_holder/holder = null
var/cooldown = 0 //To prevent spam
/**
* Wires that the assembly has installed
*
* Refer to `code\__DEFINES\wires.dm` in the dedicated section for the supported wires, which _must_ be bitflags
*
* At the time of writing this, it supports:
* * WIRE_RECEIVE_ASSEMBLY
* * WIRE_PULSE_ASSEMBLY
* * WIRE_PULSE_SPECIAL
* * WIRE_RADIO_RECEIVE
* * WIRE_RADIO_PULSE
*/
var/wires = WIRE_RECEIVE_ASSEMBLY | WIRE_PULSE_ASSEMBLY
/obj/item/assembly/Destroy()
STOP_PROCESSING(SSprocessing, src)
holder = null
ClearOverlays()
attached_overlays = null
. = ..()
/obj/item/assembly/proc/holder_movement()
return
//Called via spawn(10) to have it count down the cooldown var
/obj/item/assembly/proc/process_cooldown()
cooldown--
if(cooldown <= 0)
return FALSE
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 1 SECOND)
return TRUE
// Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs
/obj/item/assembly/proc/pulsed(var/radio = 0)
if(holder && (wires & WIRE_RECEIVE_ASSEMBLY))
activate()
if(radio && (wires & WIRE_RADIO_RECEIVE))
activate()
return TRUE
// Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct
/obj/item/assembly/proc/pulse(var/radio = 0)
if(holder && (wires & WIRE_PULSE_ASSEMBLY))
holder.process_activation(src, TRUE, FALSE)
if(holder && (wires & WIRE_PULSE_SPECIAL))
holder.process_activation(src, FALSE, TRUE)
return TRUE
/obj/item/assembly/proc/activate()
if(!secured || cooldown)
return FALSE
cooldown = 2
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 1 SECOND)
return TRUE
/obj/item/assembly/proc/toggle_secure()
secured = !secured
update_icon()
return secured
// Called when an assembly is attacked by another
/obj/item/assembly/proc/attach_assembly(var/obj/item/assembly/A, var/mob/user)
holder = new /obj/item/assembly_holder(get_turf(src))
if(holder.attach(A, src, user))
to_chat(user, SPAN_NOTICE("You attach \the [A] to \the [src]!"))
return TRUE
return FALSE
/obj/item/assembly/attackby(obj/item/attacking_item, mob/user)
if(isassembly(attacking_item))
var/obj/item/assembly/A = attacking_item
if(!A.secured && !secured)
attach_assembly(A, user)
return
if(attacking_item.tool_behaviour == TOOL_SCREWDRIVER)
if(!toggle_secure())
to_chat(user, SPAN_NOTICE("\The [src] can now be attached!"))
return
return ..()
/obj/item/assembly/process()
STOP_PROCESSING(SSprocessing, src)
return
/obj/item/assembly/feedback_hints(mob/user, distance, is_adjacent)
. += ..()
if((distance <= 1 || loc == user) && !secured)
. += SPAN_NOTICE("\The [src] can be attached!")
/obj/item/assembly/attack_self(mob/user)
if(!user)
return FALSE
interact(user)
return TRUE
/obj/item/assembly/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
SIGNAL_HANDLER
/obj/item/assembly/interact(mob/user)
return
/obj/item/assembly/ui_host(mob/user)
. = ..()
// Sets the UI host to the transfer valve if its mounted on a transfer_valve
if(istype(loc,/obj/item/transfer_valve))
return loc
return holder || .