diff --git a/code/WorkInProgress/Ported/Bureaucracy/filing.dm b/code/WorkInProgress/Ported/Bureaucracy/filing.dm
index a742371e33e..47ffb29f3d9 100644
--- a/code/WorkInProgress/Ported/Bureaucracy/filing.dm
+++ b/code/WorkInProgress/Ported/Bureaucracy/filing.dm
@@ -1,8 +1,8 @@
/obj/structure/filingcabinet
name = "Filing Cabinet"
desc = "A large cabinet with drawers."
- icon = 'computer.dmi'
- icon_state = "messyfiles"
+ icon = 'bureaucracy.dmi'
+ icon_state = "filingcabinet"
density = 1
anchored = 1
diff --git a/code/WorkInProgress/SkyMarshal/wardrobes.dm b/code/WorkInProgress/SkyMarshal/wardrobes.dm
index 35879744025..e40eff552a7 100755
--- a/code/WorkInProgress/SkyMarshal/wardrobes.dm
+++ b/code/WorkInProgress/SkyMarshal/wardrobes.dm
@@ -420,7 +420,7 @@
new /obj/item/weapon/storage/box(BPK)
new /obj/item/weapon/fcardholder(src)
new /obj/item/weapon/clipboard(src)
- new /obj/item/weapon/notebook(src)
+ new /obj/item/weapon/clipboard/notebook(src)
new /obj/item/device/detective_scanner(src)
new /obj/item/policetaperoll(src)
new /obj/item/weapon/storage/box/evidence(src)
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 0f3e5536624..85c70ce50ab 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -578,18 +578,10 @@
throw_range = 10
flags = ONBELT
-/obj/item/weapon/notebook
+/obj/item/weapon/clipboard/notebook
name = "notebook"
desc = "Holds paper and pens. Feels very noire."
- icon = 'items.dmi'
icon_state = "notebook00"
- var/obj/item/weapon/pen/pen = null
- item_state = "notebook"
- throwforce = 0
- w_class = 2.0
- throw_speed = 3
- throw_range = 10
- flags = ONBELT
#define MAXCOIL 30
/obj/item/weapon/cable_coil
diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm
index 66a3b259156..b4ba4f2b18e 100644
--- a/code/game/atom_procs.dm
+++ b/code/game/atom_procs.dm
@@ -136,7 +136,7 @@
if(H.gloves != src)
if(prob(75) && istype(H.gloves, /obj/item/clothing/gloves/latex))
return 0
- else if(H.gloves && !istype(H.gloves, /obj/item/clothing/gloves/latex))
+ else if(H.gloves && !istype(H.gloves, /obj/item/clothing/gloves/latex) && !istype(H.gloves, /obj/item/clothing/gloves/fingerless))
return 0
if(fingerprintslast != H.key)
fingerprintshidden += text("Real name: [], Key: []",H.real_name, H.key)
diff --git a/code/game/objects/closets/secure/security.dm b/code/game/objects/closets/secure/security.dm
index 5d41480fda6..7de5fd1ecc1 100644
--- a/code/game/objects/closets/secure/security.dm
+++ b/code/game/objects/closets/secure/security.dm
@@ -166,7 +166,7 @@
var/obj/item/weapon/storage/box/B = new(BPK)
var/obj/item/weapon/clipboard/C = new(B)
new /obj/item/weapon/pen(C)
- new /obj/item/weapon/notebook(src)
+ new /obj/item/weapon/clipboard/notebook(src)
new /obj/item/device/detective_scanner(src)
new /obj/item/policetaperoll(src)
new /obj/item/weapon/storage/box/evidence(src)
diff --git a/code/game/objects/items/weapons/papers_bins.dm b/code/game/objects/items/weapons/papers_bins.dm
index 3ac09bc13c1..2aec7878b7c 100644
--- a/code/game/objects/items/weapons/papers_bins.dm
+++ b/code/game/objects/items/weapons/papers_bins.dm
@@ -701,7 +701,7 @@ NOTEBOOK
user.drop_item()
P.loc = src
else
- user << "\blue Not enough space!!!"
+ user << "\blue Not enough space!"
else
if (istype(P, /obj/item/weapon/pen))
if (!src.pen)
@@ -714,7 +714,7 @@ NOTEBOOK
return
/obj/item/weapon/clipboard/proc/update()
- src.icon_state = text("clipboard[][]", (locate(/obj/item/weapon/paper, src) ? "1" : "0"), (locate(/obj/item/weapon/pen, src) ? "1" : "0"))
+ src.icon_state = text("[src.name][][]", (locate(/obj/item/weapon/paper, src) ? "1" : "0"), (locate(/obj/item/weapon/pen, src) ? "1" : "0"))
return
@@ -764,160 +764,3 @@ NOTEBOOK
src.name = text("photo[]", (n_name ? text("- '[]'", n_name) : null))
src.add_fingerprint(user)
return
-
-// notebook
-
-/obj/item/weapon/notebook/attack_self(mob/user as mob)
- var/dat = "Notebook
"
- if (src.pen)
- dat += text("Remove Pen
", src)
- for(var/obj/item/weapon/paper/P in src)
- dat += text("[] Write Remove
", src, P, P.name, src, P, src, P)
- user << browse(dat, "window=notebook")
- onclose(user, "notebook")
- return
-
-/obj/item/weapon/notebook/Topic(href, href_list)
- ..()
- if ((usr.stat || usr.restrained()))
- return
- if (usr.contents.Find(src))
- usr.machine = src
- if (href_list["pen"])
- if (src.pen)
- if ((usr.hand && !( usr.l_hand )))
- usr.l_hand = src.pen
- src.pen.loc = usr
- src.pen.layer = 20
- src.pen = null
- usr.update_clothing()
- else
- if (!( usr.r_hand ))
- usr.r_hand = src.pen
- src.pen.loc = usr
- src.pen.layer = 20
- src.pen = null
- usr.update_clothing()
- if (src.pen)
- src.pen.add_fingerprint(usr)
- src.add_fingerprint(usr)
- if (href_list["remove"])
- var/obj/item/P = locate(href_list["remove"])
- if ((P && P.loc == src))
- if ((usr.hand && !( usr.l_hand )))
- usr.l_hand = P
- P.loc = usr
- P.layer = 20
- usr.update_clothing()
- else
- if (!( usr.r_hand ))
- usr.r_hand = P
- P.loc = usr
- P.layer = 20
- usr.update_clothing()
- P.add_fingerprint(usr)
- src.add_fingerprint(usr)
- if (href_list["write"])
- var/obj/item/P = locate(href_list["write"])
- if ((P && P.loc == src))
- if (istype(usr.r_hand, /obj/item/weapon/pen))
- P.attackby(usr.r_hand, usr)
- else
- if (istype(usr.l_hand, /obj/item/weapon/pen))
- P.attackby(usr.l_hand, usr)
- else
- if (istype(src.pen, /obj/item/weapon/pen))
- P.attackby(src.pen, usr)
- src.add_fingerprint(usr)
- if (href_list["read"])
- var/obj/item/weapon/paper/P = locate(href_list["read"])
- if ((P && P.loc == src))
- if (!( istype(usr, /mob/living/carbon/human) ))
- usr << browse(text("[][]", P.name, stars(P.info)), text("window=[]", P.name))
- onclose(usr, "[P.name]")
- else
- usr << browse(text("[][]", P.name, P.info), text("window=[]", P.name))
- onclose(usr, "[P.name]")
- if (ismob(src.loc))
- var/mob/M = src.loc
- if (M.machine == src)
- spawn( 0 )
- src.attack_self(M)
- return
- return
-
-/obj/item/weapon/notebook/attack_paw(mob/user as mob)
- return src.attack_hand(user)
-
-/obj/item/weapon/notebook/attack_hand(mob/user as mob)
-
- if ((locate(/obj/item/weapon/paper, src) && (!( user.equipped() ) && (user.l_hand == src || user.r_hand == src))))
- var/obj/item/weapon/paper/P
- for(P in src)
- break
- if (P)
- if (user.hand)
- user.l_hand = P
- else
- user.r_hand = P
- P.loc = user
- P.layer = 20
- P.add_fingerprint(user)
- user.update_clothing()
- src.add_fingerprint(user)
- else
- return ..()
- return
-
-/obj/item/weapon/notebook/attackby(obj/item/weapon/P as obj, mob/user as mob)
- ..()
- if (istype(P, /obj/item/weapon/paper))
- if (src.contents.len < 15)
- user.drop_item()
- P.loc = src
- else
- user << "\blue Not enough space!!!"
- else
- if (istype(P, /obj/item/weapon/pen))
- if (!src.pen)
- user.drop_item()
- P.loc = src
- src.pen = P
- else
- return
- src.update()
- return
-
-/obj/item/weapon/notebook/proc/update()
- src.icon_state = text("notebook[][]", (locate(/obj/item/weapon/paper, src) ? "1" : "0"), (locate(/obj/item/weapon/pen, src) ? "1" : "0"))
- return
-
-
-/obj/item/weapon/notebook/MouseDrop(obj/over_object as obj) //Quick notebook fix. -Agouri
- if (ishuman(usr) || ismonkey(usr)) //Can monkeys even place items in the pocket slots? Leaving this in just in case~
- var/mob/M = usr
- if (!( istype(over_object, /obj/screen) ))
- return ..()
- if ((!( M.restrained() ) && !( M.stat ) /*&& M.pocket == src*/))
- if (over_object.name == "r_hand")
- if (!( M.r_hand ))
- M.u_equip(src)
- M.r_hand = src
- else
- if (over_object.name == "l_hand")
- if (!( M.l_hand ))
- M.u_equip(src)
- M.l_hand = src
- M.update_clothing()
- src.add_fingerprint(usr)
- return //
-
-/obj/item/weapon/notebook/New()
-
- ..()
- for(var/i = 1, i <= 3, i++)
- var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src)
- P.loc = src
- src.pen = new /obj/item/weapon/pen(src)
- src.update()
- return
diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm
index d742c765e2a..75235523c93 100644
--- a/code/modules/chemical/Chemistry-Tools.dm
+++ b/code/modules/chemical/Chemistry-Tools.dm
@@ -972,13 +972,17 @@
if(istype(target, /mob/living/carbon))//maybe just add a blood reagent to all mobs. Then you can suck them dry...With hundreds of syringes. Jolly good idea.
var/amount = src.reagents.maximum_volume - src.reagents.total_volume
var/mob/living/carbon/T = target
- var/datum/reagent/B = new /datum/reagent/blood
if(!T.dna)
usr << "You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum)"
return
if(T.mutations2 & NOCLONE) //target done been et, no more blood in him
user << "\red You are unable to locate any blood."
return
+ if(ishuman(T))
+ if(T:vessel.get_reagent_amount("blood") < amount)
+ return
+
+ var/datum/reagent/B = new /datum/reagent/blood
B.holder = src
B.volume = amount
//set reagent data
@@ -1016,11 +1020,15 @@
//for(var/D in B.data)
// world << "Data [D] = [B.data[D]]"
//debug
+ if(ishuman(T))
+ T:vessel.remove_reagent("blood",amount) // Removes blood if human
src.reagents.reagent_list += B
src.reagents.update_total()
src.on_reagent_change()
src.reagents.handle_reactions()
+// T:vessel.trans_to(src, amount) // Virus2 and antibodies aren't in blood in the first place.
+
user << "\blue You take a blood sample from [target]"
for(var/mob/O in viewers(4, user))
O.show_message("\red [user] takes a blood sample from [target].", 1)
diff --git a/code/modules/clothing/gloves.dm b/code/modules/clothing/gloves.dm
index 0faf49808be..5ddbd9a3962 100644
--- a/code/modules/clothing/gloves.dm
+++ b/code/modules/clothing/gloves.dm
@@ -242,4 +242,19 @@
color="brown"
cargo
- color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way.
\ No newline at end of file
+ color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way.
+
+//Fingerless gloves
+
+/obj/item/clothing/gloves/fingerless
+ name = "fingerless gloves"
+ desc = "A pair of gloves. They don't seem to have fingers."
+ icon_state = "fingerless_black"
+ item_state = "fingerless_black"
+
+/obj/item/clothing/gloves/fingerless/black
+ name = "black fingerless gloves"
+ desc = "A pair of black gloves. They don't seem to have fingers."
+ icon_state = "fingerless_black"
+ item_state = "fingerless_black"
+ color="black"
\ No newline at end of file
diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi
index 29d0fd98c8a..ae0c24177e6 100644
Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ
diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi
index b3a330e691d..30feeb2818f 100644
Binary files a/icons/mob/screen1.dmi and b/icons/mob/screen1.dmi differ
diff --git a/icons/mob/screen1_old.dmi b/icons/mob/screen1_old.dmi
index 9e14930b16e..dd390f6cafc 100644
Binary files a/icons/mob/screen1_old.dmi and b/icons/mob/screen1_old.dmi differ
diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi
index df838aaa6b4..854f82bd17c 100644
Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ
diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi
index 3d52d8054cd..5b8a7ac5430 100644
Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 26d6dc44b50..ebad33c1b68 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi
index efe04808b5e..98f9c04bd4d 100644
Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ
diff --git a/icons/obj/plants.dmi b/icons/obj/plants.dmi
new file mode 100644
index 00000000000..ea82f747fa7
Binary files /dev/null and b/icons/obj/plants.dmi differ