Heads of staff buff (clipboard QOL + fixes) (#7204)

* make clipboards great again

* geevies is right

Co-Authored-By: Geeves <ggrobler447@gmail.com>
This commit is contained in:
JohnWildkins
2019-10-22 23:37:20 -04:00
committed by Werner
parent a59bd25fde
commit ef34fd3a43
3 changed files with 89 additions and 15 deletions
+35 -15
View File
@@ -9,6 +9,8 @@
throw_range = 10
var/obj/item/weapon/pen/haspen //The stored pen.
var/obj/item/weapon/toppaper //The topmost piece of paper.
var/list/r_contents = list()
var/ui_open = FALSE
slot_flags = SLOT_BELT
/obj/item/weapon/clipboard/Initialize()
@@ -52,12 +54,19 @@
user.drop_from_inventory(W,src)
if(istype(W, /obj/item/weapon/paper))
toppaper = W
r_contents = reverselist(contents)
to_chat(user, "<span class='notice'>You clip the [W] onto \the [src].</span>")
update_icon()
else if(istype(toppaper) && istype(W, /obj/item/weapon/pen))
toppaper.attackby(W, usr)
update_icon()
toppaper.attackby(W, user)
else if(istype(W, /obj/item/weapon/pen))
add_pen(user)
if(ui_open)
attack_self(user)
update_icon()
return
@@ -69,22 +78,36 @@
dat += "<A href='?src=\ref[src];addpen=1'>Add Pen</A><BR><HR>"
//The topmost paper. I don't think there's any way to organise contents in byond, so this is what we're stuck with. -Pete
//i'm leaving this here because it's funny - wildkins
if(toppaper)
var/obj/item/weapon/paper/P = toppaper
dat += "<A href='?src=\ref[src];write=\ref[P]'>Write</A> <A href='?src=\ref[src];remove=\ref[P]'>Remove</A> <A href='?src=\ref[src];rename=\ref[P]'>Rename</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR><HR>"
for(var/obj/item/weapon/paper/P in src)
for(var/obj/item/weapon/paper/P in r_contents) // now this is podracing
if(P==toppaper)
continue
dat += "<A href='?src=\ref[src];remove=\ref[P]'>Remove</A> <A href='?src=\ref[src];rename=\ref[P]'>Rename</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR>"
for(var/obj/item/weapon/photo/Ph in src)
dat += "<A href='?src=\ref[src];write=\ref[P]'>Write</A> <A href='?src=\ref[src];remove=\ref[P]'>Remove</A> <A href='?src=\ref[src];rename=\ref[P]'>Rename</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR>"
for(var/obj/item/weapon/photo/Ph in r_contents)
dat += "<A href='?src=\ref[src];remove=\ref[Ph]'>Remove</A> <A href='?src=\ref[src];rename=\ref[Ph]'>Rename</A> - <A href='?src=\ref[src];look=\ref[Ph]'>[Ph.name]</A><BR>"
user << browse(dat, "window=clipboard")
if(!ui_open)
ui_open = TRUE
onclose(user, "clipboard")
add_fingerprint(usr)
add_fingerprint(user)
return
/obj/item/weapon/clipboard/proc/add_pen(mob/user)
if(!haspen)
var/obj/item/weapon/pen/W = user.get_active_hand()
if(istype(W, /obj/item/weapon/pen))
user.drop_from_inventory(W,src)
haspen = W
to_chat(user, "<span class='notice'>You slot the pen into \the [src].</span>")
else
to_chat(user, span("notice", "This clipboard already has a pen!"))
/obj/item/weapon/clipboard/Topic(href, href_list)
..()
if((usr.stat || usr.restrained()))
@@ -99,29 +122,26 @@
haspen = null
else if(href_list["addpen"])
if(!haspen)
var/obj/item/weapon/pen/W = usr.get_active_hand()
if(istype(W, /obj/item/weapon/pen))
usr.drop_from_inventory(W,src)
haspen = W
to_chat(usr, "<span class='notice'>You slot the pen into \the [src].</span>")
add_pen(usr)
else if(href_list["write"])
var/obj/item/weapon/P = locate(href_list["write"])
if(P && (P.loc == src) && istype(P, /obj/item/weapon/paper) && (P == toppaper) )
if(P && (P.loc == src) && istype(P, /obj/item/weapon/paper))
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/weapon/pen))
P.attackby(I, usr)
else if (haspen)
P.attackby(haspen, usr)
else if(href_list["remove"])
var/obj/item/P = locate(href_list["remove"])
if(P && (P.loc == src) && (istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/photo)) )
r_contents -= P
P.forceMove(usr.loc)
usr.put_in_hands(P)
if(P == toppaper)
+10
View File
@@ -361,6 +361,7 @@
return
var/obj/item/i = usr.get_active_hand() // Check to see if he still got that darn pen, also check if he's using a crayon or pen.
var/obj/item/weapon/clipboard/c
var/iscrayon = 0
if(!istype(i, /obj/item/weapon/pen))
if(usr.back && istype(usr.back,/obj/item/weapon/rig))
@@ -370,6 +371,12 @@
i = m.device
else
return
else if(istype(src.loc, /obj/item/weapon/clipboard))
c = src.loc
if(c.haspen)
i = c.haspen
else
return
else
return
@@ -403,6 +410,8 @@
playsound(src, pick('sound/bureaucracy/pen1.ogg','sound/bureaucracy/pen2.ogg'), 20)
update_icon()
if(c)
c.update_icon()
/obj/item/weapon/paper/attackby(obj/item/weapon/P as obj, mob/user as mob)
@@ -519,6 +528,7 @@
else if(P.iswelder())
burnpaper(P, user)
update_icon()
add_fingerprint(user)
return