diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index efe9f03cd12..798ea447d58 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -431,12 +431,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/jobspecific/poison_pen
name = "Poison Pen"
- desc = "Cutting edge of deadly writing implements technology, this gadget will infuse any piece of paper with delayed contact poison."
+ desc = "Cutting edge of deadly writing implements technology, this gadget will infuse any piece of paper with various delayed poisons based on the selected color. Black ink is normal ink, red ink is a highly lethal poison, green ink causes radiation, blue ink will periodically shock the victim, and yellow ink will paralyze. The included gloves will protect you from your own poisons."
reference = "PP"
- item = /obj/item/pen/poison
- cost = 1
+ item = /obj/item/storage/box/syndie_kit/poisoner
+ cost = 2
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
- job = list("Head of Personnel", "Quartermaster", "Cargo Technician", "Librarian")
+ job = list("Head of Personnel", "Quartermaster", "Cargo Technician", "Librarian", "Coroner", "Psychiatrist", "Virologist")
// DANGEROUS WEAPONS
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index 2fae836e63b..94a2122a39b 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -182,6 +182,13 @@
new /obj/item/grenade/empgrenade(src)
new /obj/item/implanter/emp/(src)
+/obj/item/storage/box/syndie_kit/poisoner
+ name = "poisoner's kit"
+
+/obj/item/storage/box/syndie_kit/poisoner/populate_contents()
+ new /obj/item/pen/multi/poison(src)
+ new /obj/item/clothing/gloves/color/black/poisoner(src)
+
/obj/item/storage/box/syndie_kit/c4
name = "pack of C-4 explosives"
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 9aabb08fd1f..5e91453f532 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -257,7 +257,8 @@
//Gloves
/obj/item/clothing/gloves
name = "gloves"
- gender = PLURAL //Carn: for grammarically correct text-parsing
+ ///Carn: for grammarically correct text-parsing
+ gender = PLURAL
w_class = WEIGHT_CLASS_SMALL
icon = 'icons/obj/clothing/gloves.dmi'
siemens_coefficient = 0.50
@@ -265,8 +266,11 @@
slot_flags = SLOT_GLOVES
attack_verb = list("challenged")
var/transfer_prints = FALSE
- var/pickpocket = 0 //Master pickpocket?
+ ///Master pickpocket?
+ var/pickpocket = 0
var/clipped = 0
+ ///Do they protect the wearer from poison ink?
+ var/safe_from_poison = FALSE
strip_delay = 20
put_on_delay = 40
diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm
index 31b7ff2833a..f7b68bf2bf8 100644
--- a/code/modules/clothing/gloves/color.dm
+++ b/code/modules/clothing/gloves/color.dm
@@ -124,6 +124,10 @@
return
..()
+/obj/item/clothing/gloves/color/black/poisoner
+ desc = "These gloves are fire-resistant. They seem thicker than usual."
+ safe_from_poison = TRUE
+
/obj/item/clothing/gloves/color/orange
name = "orange gloves"
desc = "A pair of gloves, they don't look special in any way."
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index cb5700f759e..2c5f1dad0fa 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -785,10 +785,10 @@
if(contact_poison && ishuman(user))
var/mob/living/carbon/human/H = user
var/obj/item/clothing/gloves/G = H.gloves
- if(!istype(G) || G.transfer_prints)
+ if(!istype(G) || !G.safe_from_poison)
H.reagents.add_reagent(contact_poison, contact_poison_volume)
+ add_attack_logs(src, user, "Picked up [src], coated with [contact_poison] by [contact_poison_poisoner]")
contact_poison = null
- add_attack_logs(src, user, "Picked up [src], the paper poisoned by [contact_poison_poisoner]")
. = ..()
/obj/item/paper/researchnotes
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 809f539149b..9a7cd5f6c38 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -211,18 +211,30 @@
/obj/item/proc/on_write(obj/item/paper/P, mob/user)
return
-/obj/item/pen/poison
- var/uses_left = 3
+/obj/item/pen/multi/poison
+ var/current_poison = null
-/obj/item/pen/poison/on_write(obj/item/paper/P, mob/user)
- if(P.contact_poison_volume)
- to_chat(user, "[P] is already coated.")
- else if(uses_left)
- uses_left--
- P.contact_poison = "amanitin"
- P.contact_poison_volume = 15
- P.contact_poison_poisoner = user.name
- add_attack_logs(user, P, "Poison pen'ed")
- to_chat(user, "You apply the poison to [P].")
- else
- to_chat(user, "[src] clicks. It seems to be depleted.")
+/obj/item/pen/multi/poison/attack_self(mob/living/user)
+ . = ..()
+ switch(colour)
+ if("black")
+ current_poison = null
+ if("red")
+ current_poison = "amanitin"
+ if("green")
+ current_poison = "polonium"
+ if("blue")
+ current_poison = "teslium"
+ if("yellow")
+ current_poison = "pancuronium"
+
+/obj/item/pen/multi/poison/on_write(obj/item/paper/P, mob/user)
+ if(current_poison)
+ if(P.contact_poison)
+ to_chat(user, "[P] is already coated.")
+ else
+ P.contact_poison = current_poison
+ P.contact_poison_volume = 20
+ P.contact_poison_poisoner = user.name
+ add_attack_logs(user, P, "Poison pen'ed")
+ to_chat(user, "You apply the poison to [P].")