diff --git a/code/WorkInProgress/SkyMarshal/wardrobes.dm b/code/WorkInProgress/SkyMarshal/wardrobes.dm
index c20b69da825..94993b7eab2 100755
--- a/code/WorkInProgress/SkyMarshal/wardrobes.dm
+++ b/code/WorkInProgress/SkyMarshal/wardrobes.dm
@@ -415,6 +415,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/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 9a2f05631d4..f805613ea59 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -490,6 +490,19 @@
throw_range = 10
flags = ONBELT
+/obj/item/weapon/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
name = "cable coil"
diff --git a/code/game/objects/closets/secure/security.dm b/code/game/objects/closets/secure/security.dm
index 4dc926d2251..839951b8ee9 100644
--- a/code/game/objects/closets/secure/security.dm
+++ b/code/game/objects/closets/secure/security.dm
@@ -137,6 +137,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/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 f5936a64b2f..6b3427f52aa 100644
--- a/code/game/objects/items/weapons/papers_bins.dm
+++ b/code/game/objects/items/weapons/papers_bins.dm
@@ -7,6 +7,7 @@ GIFTS
BEDSHEET BIN
PHOTOGRAPHS
CLIPBOARDS
+NOTEBOOK
*/
@@ -760,3 +761,160 @@ CLIPBOARDS
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/icons/obj/items.dmi b/icons/obj/items.dmi
index 936eb43737f..a855b7e2d4a 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ