diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 4fec2ee842..7e16c426db 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -316,25 +316,45 @@
clown = 1
if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/photo))
+ if (istype(P, /obj/item/weapon/paper/carbon))
+ var/obj/item/weapon/paper/carbon/C = P
+ if (!C.iscopy && !C.copied)
+ user << "Take off the carbon copy first."
+ add_fingerprint(user)
+ return
var/obj/item/weapon/paper_bundle/B = new(src.loc)
if (name != "paper")
B.name = name
else if (P.name != "paper" && P.name != "photo")
B.name = P.name
user.drop_from_inventory(P)
- if (user.r_hand == src)
- user.drop_from_inventory(src)
- B.loc = user
- user.r_hand = B
- B.layer = 20
- else if (user.l_hand == src)
- user.drop_from_inventory(src)
- B.loc = user
- user.l_hand = B
- B.layer = 20
- if(istype(user,/mob/living/carbon/human))
- user:update_inv_l_hand()
- user:update_inv_r_hand()
+ if (istype(user, /mob/living/carbon/human))
+ var/mob/living/carbon/human/h_user = user
+ if (h_user.r_hand == src)
+ h_user.drop_from_inventory(src)
+ h_user.put_in_r_hand(B)
+ else if (h_user.l_hand == src)
+ h_user.drop_from_inventory(src)
+ h_user.put_in_l_hand(B)
+ else if (h_user.l_store == src)
+ h_user.drop_from_inventory(src)
+ B.loc = h_user
+ B.layer = 20
+ h_user.l_store = B
+ h_user.update_inv_pockets()
+ else if (h_user.r_store == src)
+ h_user.drop_from_inventory(src)
+ B.loc = h_user
+ B.layer = 20
+ h_user.r_store = B
+ h_user.update_inv_pockets()
+ else if (h_user.head == src)
+ h_user.u_equip(src)
+ h_user.put_in_hands(B)
+ else if (!istype(src.loc, /turf))
+ src.loc = get_turf(h_user)
+ if(h_user.client) h_user.client.screen -= src
+ h_user.put_in_hands(B)
user << "You clip the [P.name] to [(src.name == "paper") ? "the paper" : src.name]."
src.loc = B
P.loc = B
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index 8ede4c9ed1..241fd852d9 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -21,6 +21,13 @@
var/obj/item/weapon/paper/P
if(istype(W, /obj/item/weapon/paper))
P = W
+ if (istype(P, /obj/item/weapon/paper/carbon))
+ var/obj/item/weapon/paper/carbon/C = P
+ if (!C.iscopy && !C.copied)
+ user << "Take off the carbon copy first."
+ add_fingerprint(user)
+ return
+
amount++
if(screen == 2)
screen = 1
@@ -37,9 +44,6 @@
user << "You add [(W.name == "photo") ? "the photo" : W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name]."
user.drop_from_inventory(W)
W.loc = src
- if(istype(user,/mob/living/carbon/human))
- user:update_inv_l_hand()
- user:update_inv_r_hand()
else
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon))
usr << browse("", "window=[name]") //Closes the dialog
@@ -103,7 +107,7 @@
/obj/item/weapon/paper_bundle/Topic(href, href_list)
..()
- if((src in usr.contents) || (src.loc in usr.contents))
+ if((src in usr.contents) || (istype(src.loc, /obj/item/weapon/folder) && (src.loc in usr.contents)))
usr.set_machine(src)
if(href_list["next_page"])
if(page == amount)
@@ -125,44 +129,18 @@
playsound(src.loc, "pageturn", 50, 1)
if(href_list["remove"])
var/obj/item/weapon/W = src[page]
- W.loc = usr.loc
- if(istype(usr,/mob/living/carbon))
- //Place the item in the user's hand if possible
- if(!usr.r_hand)
- W.loc = usr
- usr.r_hand = W
- W.layer = 20
- else if(!usr.l_hand)
- W.loc = usr
- usr.l_hand = W
- W.layer = 20
+ usr.put_in_hands(W)
usr << "You remove the [W.name] from the bundle."
-
if(amount == 1)
var/obj/item/weapon/paper/P = src[1]
- P.loc = usr.loc
- if (usr.r_hand == src)
- usr.drop_from_inventory(src)
- P.loc = usr
- usr.r_hand = P
- P.layer = 20
- else if (usr.l_hand == src)
- usr.drop_from_inventory(src)
- P.loc = usr
- usr.l_hand = P
- P.layer = 20
- if(istype(usr,/mob/living/carbon/human))
- usr:update_inv_l_hand()
- usr:update_inv_r_hand()
+ usr.drop_from_inventory(src)
+ usr.put_in_hands(P)
del(src)
else if(page == amount)
screen = 2
else if(page == amount+1)
page--
- if(istype(usr,/mob/living/carbon/human))
- usr:update_inv_l_hand()
- usr:update_inv_r_hand()
amount--
update_icon()
else
@@ -193,10 +171,8 @@
usr << "You loosen the bundle."
for(var/obj/O in src)
O.loc = usr.loc
+ O.layer = initial(O.layer)
usr.drop_from_inventory(src)
- if(istype(usr,/mob/living/carbon/human))
- usr:update_inv_l_hand()
- usr:update_inv_r_hand()
del(src)
return
@@ -220,7 +196,6 @@
i++
else if(istype(O, /obj/item/weapon/photo))
var/obj/item/weapon/photo/Ph = O
-// img.icon_state = "photo"
img = Ph.tiny
photo = 1
overlays += img
diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi
index 3c6d52748c..b442650892 100644
Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ