[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
+20 -20
View File
@@ -1,4 +1,4 @@
/obj/item/device/assembly
/obj/item/assembly
name = "assembly"
desc = "A small electronic device that should never exist."
icon = 'icons/obj/assemblies/new_assemblies.dmi'
@@ -16,7 +16,7 @@
var/secured = TRUE
var/list/attached_overlays = null
var/obj/item/device/assembly_holder/holder = null
var/obj/item/assembly_holder/holder = null
var/cooldown = 0 //To prevent spam
/**
@@ -33,7 +33,7 @@
*/
var/wires = WIRE_RECEIVE_ASSEMBLY | WIRE_PULSE_ASSEMBLY
/obj/item/device/assembly/Destroy()
/obj/item/assembly/Destroy()
STOP_PROCESSING(SSprocessing, src)
holder = null
@@ -42,11 +42,11 @@
. = ..()
/obj/item/device/assembly/proc/holder_movement()
/obj/item/assembly/proc/holder_movement()
return
//Called via spawn(10) to have it count down the cooldown var
/obj/item/device/assembly/proc/process_cooldown()
/obj/item/assembly/proc/process_cooldown()
cooldown--
if(cooldown <= 0)
return FALSE
@@ -54,7 +54,7 @@
return TRUE
// Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs
/obj/item/device/assembly/proc/pulsed(var/radio = 0)
/obj/item/assembly/proc/pulsed(var/radio = 0)
if(holder && (wires & WIRE_RECEIVE_ASSEMBLY))
activate()
if(radio && (wires & WIRE_RADIO_RECEIVE))
@@ -62,36 +62,36 @@
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/device/assembly/proc/pulse(var/radio = 0)
/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/device/assembly/proc/activate()
/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/device/assembly/proc/toggle_secure()
/obj/item/assembly/proc/toggle_secure()
secured = !secured
update_icon()
return secured
// Called when an assembly is attacked by another
/obj/item/device/assembly/proc/attach_assembly(var/obj/item/device/assembly/A, var/mob/user)
holder = new /obj/item/device/assembly_holder(get_turf(src))
/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/device/assembly/attackby(obj/item/attacking_item, mob/user)
/obj/item/assembly/attackby(obj/item/attacking_item, mob/user)
if(isassembly(attacking_item))
var/obj/item/device/assembly/A = attacking_item
var/obj/item/assembly/A = attacking_item
if(!A.secured && !secured)
attach_assembly(A, user)
return
@@ -101,31 +101,31 @@
return
return ..()
/obj/item/device/assembly/process()
/obj/item/assembly/process()
STOP_PROCESSING(SSprocessing, src)
return
/obj/item/device/assembly/feedback_hints(mob/user, distance, is_adjacent)
/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/device/assembly/attack_self(mob/user)
/obj/item/assembly/attack_self(mob/user)
if(!user)
return FALSE
interact(user)
return TRUE
/obj/item/device/assembly/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
/obj/item/assembly/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
SIGNAL_HANDLER
/obj/item/device/assembly/interact(mob/user)
/obj/item/assembly/interact(mob/user)
return
/obj/item/device/assembly/ui_host(mob/user)
/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/device/transfer_valve))
if(istype(loc,/obj/item/transfer_valve))
return loc
return holder || .
+12 -12
View File
@@ -1,4 +1,4 @@
/obj/item/device/onetankbomb
/obj/item/onetankbomb
name = "bomb"
icon = 'icons/obj/tank.dmi'
item_state = "assembly"
@@ -9,22 +9,22 @@
obj_flags = OBJ_FLAG_CONDUCTABLE
movable_flags = MOVABLE_FLAG_PROXMOVE
var/status = FALSE // FALSE - not readied // TRUE - bomb finished with welder
var/obj/item/device/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device
var/obj/item/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device
var/obj/item/tank/bombtank = null //the second part of the bomb is a phoron tank
/obj/item/device/onetankbomb/examine(mob/user, distance, is_adjacent, infix, suffix, show_extended)
/obj/item/onetankbomb/examine(mob/user, distance, is_adjacent, infix, suffix, show_extended)
. = ..()
examinate(user, bombtank, show_extended)
/obj/item/device/onetankbomb/update_icon()
/obj/item/onetankbomb/update_icon()
if(bombtank)
icon_state = bombtank.icon_state
if(bombassembly)
AddOverlays(bombassembly)
AddOverlays("bomb_assembly")
/obj/item/device/onetankbomb/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item, /obj/item/device/analyzer))
/obj/item/onetankbomb/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item, /obj/item/analyzer))
bombtank.attackby(attacking_item, user)
return
if(!status && (attacking_item.tool_behaviour == TOOL_WRENCH || istype(attacking_item, /obj/item/wirecutters/bomb))) //This is basically bomb assembly code inverted. apparently it works.
@@ -57,17 +57,17 @@
add_fingerprint(user)
..()
/obj/item/device/onetankbomb/attack_self(mob/user) //pressing the bomb accesses its assembly
/obj/item/onetankbomb/attack_self(mob/user) //pressing the bomb accesses its assembly
bombassembly.attack_self(user, TRUE)
add_fingerprint(user)
return
/obj/item/device/onetankbomb/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here.
/obj/item/onetankbomb/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here.
visible_message("[icon2html(src, viewers(get_turf(src)))] *beep* *beep*", "*beep* *beep*")
addtimer(CALLBACK(src, PROC_REF(delayed_explosion)), 10 SECONDS)
/obj/item/device/onetankbomb/proc/delayed_explosion()
/obj/item/onetankbomb/proc/delayed_explosion()
if(QDELETED(src))
return
if(status)
@@ -75,21 +75,21 @@
else
bombtank.release()
/obj/item/device/onetankbomb/HasProximity(atom/movable/AM as mob|obj)
/obj/item/onetankbomb/HasProximity(atom/movable/AM as mob|obj)
if(bombassembly)
bombassembly.HasProximity(AM)
// ---------- Procs below are for tanks that are used exclusively in 1-tank bombs ----------
/obj/item/tank/proc/bomb_assemble(W, user) //Bomb assembly proc. This turns assembly+tank into a bomb
var/obj/item/device/assembly_holder/S = W
var/obj/item/assembly_holder/S = W
var/mob/M = user
if(!S.secured) //Check if the assembly is secured
return
if(isigniter(S.a_left) == isigniter(S.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it
return
var/obj/item/device/onetankbomb/R = new /obj/item/device/onetankbomb(loc)
var/obj/item/onetankbomb/R = new /obj/item/onetankbomb(loc)
//this is really bad code, TODO: Make it better
M.drop_item() //Remove the assembly from your hands
+6 -6
View File
@@ -1,20 +1,20 @@
/proc/isassembly(O)
return istype(O, /obj/item/device/assembly)
return istype(O, /obj/item/assembly)
/proc/isigniter(O)
return istype(O, /obj/item/device/assembly/igniter)
return istype(O, /obj/item/assembly/igniter)
/proc/isinfared(O)
return istype(O, /obj/item/device/assembly/infra)
return istype(O, /obj/item/assembly/infra)
/proc/isprox(O)
return istype(O, /obj/item/device/assembly/prox_sensor)
return istype(O, /obj/item/assembly/prox_sensor)
/proc/issignaler(O)
return istype(O, /obj/item/device/assembly/signaler)
return istype(O, /obj/item/assembly/signaler)
/proc/istimer(O)
return istype(O, /obj/item/device/assembly/timer)
return istype(O, /obj/item/assembly/timer)
// IsSpecialAssemblyIf true is an object that can be attached to an assembly holder but is a special thing like a phoron can or door
/obj/proc/IsSpecialAssembly()
+34 -34
View File
@@ -1,4 +1,4 @@
/obj/item/device/assembly_holder
/obj/item/assembly_holder
name = "assembly"
icon = 'icons/obj/assemblies/new_assemblies.dmi'
icon_state = "holder"
@@ -11,11 +11,11 @@
throw_range = 10
var/secured = FALSE
var/obj/item/device/assembly/a_left = null
var/obj/item/device/assembly/a_right = null
var/obj/item/assembly/a_left = null
var/obj/item/assembly/a_right = null
var/obj/special_assembly = null
/obj/item/device/assembly_holder/feedback_hints(mob/user, distance, is_adjacent)
/obj/item/assembly_holder/feedback_hints(mob/user, distance, is_adjacent)
. += ..()
if(distance <= 1 || src.loc == user)
if (src.secured)
@@ -23,7 +23,7 @@
else
. += SPAN_NOTICE("\The [src] can be attached!")
/obj/item/device/assembly_holder/Initialize(mapload, ...)
/obj/item/assembly_holder/Initialize(mapload, ...)
. = ..()
become_hearing_sensitive()
@@ -33,7 +33,7 @@
AddElement(/datum/element/connect_loc, loc_connections)
/obj/item/device/assembly_holder/Destroy()
/obj/item/assembly_holder/Destroy()
lose_hearing_sensitivity()
QDEL_NULL(a_left)
@@ -42,17 +42,17 @@
. = ..()
/obj/item/device/assembly_holder/proc/detached()
/obj/item/assembly_holder/proc/detached()
if(a_left)
a_left.holder_movement()
if(a_right)
a_right.holder_movement()
return
/obj/item/device/assembly_holder/IsAssemblyHolder()
/obj/item/assembly_holder/IsAssemblyHolder()
return TRUE
/obj/item/device/assembly_holder/proc/attach(var/obj/item/device/assembly/D, var/obj/item/device/assembly/D2, var/mob/user)
/obj/item/assembly_holder/proc/attach(var/obj/item/assembly/D, var/obj/item/assembly/D2, var/mob/user)
if(!istype(D) || !istype(D2))
return FALSE
if(D.secured || D2.secured)
@@ -71,13 +71,13 @@
user.put_in_hands(src)
return TRUE
/obj/item/device/assembly_holder/proc/attach_special(var/obj/O, var/mob/user)
/obj/item/assembly_holder/proc/attach_special(var/obj/O, var/mob/user)
if(!O)
return
if(!O.IsSpecialAssembly())
return FALSE
/obj/item/device/assembly_holder/update_icon()
/obj/item/assembly_holder/update_icon()
ClearOverlays()
if(a_left)
AddOverlays("[a_left.icon_state]_left")
@@ -90,7 +90,7 @@
if(master)
master.update_icon()
/obj/item/device/assembly_holder/HasProximity(atom/movable/AM as mob|obj)
/obj/item/assembly_holder/HasProximity(atom/movable/AM as mob|obj)
if(a_left)
a_left.HasProximity(AM)
if(a_right)
@@ -98,7 +98,7 @@
if(special_assembly)
special_assembly.HasProximity(AM)
/obj/item/device/assembly_holder/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
/obj/item/assembly_holder/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
SIGNAL_HANDLER
if(a_left)
@@ -106,7 +106,7 @@
if(a_right)
a_right.on_entered(source, arrived, old_loc, old_locs)
/obj/item/device/assembly_holder/on_found(mob/finder)
/obj/item/assembly_holder/on_found(mob/finder)
if(a_left)
a_left.on_found(finder)
if(a_right)
@@ -116,20 +116,20 @@
var/obj/item/S = special_assembly
S.on_found(finder)
/obj/item/device/assembly_holder/Move()
/obj/item/assembly_holder/Move()
. = ..()
if(a_left && a_right)
a_left.holder_movement()
a_right.holder_movement()
/obj/item/device/assembly_holder/attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess
/obj/item/assembly_holder/attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess
if(a_left && a_right)
a_left.holder_movement()
a_right.holder_movement()
return ..()
/obj/item/device/assembly_holder/attackby(obj/item/attacking_item, mob/user)
/obj/item/assembly_holder/attackby(obj/item/attacking_item, mob/user)
if(attacking_item.tool_behaviour == TOOL_SCREWDRIVER)
if(!a_left || !a_right)
to_chat(user, SPAN_DANGER("BUG: Assembly part missing, please report this!"))
@@ -148,7 +148,7 @@
else
return ..()
/obj/item/device/assembly_holder/attack_self(mob/user)
/obj/item/assembly_holder/attack_self(mob/user)
add_fingerprint(user)
if(secured)
if(!a_left || !a_right)
@@ -162,9 +162,9 @@
a_right.attack_self(user)
return
else
if(!istype(a_left, /obj/item/device/assembly/igniter))
if(!istype(a_left, /obj/item/assembly/igniter))
a_left.attack_self(user)
if(!istype(a_right, /obj/item/device/assembly/igniter))
if(!istype(a_right, /obj/item/assembly/igniter))
a_right.attack_self(user)
else
var/turf/T = get_turf(src)
@@ -184,7 +184,7 @@
qdel(src)
/obj/item/device/assembly_holder/proc/process_activation(var/obj/D, var/normal = 1, var/special = 1)
/obj/item/assembly_holder/proc/process_activation(var/obj/D, var/normal = 1, var/special = 1)
if(!D)
return FALSE
if(!secured)
@@ -198,22 +198,22 @@
master.receive_signal()
return TRUE
/obj/item/device/assembly_holder/hear_talk(mob/living/M, msg, verb, datum/language/speaking)
/obj/item/assembly_holder/hear_talk(mob/living/M, msg, verb, datum/language/speaking)
if(a_right)
a_right.hear_talk(M, msg, verb, speaking)
if(a_left)
a_left.hear_talk(M, msg, verb, speaking)
/obj/item/device/assembly_holder/timer_igniter
/obj/item/assembly_holder/timer_igniter
name = "timer-igniter assembly"
/obj/item/device/assembly_holder/timer_igniter/Initialize(mapload, ...)
/obj/item/assembly_holder/timer_igniter/Initialize(mapload, ...)
. = ..()
var/obj/item/device/assembly/igniter/ign = new(src)
var/obj/item/assembly/igniter/ign = new(src)
ign.secured = TRUE
ign.holder = src
var/obj/item/device/assembly/timer/tmr = new(src)
var/obj/item/assembly/timer/tmr = new(src)
tmr.time = 5
tmr.secured = TRUE
tmr.holder = src
@@ -224,26 +224,26 @@
update_icon()
name = "[initial(name)] ([tmr.time] secs)"
loc.verbs += /obj/item/device/assembly_holder/timer_igniter/verb/configure
loc.verbs += /obj/item/assembly_holder/timer_igniter/verb/configure
/obj/item/device/assembly_holder/timer_igniter/detached()
loc.verbs -= /obj/item/device/assembly_holder/timer_igniter/verb/configure
/obj/item/assembly_holder/timer_igniter/detached()
loc.verbs -= /obj/item/assembly_holder/timer_igniter/verb/configure
..()
/obj/item/device/assembly_holder/timer_igniter/verb/configure()
/obj/item/assembly_holder/timer_igniter/verb/configure()
set name = "Set Timer"
set category = "Object.Held"
set src in usr
if(!(usr.stat || usr.restrained()))
var/obj/item/device/assembly_holder/holder
var/obj/item/assembly_holder/holder
if(istype(src,/obj/item/grenade/chem_grenade))
var/obj/item/grenade/chem_grenade/gren = src
holder = gren.detonator
var/obj/item/device/assembly/timer/tmr = holder.a_left
if(!istype(tmr, /obj/item/device/assembly/timer))
var/obj/item/assembly/timer/tmr = holder.a_left
if(!istype(tmr, /obj/item/assembly/timer))
tmr = holder.a_right
if(!istype(tmr, /obj/item/device/assembly/timer))
if(!istype(tmr, /obj/item/assembly/timer))
to_chat(usr, SPAN_WARNING("This detonator has no timer."))
return
+5 -5
View File
@@ -1,4 +1,4 @@
/obj/item/device/assembly/igniter
/obj/item/assembly/igniter
name = "igniter"
desc = "A small electronic device able to ignite combustable substances."
icon_state = "igniter"
@@ -10,7 +10,7 @@
secured = TRUE
wires = WIRE_RECEIVE_ASSEMBLY
/obj/item/device/assembly/igniter/activate()
/obj/item/assembly/igniter/activate()
. = ..()
if(!.)
return FALSE //Cooldown check
@@ -22,7 +22,7 @@
var/turf/location = get_turf(loc)
if(location)
location.hotspot_expose(1000, 1000)
if(istype(src.loc, /obj/item/device/assembly_holder))
if(istype(src.loc, /obj/item/assembly_holder))
if(istype(src.loc.loc, /obj/structure/reagent_dispensers/fueltank))
var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc
if(tank?.is_leaking)
@@ -30,9 +30,9 @@
spark(src, 4, GLOB.cardinals)
return TRUE
/obj/item/device/assembly/igniter/attack_self(mob/user)
/obj/item/assembly/igniter/attack_self(mob/user)
activate()
add_fingerprint(user)
/obj/item/device/assembly/igniter/isFlameSource()
/obj/item/assembly/igniter/isFlameSource()
return TRUE
+17 -17
View File
@@ -1,4 +1,4 @@
/obj/item/device/assembly/infra
/obj/item/assembly/infra
name = "infrared emitter"
desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted."
icon_state = "infrared"
@@ -15,18 +15,18 @@
var/obj/effect/beam/i_beam/first = null
var/turf/beam_origin //If we're not on this turf anymore, we've moved. Catches holder.master movements when we're attached to bombs and stuff.
/obj/item/device/assembly/infra/feedback_hints(mob/user, distance, is_adjacent)
/obj/item/assembly/infra/feedback_hints(mob/user, distance, is_adjacent)
. += ..()
var/direction_text = dir2text(dir)
. += SPAN_NOTICE("It is facing [direction_text].")
/obj/item/device/assembly/infra/activate()
/obj/item/assembly/infra/activate()
if(!..())
return FALSE //Cooldown check
toggle_on()
return TRUE
/obj/item/device/assembly/infra/proc/toggle_on()
/obj/item/assembly/infra/proc/toggle_on()
on = !on
if(secured && on)
START_PROCESSING(SSprocessing, src)
@@ -36,7 +36,7 @@
STOP_PROCESSING(SSprocessing, src)
update_icon()
/obj/item/device/assembly/infra/toggle_secure()
/obj/item/assembly/infra/toggle_secure()
secured = !secured
if(secured && on)
START_PROCESSING(SSprocessing, src)
@@ -47,7 +47,7 @@
update_icon()
return secured
/obj/item/device/assembly/infra/update_icon()
/obj/item/assembly/infra/update_icon()
ClearOverlays()
attached_overlays = list()
if(on)
@@ -57,13 +57,13 @@
if(holder)
holder.update_icon()
/obj/item/device/assembly/infra/rotate(var/mob/user, var/anchored_ignore = FALSE)
/obj/item/assembly/infra/rotate(var/mob/user, var/anchored_ignore = FALSE)
if(..())
var/direction_text = dir2text(dir)
to_chat(user, SPAN_NOTICE("You rotate \the [src] to face [direction_text]."))
QDEL_NULL(first)
/obj/item/device/assembly/infra/process()
/obj/item/assembly/infra/process()
if(!on || !secured)
QDEL_NULL(first)
@@ -100,23 +100,23 @@
first.process()
/obj/item/device/assembly/infra/attack_hand()
/obj/item/assembly/infra/attack_hand()
QDEL_NULL(first)
return ..()
/obj/item/device/assembly/infra/Move()
/obj/item/assembly/infra/Move()
var/t = dir
. = ..()
set_dir(t)
QDEL_NULL(first)
/obj/item/device/assembly/infra/holder_movement()
/obj/item/assembly/infra/holder_movement()
if(!holder)
return FALSE
QDEL_NULL(first)
return TRUE
/obj/item/device/assembly/infra/proc/trigger_beam()
/obj/item/assembly/infra/proc/trigger_beam()
if(!secured || !on || cooldown)
return FALSE
pulse(FALSE)
@@ -125,26 +125,26 @@
cooldown = 2
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 10)
/obj/item/device/assembly/infra/interact(mob/user)
/obj/item/assembly/infra/interact(mob/user)
. = ..()
if(!secured)
to_chat(user, SPAN_WARNING("\The [src] is unsecured!"))
return
ui_interact(user)
/obj/item/device/assembly/infra/ui_interact(mob/user, datum/tgui/ui)
/obj/item/assembly/infra/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "Infrared", "Infrared Emitter", 320, 220)
ui.open()
/obj/item/device/assembly/infra/ui_data(mob/user)
/obj/item/assembly/infra/ui_data(mob/user)
var/list/data = list()
data["active"] = on
data["visible"] = visible
return data
/obj/item/device/assembly/infra/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
/obj/item/assembly/infra/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
@@ -166,7 +166,7 @@
icon = 'icons/obj/projectiles.dmi'
icon_state = "ibeam"
var/obj/effect/beam/i_beam/next = null
var/obj/item/device/assembly/infra/master = null
var/obj/item/assembly/infra/master = null
var/limit = null
/obj/effect/beam/i_beam/New(loc, var/set_master)
+13 -13
View File
@@ -1,4 +1,4 @@
/obj/item/device/assembly/mousetrap
/obj/item/assembly/mousetrap
name = "mousetrap"
desc = "A handy little spring-loaded trap for catching pesty rodents."
item_icons = list(
@@ -13,7 +13,7 @@
matter = list(DEFAULT_WALL_MATERIAL = 100)
var/armed = FALSE
/obj/item/device/assembly/mousetrap/Initialize(mapload)
/obj/item/assembly/mousetrap/Initialize(mapload)
. = ..()
var/static/list/loc_connections = list(
@@ -22,17 +22,17 @@
AddElement(/datum/element/connect_loc, loc_connections)
/obj/item/device/assembly/mousetrap/feedback_hints(mob/user, distance, is_adjacent)
/obj/item/assembly/mousetrap/feedback_hints(mob/user, distance, is_adjacent)
. += ..()
if(armed)
. += SPAN_NOTICE("It looks like it's armed.")
/obj/item/device/assembly/mousetrap/update_icon()
/obj/item/assembly/mousetrap/update_icon()
icon_state = armed ? "mousetraparmed" : "mousetrap"
if(holder)
holder.update_icon()
/obj/item/device/assembly/mousetrap/proc/triggered(var/mob/living/target, var/type = "feet")
/obj/item/assembly/mousetrap/proc/triggered(var/mob/living/target, var/type = "feet")
if(!armed || !istype(target))
return
@@ -65,7 +65,7 @@
update_icon()
pulse(FALSE)
/obj/item/device/assembly/mousetrap/attack_self(mob/living/user)
/obj/item/assembly/mousetrap/attack_self(mob/living/user)
if(!armed)
to_chat(user, SPAN_NOTICE("You arm \the [src]."))
else
@@ -76,12 +76,12 @@
update_icon()
playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
/obj/item/device/assembly/mousetrap/attack_hand(mob/living/user)
/obj/item/assembly/mousetrap/attack_hand(mob/living/user)
if(armed && clumsy_check(user))
return
return ..()
/obj/item/device/assembly/mousetrap/proc/clumsy_check(var/mob/living/user)
/obj/item/assembly/mousetrap/proc/clumsy_check(var/mob/living/user)
if((user.is_clumsy() || (user.mutations & DUMB)) && prob(50))
var/which_hand = BP_L_HAND
if(!user.hand)
@@ -91,7 +91,7 @@
return TRUE
return FALSE
/obj/item/device/assembly/mousetrap/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
/obj/item/assembly/mousetrap/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
if(armed)
if(israt(arrived))
triggered(arrived)
@@ -106,24 +106,24 @@
L.visible_message(SPAN_WARNING("\The [L] accidentally steps on \the [src]."), SPAN_WARNING("You accidentally step on \the [src]."))
/obj/item/device/assembly/mousetrap/on_found(mob/finder)
/obj/item/assembly/mousetrap/on_found(mob/finder)
if(armed)
finder.visible_message(SPAN_WARNING("[finder] accidentally sets off \the [src]!"), SPAN_WARNING("You accidentally trigger \the [src]!"))
triggered(finder, finder.hand ? BP_L_HAND : BP_R_HAND)
return TRUE
return FALSE
/obj/item/device/assembly/mousetrap/hitby(atom/movable/hitting_atom, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
/obj/item/assembly/mousetrap/hitby(atom/movable/hitting_atom, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
if(!armed)
return ..()
visible_message(SPAN_WARNING("\The [src] is triggered by \the [hitting_atom]."))
triggered(null)
/obj/item/device/assembly/mousetrap/armed
/obj/item/assembly/mousetrap/armed
icon_state = "mousetraparmed"
armed = TRUE
/obj/item/device/assembly/mousetrap/verb/hide_under()
/obj/item/assembly/mousetrap/verb/hide_under()
set src in oview(1)
set name = "Hide"
set category = "Object"
+14 -14
View File
@@ -1,4 +1,4 @@
/obj/item/device/assembly/prox_sensor
/obj/item/assembly/prox_sensor
name = "proximity sensor"
desc = "Used for scanning and alerting when someone enters a certain proximity."
icon_state = "prox"
@@ -16,7 +16,7 @@
var/time = 10
var/range = 2
/obj/item/device/assembly/prox_sensor/activate()
/obj/item/assembly/prox_sensor/activate()
. = ..()
if(!.)
return 0//Cooldown check
@@ -24,7 +24,7 @@
update_icon()
return FALSE
/obj/item/device/assembly/prox_sensor/toggle_secure()
/obj/item/assembly/prox_sensor/toggle_secure()
secured = !secured
if(secured)
START_PROCESSING(SSprocessing, src)
@@ -35,7 +35,7 @@
update_icon()
return secured
/obj/item/device/assembly/prox_sensor/HasProximity(atom/movable/AM as mob|obj)
/obj/item/assembly/prox_sensor/HasProximity(atom/movable/AM as mob|obj)
if(!istype(AM))
LOG_DEBUG("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
return
@@ -44,7 +44,7 @@
if(AM.move_speed < 12)
sense()
/obj/item/device/assembly/prox_sensor/proc/sense()
/obj/item/assembly/prox_sensor/proc/sense()
var/turf/mainloc = get_turf(src)
if((!holder && !secured) || !scanning || cooldown)
return FALSE
@@ -54,7 +54,7 @@
cooldown = 2
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 1 SECOND)
/obj/item/device/assembly/prox_sensor/process()
/obj/item/assembly/prox_sensor/process()
if(scanning)
var/turf/mainloc = get_turf(src)
for(var/mob/living/A in range(range, mainloc))
@@ -69,19 +69,19 @@
toggle_scan()
time = 10
/obj/item/device/assembly/prox_sensor/dropped()
/obj/item/assembly/prox_sensor/dropped()
. = ..()
spawn(0)
sense()
/obj/item/device/assembly/prox_sensor/proc/toggle_scan()
/obj/item/assembly/prox_sensor/proc/toggle_scan()
if(!secured)
return FALSE
scanning = !scanning
update_icon()
return
/obj/item/device/assembly/prox_sensor/update_icon()
/obj/item/assembly/prox_sensor/update_icon()
ClearOverlays()
attached_overlays = list()
if(timing)
@@ -96,24 +96,24 @@
var/obj/item/grenade/chem_grenade/grenade = holder.loc
grenade.primed(scanning)
/obj/item/device/assembly/prox_sensor/Move()
/obj/item/assembly/prox_sensor/Move()
. = ..()
sense()
/obj/item/device/assembly/prox_sensor/interact(mob/user)
/obj/item/assembly/prox_sensor/interact(mob/user)
if(!secured)
to_chat(user, SPAN_WARNING("\The [src] is unsecured!"))
return FALSE
ui_interact(user)
/obj/item/device/assembly/prox_sensor/ui_interact(mob/user, datum/tgui/ui)
/obj/item/assembly/prox_sensor/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "Proximity", "Proximity Sensor", 450, 360)
ui.open()
/obj/item/device/assembly/prox_sensor/ui_data(mob/user)
/obj/item/assembly/prox_sensor/ui_data(mob/user)
var/list/data = list()
data["timeractive"] = timing
@@ -123,7 +123,7 @@
return data
/obj/item/device/assembly/prox_sensor/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
/obj/item/assembly/prox_sensor/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
+23 -23
View File
@@ -1,4 +1,4 @@
/obj/item/device/assembly/signaler
/obj/item/assembly/signaler
name = "remote signaling device"
desc = "Used to remotely activate devices."
icon_state = "signaller"
@@ -20,20 +20,20 @@
var/datum/radio_frequency/radio_connection
var/deadman = FALSE
/obj/item/device/assembly/signaler/mechanics_hints(mob/user, distance, is_adjacent)
/obj/item/assembly/signaler/mechanics_hints(mob/user, distance, is_adjacent)
. += ..()
. += "Signalers can be attached to a variety of machinery to remotely activate them."
. += "Signalers can be to individual wires within machinery; when a signal is received, it will pulse the wire much like a multitool."
/obj/item/device/assembly/signaler/antagonist_hints(mob/user, distance, is_adjacent)
/obj/item/assembly/signaler/antagonist_hints(mob/user, distance, is_adjacent)
. += ..()
. += "Signalers can be attached to a variety of machinery to do unspeakable harm or serve as fantastic diversions."
/obj/item/device/assembly/signaler/Initialize()
/obj/item/assembly/signaler/Initialize()
. = ..()
set_frequency(frequency)
/obj/item/device/assembly/signaler/activate()
/obj/item/assembly/signaler/activate()
if(cooldown)
return FALSE
cooldown = 2
@@ -42,21 +42,21 @@
signal()
return TRUE
/obj/item/device/assembly/signaler/update_icon()
/obj/item/assembly/signaler/update_icon()
if(holder)
holder.update_icon()
return
/obj/item/device/assembly/signaler/interact(mob/user, flag1)
/obj/item/assembly/signaler/interact(mob/user, flag1)
ui_interact(user)
/obj/item/device/assembly/signaler/ui_interact(mob/user, datum/tgui/ui)
/obj/item/assembly/signaler/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "Signaler", "Signaler", 320, 220)
ui.open()
/obj/item/device/assembly/signaler/ui_data(mob/user)
/obj/item/assembly/signaler/ui_data(mob/user)
var/list/data = list()
data["frequency"] = format_frequency(frequency)
@@ -64,7 +64,7 @@
return data
/obj/item/device/assembly/signaler/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
/obj/item/assembly/signaler/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
@@ -85,7 +85,7 @@
spawn(0)
signal(usr)
/obj/item/device/assembly/signaler/proc/signal(var/mob/user)
/obj/item/assembly/signaler/proc/signal(var/mob/user)
if(!radio_connection)
return
if(within_jamming_range(src))
@@ -99,7 +99,7 @@
radio_connection.post_signal(src, signal)
return
/obj/item/device/assembly/signaler/pulse(var/radio = FALSE)
/obj/item/assembly/signaler/pulse(var/radio = FALSE)
if(connected && wires)
connected.pulse_assembly(src)
else if(holder)
@@ -110,7 +110,7 @@
..(radio)
return TRUE
/obj/item/device/assembly/signaler/receive_signal(datum/signal/signal)
/obj/item/assembly/signaler/receive_signal(datum/signal/signal)
if(!signal)
return FALSE
@@ -139,7 +139,7 @@
else if(!holder)
audible_message("[icon2html(src, viewers(get_turf(src)))] [capitalize_first_letters(src.name)] beeps, \"<b>Beep beep!</b>\"")
/obj/item/device/assembly/signaler/proc/set_frequency(new_frequency)
/obj/item/assembly/signaler/proc/set_frequency(new_frequency)
if(!frequency)
return
SSradio.remove_object(src, frequency)
@@ -147,7 +147,7 @@
radio_connection = SSradio.add_object(src, frequency, RADIO_CHAT)
//Triggers the deadmanswitch if its dropped or moved into ones backpack
/obj/item/device/assembly/signaler/dropped(mob/user)
/obj/item/assembly/signaler/dropped(mob/user)
. = ..()
if(deadman)
if(!user.client)
@@ -156,12 +156,12 @@
deadman_trigger(user)
//Triggers the deadmanswitch if its moved between slots (i.e. from hand into the pocket)
/obj/item/device/assembly/signaler/on_slotmove(var/mob/user)
/obj/item/assembly/signaler/on_slotmove(var/mob/user)
. = ..()
if(deadman)
deadman_trigger(user)
/obj/item/device/assembly/signaler/process()
/obj/item/assembly/signaler/process()
//If we have disabled the deadmanswitch. stop here
if(!deadman)
STOP_PROCESSING(SSprocessing, src)
@@ -174,13 +174,13 @@
M.visible_message(SPAN_DANGER("\The [M]'s finger twitches a bit over \the [src]'s deadman switch!"))
return
/obj/item/device/assembly/signaler/AltClick(mob/user)
/obj/item/assembly/signaler/AltClick(mob/user)
if(use_check_and_message(user))
return
to_chat(user, SPAN_NOTICE("You click \the [src]'s signal button."))
signal(user)
/obj/item/device/assembly/signaler/proc/deadman_trigger(var/mob/user)
/obj/item/assembly/signaler/proc/deadman_trigger(var/mob/user)
if(deadman) //If its not activated, there is no point in triggering it
if(user)
visible_message(SPAN_DANGER("\The [user] releases \the [src]'s deadman switch!"))
@@ -190,7 +190,7 @@
deadman = FALSE
STOP_PROCESSING(SSprocessing, src)
/obj/item/device/assembly/signaler/verb/deadman_it()
/obj/item/assembly/signaler/verb/deadman_it()
set src in usr
set name = "Hold the deadman switch!"
set desc = "Sends a signal if dropped or moved into a container."
@@ -201,7 +201,7 @@
deadman_deactivate(usr)
/obj/item/device/assembly/signaler/proc/deadman_activate(var/mob/user)
/obj/item/assembly/signaler/proc/deadman_activate(var/mob/user)
deadman = TRUE
START_PROCESSING(SSprocessing, src)
log_and_message_admins("is threatening to trigger a signaler deadman's switch")
@@ -209,12 +209,12 @@
to_chat(user, SPAN_WARNING("You are now holding \the [src]'s deadman switch. Dropping, putting the device away, or being hit will activate the signaller."))
to_chat(user, SPAN_NOTICE("To deactivate it, make sure to press the verb again."))
/obj/item/device/assembly/signaler/proc/deadman_deactivate(var/mob/user)
/obj/item/assembly/signaler/proc/deadman_deactivate(var/mob/user)
deadman = FALSE
STOP_PROCESSING(SSprocessing, src)
user.visible_message(SPAN_NOTICE("\The [user] secures and releases \the [src]'s deadman switch..."))
/obj/item/device/assembly/signaler/Destroy()
/obj/item/assembly/signaler/Destroy()
if(SSradio)
SSradio.remove_object(src,frequency)
frequency = 0
+10 -10
View File
@@ -1,4 +1,4 @@
/obj/item/device/assembly/timer
/obj/item/assembly/timer
name = "timer"
desc = "Used to time things. Works well with contraptions which has to count down. Tick tock."
icon_state = "timer"
@@ -13,7 +13,7 @@
var/timing = FALSE
var/time = 3
/obj/item/device/assembly/timer/activate()
/obj/item/assembly/timer/activate()
. = ..()
if(!.)
return FALSE //Cooldown check
@@ -22,7 +22,7 @@
update_icon()
return FALSE
/obj/item/device/assembly/timer/toggle_secure()
/obj/item/assembly/timer/toggle_secure()
secured = !secured
if(secured)
START_PROCESSING(SSprocessing, src)
@@ -32,7 +32,7 @@
update_icon()
return secured
/obj/item/device/assembly/timer/proc/timer_end()
/obj/item/assembly/timer/proc/timer_end()
if(!secured)
return FALSE
pulse(FALSE)
@@ -41,7 +41,7 @@
cooldown = 2
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 1 SECOND)
/obj/item/device/assembly/timer/process()
/obj/item/assembly/timer/process()
if(timing)
if(time > 0)
time--
@@ -50,7 +50,7 @@
timer_end()
time = 10
/obj/item/device/assembly/timer/update_icon()
/obj/item/assembly/timer/update_icon()
ClearOverlays()
attached_overlays = list()
if(timing)
@@ -59,20 +59,20 @@
if(holder)
holder.update_icon()
/obj/item/device/assembly/timer/interact(mob/user)
/obj/item/assembly/timer/interact(mob/user)
if(!secured)
to_chat(user, SPAN_WARNING("\The [src] is unsecured!"))
return
ui_interact(user)
/obj/item/device/assembly/timer/ui_interact(mob/user, datum/tgui/ui)
/obj/item/assembly/timer/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "Timer", "Timer Assembly", 320, 220)
ui.open()
/obj/item/device/assembly/timer/ui_data(mob/user)
/obj/item/assembly/timer/ui_data(mob/user)
var/list/data = list()
data["timeractive"] = timing
@@ -80,7 +80,7 @@
return data
/obj/item/device/assembly/timer/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
/obj/item/assembly/timer/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
return
+7 -7
View File
@@ -1,4 +1,4 @@
/obj/item/device/assembly/voice
/obj/item/assembly/voice
name = "voice analyzer"
desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated."
icon_state = "voice"
@@ -9,14 +9,14 @@
var/listening = FALSE
var/recorded //the activation message
/obj/item/device/assembly/voice/Initialize(mapload, ...)
/obj/item/assembly/voice/Initialize(mapload, ...)
. = ..()
become_hearing_sensitive()
/obj/item/device/assembly/voice/Destroy()
/obj/item/assembly/voice/Destroy()
return ..()
/obj/item/device/assembly/voice/hear_talk(mob/living/M, msg)
/obj/item/assembly/voice/hear_talk(mob/living/M, msg)
if(listening)
recorded = msg
listening = FALSE
@@ -26,18 +26,18 @@
if(findtext(msg, recorded))
pulse(FALSE)
/obj/item/device/assembly/voice/activate()
/obj/item/assembly/voice/activate()
if(secured && !holder)
listening = !listening
var/turf/T = get_turf(src)
T.audible_message("[icon2html(src, viewers(get_turf(T)))] beeps, \"[listening ? "Now" : "No longer"] recording input.\"")
/obj/item/device/assembly/voice/attack_self(mob/user)
/obj/item/assembly/voice/attack_self(mob/user)
if(!user)
return FALSE
activate()
return TRUE
/obj/item/device/assembly/voice/toggle_secure()
/obj/item/assembly/voice/toggle_secure()
. = ..()
listening = FALSE