mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-22 05:17:38 +01:00
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:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
# balance
|
||||
# admin
|
||||
# backend
|
||||
# security
|
||||
# refactor
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: JohnWildkins
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- tweak: "All pages of the clipboard are now writable."
|
||||
- tweak: "You can now write to a clipboard with an attached pen, without needing to remove it. If a clipboard is empty, you can also attach a pen by clicking on the clipboard with a pen in your active hand."
|
||||
- bugfix: "Clipboard UI now updates when papers or a pen is added to the clipboard."
|
||||
- bugfix: "Clipboard icon now updates when the front page is written on. "
|
||||
Reference in New Issue
Block a user