From ceed4e89f9c1432f1852ea13eb1b6f2b18467344 Mon Sep 17 00:00:00 2001 From: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> Date: Sat, 25 Feb 2023 01:08:40 -0500 Subject: [PATCH] Reworks the poison pen (#20353) * paperwork so boring it kills you * it's worth a bit more now * Backup in case you poison yourself * Virologist gets it, accurate description * I promise im literate Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * No more charcoal, time for gloves * Turns comments into auto-doc --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --- code/datums/uplink_item.dm | 8 ++-- .../items/weapons/storage/uplink_kits.dm | 7 ++++ code/modules/clothing/clothing.dm | 8 +++- code/modules/clothing/gloves/color.dm | 4 ++ code/modules/paperwork/paper.dm | 4 +- code/modules/paperwork/pen.dm | 40 ++++++++++++------- 6 files changed, 49 insertions(+), 22 deletions(-) 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].")