mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Update assemblies to modern coding standards
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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, "<span class='notice'>You attach \the [A] to \the [src]!</span>")
|
||||
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, "<span class='notice'>\The [src] can now be attached!</span>")
|
||||
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
|
||||
|
||||
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
@@ -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, "<span class='warning'> BUG:Assembly part missing, please report this!</span>")
|
||||
@@ -159,14 +110,10 @@
|
||||
to_chat(user, "<span class='notice'>\The [src] can now be taken apart!</span>")
|
||||
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
|
||||
|
||||
@@ -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
|
||||
@@ -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("<TT><B>Infrared Laser</B>\n<B>Status</B>: []<BR>\n<B>Visibility</B>: []<BR>\n</TT>", (on ? text("<A href='?src=\ref[];state=0'>On</A>", src) : text("<A href='?src=\ref[];state=1'>Off</A>", src)), (src.visible ? text("<A href='?src=\ref[];visible=0'>Visible</A>", src) : text("<A href='?src=\ref[];visible=1'>Invisible</A>", src)))
|
||||
dat += "<BR><BR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
|
||||
dat += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
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()
|
||||
@@ -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, "<span class='notice'>You arm [src].</span>")
|
||||
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("<span class='warning'>[finder] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
@@ -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("<span class='warning'>[src] is triggered by [A].</span>")
|
||||
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, "<span class='notice'>You hide [src].</span>")
|
||||
@@ -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 += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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("-------<BR>\nGreen Wire: []<BR>\nRed Wire: []<BR>\nBlue Wire: []<BR>\n", (src.wires & 4 ? text("<A href='?src=\ref[];wires=4'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=4'>Mend Wire</A>", src)), (src.wires & 2 ? text("<A href='?src=\ref[];wires=2'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=2'>Mend Wire</A>", src)), (src.wires & 1 ? text("<A href='?src=\ref[];wires=1'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=1'>Mend Wire</A>", src)))
|
||||
// else
|
||||
// t1 = "-------" Speaker: [src.listening ? "<A href='byond://?src=\ref[src];listen=0'>Engaged</A>" : "<A href='byond://?src=\ref[src];listen=1'>Disengaged</A>"]<BR>
|
||||
var/dat = {"
|
||||
<TT>
|
||||
|
||||
@@ -66,8 +58,6 @@ Code:
|
||||
</TT>"}
|
||||
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
|
||||
|
||||
@@ -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"])
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
Reference in New Issue
Block a user