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/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 878ee69fdb2..75235523c93 100644
--- a/code/modules/chemical/Chemistry-Tools.dm
+++ b/code/modules/chemical/Chemistry-Tools.dm
@@ -981,95 +981,54 @@
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
- B.data["donor"] = T
- /*
- if(T.virus && T.virus.spread_type != SPECIAL)
- B.data["virus"] = new T.virus.type(0)
- */
+
+ var/datum/reagent/B = new /datum/reagent/blood
+ B.holder = src
+ B.volume = amount
+ //set reagent data
+ B.data["donor"] = T
+ /*
+ if(T.virus && T.virus.spread_type != SPECIAL)
+ B.data["virus"] = new T.virus.type(0)
+ */
- for(var/datum/disease/D in T.viruses)
- if(!B.data["viruses"])
- B.data["viruses"] = list()
+ for(var/datum/disease/D in T.viruses)
+ if(!B.data["viruses"])
+ B.data["viruses"] = list()
- B.data["viruses"] += new D.type
+ B.data["viruses"] += new D.type
- // not sure why it was checking if(B.data["virus2"]), but it seemed wrong
- if(T.virus2)
- B.data["virus2"] = T.virus2.getcopy()
+ // not sure why it was checking if(B.data["virus2"]), but it seemed wrong
+ if(T.virus2)
+ B.data["virus2"] = T.virus2.getcopy()
- B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
- if(T.resistances&&T.resistances.len)
- B.data["resistances"] = T.resistances.Copy()
- if(istype(target, /mob/living/carbon/human))//I wish there was some hasproperty operation...
- B.data["blood_type"] = copytext(T.dna.b_type,1,0)
- var/list/temp_chem = list()
- for(var/datum/reagent/R in target.reagents.reagent_list)
- temp_chem += R.name
- temp_chem[R.name] = R.volume
- B.data["trace_chem"] = list2params(temp_chem)
- B.data["antibodies"] = T.antibodies
- //debug
- //for(var/D in B.data)
- // world << "Data [D] = [B.data[D]]"
- //debug
+ B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
+ if(T.resistances&&T.resistances.len)
+ B.data["resistances"] = T.resistances.Copy()
+ if(istype(target, /mob/living/carbon/human))//I wish there was some hasproperty operation...
+ B.data["blood_type"] = copytext(T.dna.b_type,1,0)
+ var/list/temp_chem = list()
+ for(var/datum/reagent/R in target.reagents.reagent_list)
+ temp_chem += R.name
+ temp_chem[R.name] = R.volume
+ B.data["trace_chem"] = list2params(temp_chem)
+ B.data["antibodies"] = T.antibodies
+ //debug
+ //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. Halp.
- T:vessel.remove_reagent("blood",amount)
- else
- var/datum/reagent/B = new /datum/reagent/blood
- B.holder = src
- B.volume = amount
- //set reagent data
- B.data["donor"] = T
- /*
- if(T.virus && T.virus.spread_type != SPECIAL)
- B.data["virus"] = new T.virus.type(0)
- */
+ 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.
-
-
- for(var/datum/disease/D in T.viruses)
- if(!B.data["viruses"])
- B.data["viruses"] = list()
-
-
- B.data["viruses"] += new D.type
-
- // not sure why it was checking if(B.data["virus2"]), but it seemed wrong
- if(T.virus2)
- B.data["virus2"] = T.virus2.getcopy()
-
- B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
- if(T.resistances&&T.resistances.len)
- B.data["resistances"] = T.resistances.Copy()
- if(istype(target, /mob/living/carbon/human))//I wish there was some hasproperty operation...
- B.data["blood_type"] = copytext(T.dna.b_type,1,0)
- var/list/temp_chem = list()
- for(var/datum/reagent/R in target.reagents.reagent_list)
- temp_chem += R.name
- temp_chem[R.name] = R.volume
- B.data["trace_chem"] = list2params(temp_chem)
- B.data["antibodies"] = T.antibodies
- //debug
- //for(var/D in B.data)
- // world << "Data [D] = [B.data[D]]"
- //debug
-
- src.reagents.reagent_list += B
- src.reagents.update_total()
- src.on_reagent_change()
- src.reagents.handle_reactions()
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)