Files
Paradise/code/game/objects/closets/secure/secure_closets.dm
T
johnsonmt88@gmail.com 58910a2318 Secure closet 'Toggle Lock' verb now takes into account whether the locker is broken. Fixes Issue 683.
The admin 'Spawn Xeno' verb will not longer state that an admin spawned a xeno when they cancel out of the operation. Fixes Issue 688.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4185 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-26 15:51:33 +00:00

124 lines
3.6 KiB
Plaintext

/obj/structure/closet/secure_closet/can_open()
..()
if(src.locked)
return 0
return 1
/obj/structure/closet/secure_closet/close()
..()
if(broken)
icon_state = src.icon_off
return 1
/obj/structure/closet/secure_closet/emp_act(severity)
for(var/obj/O in src)
O.emp_act(severity)
if(!broken)
if(prob(50/severity))
src.locked = !src.locked
if(prob(20/severity) && !opened)
if(!locked)
open()
else
src.req_access = list()
src.req_access += pick(get_all_accesses())
..()
/obj/structure/closet/secure_closet/proc/togglelock(mob/user as mob)
if(src.allowed(user))
src.locked = !src.locked
for(var/mob/O in viewers(user, 3))
if((O.client && !( O.blinded )))
O << "\blue The locker has been [src.locked ? null : "un"]locked by [user]."
if(src.locked)
src.icon_state = src.icon_locked
else
src.icon_state = src.icon_closed
else
user << "\red Access Denied"
/obj/structure/closet/secure_closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(src.opened)
if(istype(W, /obj/item/weapon/grab))
if(src.large)
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
else
user << "The locker is too small to stuff [W] into!"
user.drop_item()
if(W)
W.loc = src.loc
else if(src.broken)
user << "\red It appears to be broken."
return
else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken)
broken = 1
locked = 0
desc = "It appears to be broken."
icon_state = icon_off
flick(icon_broken, src)
if(istype(W, /obj/item/weapon/melee/energy/blade))
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 3))
O.show_message("\blue The locker has been sliced open by [user] with an energy blade!", 1, "\red You hear metal being sliced and sparks flying.", 2)
else
for(var/mob/O in viewers(user, 3))
O.show_message("\blue The locker has been broken by [user] with an electromagnetic card!", 1, "You hear a faint electrical spark.", 2)
else
togglelock(user)
/obj/structure/closet/secure_closet/relaymove(mob/user as mob)
if(user.stat)
return
if(user.stat)
return
if(!(src.locked))
for(var/obj/item/I in src)
I.loc = src.loc
for(var/mob/M in src)
M.loc = src.loc
if(M.client)
M.client.eye = M.client.mob
M.client.perspective = MOB_PERSPECTIVE
src.icon_state = src.icon_opened
src.opened = 1
else
user << "\blue It's welded shut!"
if(world.time > lastbang+5)
lastbang = world.time
for(var/mob/M in hearers(src, null))
M << text("<FONT size=[]>BANG, bang!</FONT>", max(0, 5 - get_dist(src, M)))
return
/obj/structure/closet/secure_closet/attack_hand(mob/user as mob)
src.add_fingerprint(user)
if(!src.toggle())
return src.attackby(null, user)
/obj/structure/closet/secure_closet/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/closet/secure_closet/verb/verb_togglelock()
set src in oview(1) // One square distance
set category = "Object"
set name = "Toggle Lock"
if(!usr.canmove || usr.stat || usr.restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain
return
if(get_dist(usr, src) != 1)
return
if(src.broken)
return
if (ishuman(usr))
if (!opened)
togglelock(usr)
else
usr << "\red This mob type can't use this verb."