mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-28 03:01:37 +00:00
Fixed issue 767. The fix for issue 767 was to standardise spray bottle code (to some extent). If any issues come up with spray bottles, pepper spray, or chem sprayers, report them to me. Cyborgs now recharge their pacid and lube, as the size of their bottles was quartered. Changed the flash item_state to "flashbang", as it looks exactly like a flash. There's some more grammar and text clean up too, mostly with crates and closets. Finally, fixed some pipes in virology, and changed the librarian's den so the bookcases are at the top. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4394 316c924e-a436-60f5-8080-3fe189b3f50e
243 lines
6.2 KiB
Plaintext
243 lines
6.2 KiB
Plaintext
/obj/structure/closet/alter_health()
|
|
return get_turf(src)
|
|
|
|
/obj/structure/closet/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
|
if(air_group || (height==0 || wall_mounted)) return 1
|
|
return (!density)
|
|
|
|
/obj/structure/closet/proc/can_open()
|
|
if(src.welded)
|
|
return 0
|
|
return 1
|
|
|
|
/obj/structure/closet/proc/can_close()
|
|
for(var/obj/structure/closet/closet in get_turf(src))
|
|
if(closet != src)
|
|
return 0
|
|
return 1
|
|
|
|
/obj/structure/closet/proc/dump_contents()
|
|
//Cham Projector Exception
|
|
for(var/obj/effect/dummy/chameleon/AD in src)
|
|
AD.loc = src.loc
|
|
|
|
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
|
|
|
|
/obj/structure/closet/proc/open()
|
|
if(src.opened)
|
|
return 0
|
|
|
|
if(!src.can_open())
|
|
return 0
|
|
|
|
src.dump_contents()
|
|
|
|
src.icon_state = src.icon_opened
|
|
src.opened = 1
|
|
if(istype(src, /obj/structure/closet/body_bag))
|
|
playsound(src.loc, 'zip.ogg', 15, 1, -3)
|
|
else
|
|
playsound(src.loc, 'click.ogg', 15, 1, -3)
|
|
density = 0
|
|
return 1
|
|
|
|
/obj/structure/closet/proc/close()
|
|
if(!src.opened)
|
|
return 0
|
|
if(!src.can_close())
|
|
return 0
|
|
|
|
var/itemcount = 0
|
|
|
|
//Cham Projector Exception
|
|
for(var/obj/effect/dummy/chameleon/AD in src.loc)
|
|
if(itemcount >= storage_capacity)
|
|
break
|
|
AD.loc = src
|
|
itemcount++
|
|
|
|
for(var/obj/item/I in src.loc)
|
|
if(itemcount >= storage_capacity)
|
|
break
|
|
if(!I.anchored)
|
|
I.loc = src
|
|
itemcount++
|
|
|
|
for(var/mob/M in src.loc)
|
|
if(itemcount >= storage_capacity)
|
|
break
|
|
if(istype (M, /mob/dead/observer))
|
|
continue
|
|
if(M.buckled)
|
|
continue
|
|
|
|
if(M.client)
|
|
M.client.perspective = EYE_PERSPECTIVE
|
|
M.client.eye = src
|
|
|
|
M.loc = src
|
|
itemcount++
|
|
|
|
src.icon_state = src.icon_closed
|
|
src.opened = 0
|
|
if(istype(src, /obj/structure/closet/body_bag))
|
|
playsound(src.loc, 'zip.ogg', 15, 1, -3)
|
|
else
|
|
playsound(src.loc, 'click.ogg', 15, 1, -3)
|
|
density = 1
|
|
return 1
|
|
|
|
/obj/structure/closet/proc/toggle()
|
|
if(src.opened)
|
|
return src.close()
|
|
return src.open()
|
|
|
|
// this should probably use dump_contents()
|
|
/obj/structure/closet/ex_act(severity)
|
|
switch(severity)
|
|
if(1)
|
|
for(var/atom/movable/A as mob|obj in src)//pulls everything out of the locker and hits it with an explosion
|
|
A.loc = src.loc
|
|
A.ex_act(severity++)
|
|
del(src)
|
|
if(2)
|
|
if(prob(50))
|
|
for (var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
A.ex_act(severity++)
|
|
del(src)
|
|
if(3)
|
|
if(prob(5))
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
A.ex_act(severity++)
|
|
del(src)
|
|
|
|
/obj/structure/closet/bullet_act(var/obj/item/projectile/Proj)
|
|
health -= Proj.damage
|
|
..()
|
|
if(health <= 0)
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
del(src)
|
|
|
|
return
|
|
|
|
// this should probably use dump_contents()
|
|
/obj/structure/closet/blob_act()
|
|
if(prob(75))
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
del(src)
|
|
|
|
/obj/structure/closet/meteorhit(obj/O as obj)
|
|
if(O.icon_state == "flaming")
|
|
for(var/mob/M in src)
|
|
M.meteorhit(O)
|
|
src.dump_contents()
|
|
del(src)
|
|
|
|
/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(src.opened)
|
|
if(istype(W, /obj/item/weapon/grab))
|
|
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
|
|
|
|
if(istype(W, /obj/item/weapon/weldingtool))
|
|
var/obj/item/weapon/weldingtool/WT = W
|
|
if(!WT.remove_fuel(0,user))
|
|
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
|
|
return
|
|
new /obj/item/stack/sheet/metal(src.loc)
|
|
for(var/mob/M in viewers(src))
|
|
M.show_message("<span class='notice'>\The [src] has been cut apart by [user] with \the [WT].</span>", 3, "You hear welding.", 2)
|
|
del(src)
|
|
return
|
|
|
|
if(isrobot(user))
|
|
return
|
|
|
|
usr.drop_item()
|
|
|
|
if(W)
|
|
W.loc = src.loc
|
|
|
|
else if(istype(W, /obj/item/weapon/packageWrap))
|
|
return
|
|
else if(istype(W, /obj/item/weapon/weldingtool))
|
|
var/obj/item/weapon/weldingtool/WT = W
|
|
if(!WT.remove_fuel(0,user))
|
|
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
|
|
return
|
|
src.welded =! src.welded
|
|
for(var/mob/M in viewers(src))
|
|
M.show_message("<span class='warning'>[src] has been [welded?"welded shut":"unwelded"] by [user.name].</span>", 3, "You hear welding.", 2)
|
|
else
|
|
src.attack_hand(user)
|
|
return
|
|
|
|
/obj/structure/closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
|
|
if(istype(O, /obj/screen) || istype(O, /obj/hud)) //fix for HUD elements making their way into the world -Pete
|
|
return
|
|
if(O.loc == user)
|
|
return
|
|
if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis)
|
|
return
|
|
if((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)))
|
|
return
|
|
if(user.loc==null) // just in case someone manages to get a closet into the blue light dimension, as unlikely as that seems
|
|
return
|
|
if(!istype(user.loc, /turf)) // are you in a container/closet/pod/etc?
|
|
return
|
|
if(!src.opened)
|
|
return
|
|
if(istype(O, /obj/structure/closet))
|
|
return
|
|
step_towards(O, src.loc)
|
|
if(user != O)
|
|
user.show_viewers("<span class='danger'>[user] stuffs [O] into [src]!</span>")
|
|
src.add_fingerprint(user)
|
|
return
|
|
|
|
/obj/structure/closet/relaymove(mob/user as mob)
|
|
if(user.stat)
|
|
return
|
|
|
|
if(!src.open())
|
|
user << "<span class='notice'>It won't budge!</span>"
|
|
if(!lastbang)
|
|
lastbang = 1
|
|
for (var/mob/M in hearers(src, null))
|
|
M << text("<FONT size=[]>BANG, bang!</FONT>", max(0, 5 - get_dist(src, M)))
|
|
spawn(30)
|
|
lastbang = 0
|
|
|
|
|
|
/obj/structure/closet/attack_paw(mob/user as mob)
|
|
return src.attack_hand(user)
|
|
|
|
/obj/structure/closet/attack_hand(mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
|
|
if(!src.toggle())
|
|
usr << "<span class='notice'>It won't budge!</span>"
|
|
|
|
/obj/structure/closet/verb/verb_toggleopen()
|
|
set src in oview(1)
|
|
set category = "Object"
|
|
set name = "Toggle Open"
|
|
|
|
if(!usr.canmove || usr.stat || usr.restrained())
|
|
return
|
|
|
|
if(ishuman(usr))
|
|
src.attack_hand(usr)
|
|
else
|
|
usr << "<span class='warning'>This mob type can't use this verb.</span>"
|