diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 607c52e1667..9a0ab5c9c18 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -1417,6 +1417,8 @@ var/mob/dview/dview_mob = new #define VARSET_LIST_CALLBACK(target, var_name, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##target, ##var_name, ##var_value) //dupe code because dm can't handle 3 level deep macros #define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##datum, NAMEOF(##datum, ##var), ##var_value) +//the 3 level deep myth DEBUNKED +#define VARSET_IN(datum, var, var_value, time) addtimer(VARSET_CALLBACK(datum, var, var_value), time) /proc/___callbackvarset(list_or_datum, var_name, var_value) if(length(list_or_datum)) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index b4400ab5d56..4169dfc947c 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -11,11 +11,6 @@ var/toggle = 1 flags = PROXMOVE -/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D) - -/obj/item/device/transfer_valve/IsAssemblyHolder() - return 1 - /obj/item/device/transfer_valve/attackby(obj/item/item, mob/user) var/turf/location = get_turf(src) // For admin logs if(istype(item, /obj/item/weapon/tank)) @@ -116,12 +111,11 @@ src.add_fingerprint(usr) return 1 // Returning 1 sends an update to attached UIs -/obj/item/device/transfer_valve/process_activation(var/obj/item/device/D) +/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D) if(toggle) - toggle = 0 + toggle = FALSE toggle_valve() - spawn(50) // To stop a signal being spammed from a proxy sensor constantly going off or whatever - toggle = 1 + VARSET_IN(src, toggle, TRUE, 5 SECONDS) /obj/item/device/transfer_valve/update_icon() overlays.Cut() diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 04dadddc04f..b5851ab4c62 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -13,7 +13,7 @@ var/secured = 1 var/list/attached_overlays = null var/obj/item/device/assembly_holder/holder = null - var/cooldown = 0//To prevent spam + var/cooldown = FALSE //To prevent spam var/wires = WIRE_RECEIVE | WIRE_PULSE var/const/WIRE_RECEIVE = 1 //Allows Pulsed(0) to call Activate() @@ -22,78 +22,45 @@ var/const/WIRE_RADIO_RECEIVE = 8 //Allows Pulsed(1) to call Activate() var/const/WIRE_RADIO_PULSE = 16 //Allows Pulse(1) to send a radio message -/obj/item/device/assembly/proc/activate() //What the device does when turned on +/obj/item/device/assembly/proc/holder_movement() return -/obj/item/device/assembly/proc/pulsed(var/radio = 0) //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs - return +/obj/item/device/assembly/proc/process_cooldown() + if(cooldown) + return FALSE + cooldown = TRUE + VARSET_IN(src, cooldown, FALSE, 2 SECONDS) + return TRUE -/obj/item/device/assembly/proc/pulse(var/radio = 0) //Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct - return - -/obj/item/device/assembly/proc/toggle_secure() //Code that has to happen when the assembly is un\secured goes here - return - -/obj/item/device/assembly/proc/attach_assembly(var/obj/A, var/mob/user) //Called when an assembly is attacked by another - return - -/obj/item/device/assembly/proc/process_cooldown() //Called via spawn(10) to have it count down the cooldown var - return - -/obj/item/device/assembly/proc/holder_movement() //Called when the holder is moved - return - -/obj/item/device/assembly/interact(mob/user as mob) //Called when attack_self is called - return - - -/obj/item/device/assembly/process_cooldown() - cooldown-- - if(cooldown <= 0) return 0 - spawn(10) - process_cooldown() - return 1 - - -/obj/item/device/assembly/pulsed(var/radio = 0) +/obj/item/device/assembly/proc/pulsed(var/radio = 0) if(holder && (wires & WIRE_RECEIVE)) activate() if(radio && (wires & WIRE_RADIO_RECEIVE)) activate() return 1 - -/obj/item/device/assembly/pulse(var/radio = 0) +/obj/item/device/assembly/proc/pulse(var/radio = 0) if(holder && (wires & WIRE_PULSE)) holder.process_activation(src, 1, 0) if(holder && (wires & WIRE_PULSE_SPECIAL)) holder.process_activation(src, 0, 1) -// if(radio && (wires & WIRE_RADIO_PULSE)) - //Not sure what goes here quite yet send signal? return 1 +/obj/item/device/assembly/proc/activate() + if(!secured || !process_cooldown()) + return FALSE + return TRUE -/obj/item/device/assembly/activate() - if(!secured || (cooldown > 0)) return 0 - cooldown = 2 - spawn(10) - process_cooldown() - return 1 - - -/obj/item/device/assembly/toggle_secure() +/obj/item/device/assembly/proc/toggle_secure() secured = !secured update_icon() return secured - -/obj/item/device/assembly/attach_assembly(var/obj/item/device/assembly/A, var/mob/user) +/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)) if(holder.attach(A,src,user)) to_chat(user, "You attach \the [A] to \the [src]!") - return 1 - return 0 - + return TRUE /obj/item/device/assembly/attackby(obj/item/weapon/W as obj, mob/user as mob) if(isassembly(W)) @@ -107,14 +74,10 @@ else to_chat(user, "\The [src] can now be attached!") return - ..() - return - + return ..() /obj/item/device/assembly/process() - STOP_PROCESSING(SSobj, src) - return - + return PROCESS_KILL /obj/item/device/assembly/examine(mob/user) ..(user) @@ -132,7 +95,6 @@ interact(user) return 1 - /obj/item/device/assembly/interact(mob/user as mob) return //HTML MENU FOR WIRES GOES HERE @@ -140,41 +102,3 @@ if(istype(loc, /obj/item/device/assembly_holder)) return loc.nano_host() return ..() - -/* - var/small_icon_state = null//If this obj will go inside the assembly use this for icons - var/list/small_icon_state_overlays = null//Same here - var/obj/holder = null - var/cooldown = 0//To prevent spam - - proc - Activate()//Called when this assembly is pulsed by another one - Process_cooldown()//Call this via spawn(10) to have it count down the cooldown var - Attach_Holder(var/obj/H, var/mob/user)//Called when an assembly holder attempts to attach, sets src's loc in here - - - Activate() - if(cooldown > 0) - return 0 - cooldown = 2 - spawn(10) - Process_cooldown() - //Rest of code here - return 0 - - - Process_cooldown() - cooldown-- - if(cooldown <= 0) return 0 - spawn(10) - Process_cooldown() - return 1 - - - Attach_Holder(var/obj/H, var/mob/user) - if(!H) return 0 - if(!H.IsAssemblyHolder()) return 0 - //Remember to have it set its loc somewhere in here - - -*/ diff --git a/code/modules/assembly/helpers.dm b/code/modules/assembly/helpers.dm index bfecbd8a415..cc3100f7727 100644 --- a/code/modules/assembly/helpers.dm +++ b/code/modules/assembly/helpers.dm @@ -27,18 +27,3 @@ if(istype(O, /obj/item/device/assembly/timer)) return 1 return 0 - -/* -Name: IsSpecialAssembly -Desc: If 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() - return 0 - -/* -Name: IsAssemblyHolder -Desc: If true is an object that can hold an assemblyholder object -*/ -/obj/proc/IsAssemblyHolder() - return 0 \ No newline at end of file diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index d815fea765a..c95d2869e94 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -14,76 +14,48 @@ var/obj/item/device/assembly/a_right = null var/obj/special_assembly = null -/obj/item/device/assembly_holder/proc/attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user) - return +/obj/item/device/assembly_holder/proc/attach(var/obj/item/device/assembly/D, var/obj/item/device/assembly/D2, var/mob/user) + if(!D || !D2) + return FALSE + + if(!istype(D) || !istype(D2)) + return FALSE -/obj/item/device/assembly_holder/proc/attach_special(var/obj/O, var/mob/user) - return - -/obj/item/device/assembly_holder/proc/process_activation(var/obj/item/device/D) - return - -/obj/item/device/assembly_holder/proc/detached() - return - - -/obj/item/device/assembly_holder/IsAssemblyHolder() - return 1 - - -/obj/item/device/assembly_holder/attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user) - if((!D)||(!D2)) return 0 - if((!isassembly(D))||(!isassembly(D2))) return 0 - if((D:secured)||(D2:secured)) return 0 + if(D.secured || D2.secured) + return FALSE + if(user) user.remove_from_mob(D) user.remove_from_mob(D2) - D:holder = src - D2:holder = src - D.loc = src - D2.loc = src + + D.holder = src + D2.holder = src + D.forceMove(src) + D2.forceMove(src) a_left = D a_right = D2 name = "[D.name]-[D2.name] assembly" update_icon() - usr.put_in_hands(src) + user.put_in_hands(src) - return 1 + return TRUE - -/obj/item/device/assembly_holder/attach_special(var/obj/O, var/mob/user) - if(!O) return - if(!O.IsSpecialAssembly()) return 0 - -/* if(O:Attach_Holder()) - special_assembly = O - update_icon() - src.name = "[a_left.name] [a_right.name] [special_assembly.name] assembly" -*/ +/obj/item/device/assembly_holder/proc/detached() return - /obj/item/device/assembly_holder/update_icon() - overlays.Cut() + cut_overlays() if(a_left) - overlays += "[a_left.icon_state]_left" + add_overlay("[a_left.icon_state]_left") for(var/O in a_left.attached_overlays) - overlays += "[O]_l" + add_overlay("[O]_l") if(a_right) - src.overlays += "[a_right.icon_state]_right" + add_overlay("[a_right.icon_state]_right") for(var/O in a_right.attached_overlays) - overlays += "[O]_r" + add_overlay("[O]_r") if(master) master.update_icon() -/* if(special_assembly) - special_assembly.update_icon() - if(special_assembly:small_icon_state) - src.overlays += special_assembly:small_icon_state - for(var/O in special_assembly:small_icon_state_overlays) - src.overlays += O -*/ - /obj/item/device/assembly_holder/examine(mob/user) ..(user) if ((in_range(src, user) || src.loc == user)) @@ -91,17 +63,12 @@ to_chat(user, "\The [src] is ready!") else to_chat(user, "\The [src] can be attached!") - return - /obj/item/device/assembly_holder/HasProximity(atom/movable/AM as mob|obj) if(a_left) a_left.HasProximity(AM) if(a_right) a_right.HasProximity(AM) - if(special_assembly) - special_assembly.HasProximity(AM) - /obj/item/device/assembly_holder/Crossed(atom/movable/AM as mob|obj) if(AM.is_incorporeal()) @@ -110,42 +77,26 @@ a_left.Crossed(AM) if(a_right) a_right.Crossed(AM) - if(special_assembly) - special_assembly.Crossed(AM) - /obj/item/device/assembly_holder/on_found(mob/finder as mob) if(a_left) a_left.on_found(finder) if(a_right) a_right.on_found(finder) - if(special_assembly) - if(istype(special_assembly, /obj/item)) - var/obj/item/S = special_assembly - S.on_found(finder) - /obj/item/device/assembly_holder/Move() ..() if(a_left && a_right) a_left.holder_movement() a_right.holder_movement() -// if(special_assembly) -// special_assembly:holder_movement() - return - /obj/item/device/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() -// if(special_assembly) -// special_assembly:Holder_Movement() ..() - return - -/obj/item/device/assembly_holder/attackby(obj/item/weapon/W as obj, mob/user as mob) +/obj/item/device/assembly_holder/attackby(var/obj/item/weapon/W, var/mob/user) if(W.is_screwdriver()) if(!a_left || !a_right) to_chat(user, " BUG:Assembly part missing, please report this!") @@ -159,14 +110,10 @@ to_chat(user, "\The [src] can now be taken apart!") update_icon() return - else if(W.IsSpecialAssembly()) - attach_special(W, user) else ..() - return - -/obj/item/device/assembly_holder/attack_self(mob/user as mob) +/obj/item/device/assembly_holder/attack_self(var/mob/user) src.add_fingerprint(user) if(src.secured) if(!a_left || !a_right) @@ -184,20 +131,19 @@ a_right.attack_self(user) else var/turf/T = get_turf(src) - if(!T) return 0 + if(!T) + return 0 if(a_left) - a_left:holder = null - a_left.loc = T + a_left.holder = null + a_left.forceMove(T) if(a_right) - a_right:holder = null - a_right.loc = T - spawn(0) - qdel(src) - return + a_right.holder = null + a_right.forceMove(T) + qdel(src) - -/obj/item/device/assembly_holder/process_activation(var/obj/D, var/normal = 1, var/special = 1) - if(!D) return 0 +/obj/item/device/assembly_holder/proc/process_activation(var/obj/D, var/normal = 1) + if(!D) + return 0 if(!secured) visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") if((normal) && (a_right) && (a_left)) @@ -207,42 +153,36 @@ a_left.pulsed(0) if(master) master.receive_signal() -// if(special && special_assembly) -// if(!special_assembly == D) -// special_assembly.dothings() return 1 - /obj/item/device/assembly_holder/hear_talk(mob/living/M as mob, 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 name = "timer-igniter assembly" - New() - ..() +/obj/item/device/assembly_holder/timer_igniter/New() + ..() - var/obj/item/device/assembly/igniter/ign = new(src) - ign.secured = 1 - ign.holder = src - var/obj/item/device/assembly/timer/tmr = new(src) - tmr.time=5 - tmr.secured = 1 - tmr.holder = src - START_PROCESSING(SSobj, tmr) - a_left = tmr - a_right = ign - secured = 1 - update_icon() - name = initial(name) + " ([tmr.time] secs)" + var/obj/item/device/assembly/igniter/ign = new(src) + ign.secured = 1 + ign.holder = src - loc.verbs += /obj/item/device/assembly_holder/timer_igniter/verb/configure + var/obj/item/device/assembly/timer/tmr = new(src) + tmr.time = 5 + tmr.secured = 1 + tmr.holder = src + + a_left = tmr + a_right = ign + secured = 1 + update_icon() + name = initial(name) + " ([tmr.time] secs)" + + loc.verbs += /obj/item/device/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 diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index 88845d0651b..5344d4b15bb 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -9,7 +9,8 @@ wires = WIRE_RECEIVE /obj/item/device/assembly/igniter/activate() - if(!..()) return 0//Cooldown check + if(!..()) + return FALSE if(holder && istype(holder.loc,/obj/item/weapon/grenade/chem_grenade)) var/obj/item/weapon/grenade/chem_grenade/grenade = holder.loc @@ -28,13 +29,12 @@ s.set_up(3, 1, src) s.start() - return 1 + return TRUE -/obj/item/device/assembly/igniter/attack_self(mob/user as mob) +/obj/item/device/assembly/igniter/attack_self(var/mob/user) activate() add_fingerprint(user) - return /obj/item/device/assembly/igniter/is_hot() return TRUE \ No newline at end of file diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 8da3fbc21b4..2f10a91fdab 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -13,124 +13,118 @@ var/on = 0 var/visible = 0 - var/obj/effect/beam/i_beam/first = null + var/list/i_beams = null /obj/item/device/assembly/infra/activate() - if(!..()) return 0//Cooldown check - on = !on - update_icon() - return 1 - + if(!..()) + return FALSE + on = !on + update_icon() + return TRUE /obj/item/device/assembly/infra/toggle_secure() secured = !secured - if(secured) - START_PROCESSING(SSobj, src) - else - on = 0 - if(first) qdel(first) - STOP_PROCESSING(SSobj, src) + if(!secured) + toggle_state(FALSE) update_icon() return secured +/obj/item/device/assembly/infra/proc/toggle_state(var/picked) + if(!isnull(picked)) + on = picked + else + on = !on + + if(secured && on) + START_PROCESSING(SSobj, src) + else + STOP_PROCESSING(SSobj, src) + QDEL_LIST_NULL(i_beams) + return on /obj/item/device/assembly/infra/update_icon() - overlays.Cut() - attached_overlays = list() + cut_overlays() + LAZYCLEARLIST(attached_overlays) if(on) - overlays += "infrared_on" - attached_overlays += "infrared_on" + add_overlay("infrared_on") + LAZYADD(attached_overlays, "infrared_on") if(holder) - holder.update_icon() - return + holder.update_icon(2) +/obj/item/device/assembly/infra/process() + if(!on && i_beams) + QDEL_LIST_NULL(i_beams) + return -/obj/item/device/assembly/infra/process()//Old code - if(!on) - if(first) - qdel(first) - return + if(!i_beams && secured && (istype(loc, /turf) || (holder && istype(holder.loc, /turf)))) + create_beams() - if((!(first) && (secured && (istype(loc, /turf) || (holder && istype(holder.loc, /turf)))))) - var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam((holder ? holder.loc : loc) ) +/obj/item/device/assembly/infra/proc/create_beams(var/limit = 8) + var/current_spot = get_turf(src) + for(var/i = 1 to limit) + var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(current_spot) I.master = src I.density = 1 I.set_dir(dir) - step(I, I.dir) - if(I) - I.density = 0 - first = I - I.vis_spread(visible) - spawn(0) - if(I) - //to_world("infra: setting limit") - I.limit = 8 - //to_world("infra: processing beam \ref[I]") - I.process() - return - return - + if(!step(I, I.dir)) //Try to take a step in that direction + return //Couldn't, oh well, we hit a wall or something. Beam should qdel itself in it's Bump(). + I.density = 0 + i_beams |= I + I.visible = visible /obj/item/device/assembly/infra/attack_hand() - qdel(first) + QDEL_LIST_NULL(i_beams) ..() - return - /obj/item/device/assembly/infra/Move() var/t = dir ..() set_dir(t) - qdel(first) - return - + QDEL_LIST_NULL(i_beams) /obj/item/device/assembly/infra/holder_movement() - if(!holder) return 0 -// set_dir(holder.dir) - qdel(first) - return 1 - + if(!holder) + return FALSE + QDEL_LIST_NULL(i_beams) + return TRUE /obj/item/device/assembly/infra/proc/trigger_beam() - if((!secured)||(!on)||(cooldown > 0)) return 0 + if(!process_cooldown()) + return FALSE pulse(0) + QDEL_LIST_NULL(i_beams) //They will get recreated next process() if the situation is still appropriate if(!holder) visible_message("[bicon(src)] *beep* *beep*") - cooldown = 2 - spawn(10) - process_cooldown() - return - /obj/item/device/assembly/infra/interact(mob/user as mob)//TODO: change this this to the wire control panel - if(!secured) return + if(!secured) + return user.set_machine(src) var/dat = text("Infrared Laser\nStatus: []
\nVisibility: []
\n
", (on ? text("On", src) : text("Off", src)), (src.visible ? text("Visible", src) : text("Invisible", src))) dat += "

Refresh" dat += "

Close" user << browse(dat, "window=infra") onclose(user, "infra") - return - /obj/item/device/assembly/infra/Topic(href, href_list, state = deep_inventory_state) - if(..()) return 1 + if(..()) + return 1 + if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) usr << browse(null, "window=infra") onclose(usr, "infra") return if(href_list["state"]) - on = !(on) - update_icon() + toggle_state() if(href_list["visible"]) visible = !(visible) - spawn(0) - if(first) - first.vis_spread(visible) + for(var/ibeam in i_beams) + var/obj/effect/beam/i_beam/I = ibeam + I.visible = visible + CHECK_TICK if(href_list["close"]) usr << browse(null, "window=infra") @@ -139,18 +133,12 @@ if(usr) attack_self(usr) - return - - /obj/item/device/assembly/infra/verb/rotate_clockwise() set name = "Rotate Infrared Laser Clockwise" set category = "Object" set src in usr - src.set_dir(turn(src.dir, 270)) - return - - + set_dir(turn(dir, 270)) /***************************IBeam*********************************/ @@ -158,102 +146,37 @@ name = "i beam" 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/limit = null - var/visible = 0.0 - var/left = null - anchored = 1.0 + var/visible = 0 + anchored = 1 +/obj/effect/beam/i_beam/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/effect/beam/i_beam/Destroy() + STOP_PROCESSING(SSobj, src) + master = null + return ..() /obj/effect/beam/i_beam/proc/hit() - if(master) - master.trigger_beam() + master?.trigger_beam() qdel(src) - return - -/obj/effect/beam/i_beam/proc/vis_spread(v) - //to_world("i_beam \ref[src] : vis_spread") - visible = v - spawn(0) - if(next) - //to_world("i_beam \ref[src] : is next [next.type] \ref[next], calling spread") - next.vis_spread(v) - return - return /obj/effect/beam/i_beam/process() - - if((loc && loc.density) || !master) + if(loc?.density || !master) qdel(src) return - if(left > 0) - left-- - if(left < 1) - if(!(visible)) - invisibility = 101 - else - invisibility = 0 - else - invisibility = 0 - - - //to_world("now [src.left] left") - var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(loc) - I.master = master - I.density = 1 - I.set_dir(dir) - //to_world("created new beam \ref[I] at [I.x] [I.y] [I.z]") - step(I, I.dir) - - if(I) - //to_world("step worked, now at [I.x] [I.y] [I.z]") - if(!(next)) - //to_world("no next") - I.density = 0 - //to_world("spreading") - I.vis_spread(visible) - next = I - spawn(0) - //to_world("limit = [limit] ") - if((I && limit > 0)) - I.limit = limit - 1 - //to_world("calling next process") - I.process() - return - else - //to_world("is a next: \ref[next], deleting beam \ref[I]") - qdel(I) - else - //to_world("step failed, deleting \ref[next]") - qdel(next) - spawn(10) - process() - return - return - /obj/effect/beam/i_beam/Bump() qdel(src) - return /obj/effect/beam/i_beam/Bumped() hit() - return -/obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj) +/obj/effect/beam/i_beam/Crossed(var/atom/movable/AM) if(AM.is_incorporeal()) return if(istype(AM, /obj/effect/beam)) return - spawn(0) - hit() - return - return - -/obj/effect/beam/i_beam/Destroy() - . = ..() - if(master.first == src) - master.first = null - if(next && !next.gc_destroyed) - QDEL_NULL(next) + hit() \ No newline at end of file diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index be78782b297..c2fb2029848 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -7,7 +7,7 @@ var/armed = 0 -/obj/item/device/assembly/mousetrap/examine(mob/user) +/obj/item/device/assembly/mousetrap/examine(var/mob/user) ..(user) if(armed) to_chat(user, "It looks like it's armed.") @@ -20,7 +20,7 @@ if(holder) holder.update_icon() -/obj/item/device/assembly/mousetrap/proc/triggered(mob/target as mob, var/type = "feet") +/obj/item/device/assembly/mousetrap/proc/triggered(var/mob/target, var/type = "feet") if(!armed) return var/obj/item/organ/external/affecting = null @@ -49,8 +49,7 @@ update_icon() pulse(0) - -/obj/item/device/assembly/mousetrap/attack_self(mob/living/user as mob) +/obj/item/device/assembly/mousetrap/attack_self(var/mob/living/user) if(!armed) to_chat(user, "You arm [src].") else @@ -68,8 +67,7 @@ update_icon() playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3) - -/obj/item/device/assembly/mousetrap/attack_hand(mob/living/user as mob) +/obj/item/device/assembly/mousetrap/attack_hand(var/mob/living/user) if(armed) if((CLUMSY in user.mutations) && prob(50)) var/which_hand = "l_hand" @@ -81,8 +79,7 @@ return ..() - -/obj/item/device/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj) +/obj/item/device/assembly/mousetrap/Crossed(var/atom/movable/AM) if(AM.is_incorporeal()) return if(armed) @@ -96,8 +93,7 @@ triggered(AM) ..() - -/obj/item/device/assembly/mousetrap/on_found(mob/living/finder as mob) +/obj/item/device/assembly/mousetrap/on_found(var/mob/living/finder) if(armed) finder.visible_message("[finder] accidentally sets off [src], breaking their fingers.", \ "You accidentally trigger [src]!") @@ -105,19 +101,16 @@ return 1 //end the search! return 0 - -/obj/item/device/assembly/mousetrap/hitby(A as mob|obj) +/obj/item/device/assembly/mousetrap/hitby(var/atom/movable/A) if(!armed) return ..() visible_message("[src] is triggered by [A].") triggered(null) - /obj/item/device/assembly/mousetrap/armed icon_state = "mousetraparmed" armed = 1 - /obj/item/device/assembly/mousetrap/verb/hide_under() set src in oview(1) set name = "Hide" @@ -126,5 +119,5 @@ if(usr.stat) return - layer = TURF_LAYER+0.2 + layer = HIDING_LAYER to_chat(usr, "You hide [src].") \ No newline at end of file diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index 2ac1fdf90f6..a93bda48099 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -16,11 +16,11 @@ var/range = 2 /obj/item/device/assembly/prox_sensor/activate() - if(!..()) return 0//Cooldown check + if(!..()) + return FALSE timing = !timing update_icon() - return 0 - + return FALSE /obj/item/device/assembly/prox_sensor/toggle_secure() secured = !secured @@ -33,29 +33,22 @@ update_icon() return secured - /obj/item/device/assembly/prox_sensor/HasProximity(atom/movable/AM as mob|obj) if(!istype(AM)) log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).") return - if (istype(AM, /obj/effect/beam)) return - if (!isobserver(AM) && AM.move_speed < 12) sense() - return - + if (istype(AM, /obj/effect/beam)) + return + if (!isobserver(AM) && AM.move_speed < 12) + sense() /obj/item/device/assembly/prox_sensor/proc/sense() + if((!holder && !secured) || !scanning || !process_cooldown()) + return FALSE var/turf/mainloc = get_turf(src) -// if(scanning && cooldown <= 0) -// mainloc.visible_message("[bicon(src)] *boop* *boop*", "*boop* *boop*") - if((!holder && !secured)||(!scanning)||(cooldown > 0)) return 0 pulse(0) if(!holder) mainloc.visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") - cooldown = 2 - spawn(10) - process_cooldown() - return - /obj/item/device/assembly/prox_sensor/process() if(scanning) @@ -69,46 +62,35 @@ if(timing && time <= 0) timing = 0 toggle_scan() - time = 10 - return - + time = initial(time) /obj/item/device/assembly/prox_sensor/dropped() - spawn(0) - sense() - return - return - + sense() /obj/item/device/assembly/prox_sensor/proc/toggle_scan() - if(!secured) return 0 + if(!secured) + return FALSE scanning = !scanning update_icon() - return - /obj/item/device/assembly/prox_sensor/update_icon() - overlays.Cut() - attached_overlays = list() + cut_overlays() + LAZYCLEARLIST(attached_overlays) if(timing) - overlays += "prox_timing" - attached_overlays += "prox_timing" + add_overlay("prox_timing") + LAZYADD(attached_overlays, "prox_timing") if(scanning) - overlays += "prox_scanning" - attached_overlays += "prox_scanning" + add_overlay("prox_scanning") + LAZYADD(attached_overlays, "prox_scanning") if(holder) holder.update_icon() if(holder && istype(holder.loc,/obj/item/weapon/grenade/chem_grenade)) var/obj/item/weapon/grenade/chem_grenade/grenade = holder.loc grenade.primed(scanning) - return - /obj/item/device/assembly/prox_sensor/Move() ..() sense() - return - /obj/item/device/assembly/prox_sensor/interact(mob/user as mob)//TODO: Change this to the wires thingy if(!secured) @@ -123,11 +105,11 @@ dat += "

Close" user << browse(dat, "window=prox") onclose(user, "prox") - return - /obj/item/device/assembly/prox_sensor/Topic(href, href_list, state = deep_inventory_state) - if(..()) return 1 + if(..()) + return TRUE + if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) usr << browse(null, "window=prox") onclose(usr, "prox") @@ -156,6 +138,3 @@ if(usr) attack_self(usr) - - - return diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 55616a2b917..d3f518bbc85 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -13,7 +13,7 @@ ..() return -/obj/item/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob) +/obj/item/assembly/shock_kit/attackby(var/obj/item/weapon/W, var/mob/user) if(W.is_wrench() && !status) var/turf/T = loc if(ismob(T)) diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 448e0c98607..5c93a5c6dd0 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -25,25 +25,17 @@ /obj/item/device/assembly/signaler/activate() - if(cooldown > 0) return FALSE - cooldown = 2 - spawn(10) - process_cooldown() - + if(!process_cooldown()) + return FALSE signal() return TRUE /obj/item/device/assembly/signaler/update_icon() if(holder) holder.update_icon() - return -/obj/item/device/assembly/signaler/interact(mob/user as mob, flag1) +/obj/item/device/assembly/signaler/interact(var/mob/user) var/t1 = "-------" -// if ((src.b_stat && !( flag1 ))) -// t1 = text("-------
\nGreen Wire: []
\nRed Wire: []
\nBlue Wire: []
\n", (src.wires & 4 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 2 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 1 ? text("Cut Wire", src) : text("Mend Wire", src))) -// else -// t1 = "-------" Speaker: [src.listening ? "Engaged" : "Disengaged"]
var/dat = {" @@ -66,8 +58,6 @@ Code: "} user << browse(dat, "window=radio") onclose(user, "radio") - return - /obj/item/device/assembly/signaler/Topic(href, href_list, state = deep_inventory_state) if(..()) @@ -97,9 +87,7 @@ Code: if(usr) attack_self(usr) - return - -/obj/item/device/assembly/signaler/attackby(obj/item/weapon/W, mob/user, params) +/obj/item/device/assembly/signaler/attackby(var/obj/item/weapon/W, mob/user, params) if(issignaler(W)) var/obj/item/device/assembly/signaler/signaler2 = W if(secured && signaler2.secured) @@ -120,8 +108,6 @@ Code: signal.encryption = code signal.data["message"] = "ACTIVATE" radio_connection.post_signal(src, signal) - return - /obj/item/device/assembly/signaler/pulse(var/radio = 0) if(is_jammed(src)) @@ -134,7 +120,6 @@ Code: ..(radio) return TRUE - /obj/item/device/assembly/signaler/receive_signal(datum/signal/signal) if(!signal) return FALSE @@ -149,8 +134,6 @@ Code: if(!holder) for(var/mob/O in hearers(1, src.loc)) O.show_message("[bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2) - return - /obj/item/device/assembly/signaler/proc/set_frequency(new_frequency) if(!frequency) @@ -163,7 +146,6 @@ Code: radio_controller.remove_object(src, frequency) frequency = new_frequency radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) - return /obj/item/device/assembly/signaler/process() if(!deadman) @@ -176,7 +158,6 @@ Code: STOP_PROCESSING(SSobj, src) else if(prob(5)) M.visible_message("[M]'s finger twitches a bit over [src]'s signal button!") - return /obj/item/device/assembly/signaler/verb/deadman_it() set src in usr diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 543d7d18013..0f981e29f9f 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -14,14 +14,14 @@ /obj/item/device/assembly/timer/activate() - if(!..()) return 0//Cooldown check + if(!..()) + return FALSE timing = !timing update_icon() return 0 - /obj/item/device/assembly/timer/toggle_secure() secured = !secured if(secured) @@ -32,27 +32,25 @@ update_icon() return secured +/obj/item/device/assembly/timer/proc/set_state(var/state) + if(state && !timing) //Not running, starting though + START_PROCESSING(SSobj, src) + else if(timing && !state) //Running, stopping though + STOP_PROCESSING(SSobj, src) + timing = state /obj/item/device/assembly/timer/proc/timer_end() - if(!secured) return 0 + if(!secured) + return 0 pulse(0) if(!holder) visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") - cooldown = 2 - spawn(10) - process_cooldown() - return - /obj/item/device/assembly/timer/process() - if(timing && (time > 0)) - time-- - if(timing && time <= 0) - timing = 0 + if(timing && time-- <= 0) + set_state(0) timer_end() time = 10 - return - /obj/item/device/assembly/timer/update_icon() overlays.Cut() @@ -87,7 +85,8 @@ return if(href_list["time"]) - timing = text2num(href_list["time"]) + var/new_timing = text2num(href_list["time"]) + set_state(new_timing) update_icon() if(href_list["tp"]) diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 0cf4b856658..8ebf8278a80 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -26,10 +26,10 @@ /obj/item/device/assembly/voice/attack_self(mob/user) - if(!user) return 0 + if(!user) + return FALSE activate() - return 1 - + return TRUE /obj/item/device/assembly/voice/toggle_secure() . = ..()