From 04543d1466d3bd55dffcd417092711e3e1ed4b68 Mon Sep 17 00:00:00 2001 From: Kyep Date: Wed, 1 Mar 2017 23:44:31 -0800 Subject: [PATCH] Initial version, from TG MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ports Poison Pen from TG: https://github.com/tgstation/tgstation/pull/23778 Adds a HoP/Cargotech/QM-only traitor pen that can be used on paper to poison it. Picking up poisoned paper without gloves transfers the poison through your skin, into your bloodstream. Subsequent people to pick it up are not affected. The poison is 15 units of the nerve agent, sarin. This is enough to kill you in a couple of minutes. It is quite obvious. The pen looks like a normal pen, costs 5 TC, and has 3 uses. It cannot be used as a direct weapon. It has to be applied to paper to be effective. 🆑 Kyep rscadd: Added Poison Pen, a stealthy way of applying a contact-based poison to paper. Available to Syndicate HoPs, QMs, and Cargo Techs. /🆑 --- code/datums/uplink_item.dm | 11 +++++++++++ code/modules/paperwork/paper.dm | 13 +++++++++++++ code/modules/paperwork/pen.dm | 18 ++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index d54311921fd..050e01dcf61 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -347,6 +347,17 @@ var/list/uplink_items = list() cost = 2 job = list("Research Director","Chief Medical Officer","Medical Doctor","Psychiatrist","Paramedic","Virologist","Bartender") +// Paper contact poison pen + +/datum/uplink_item/stealthy_weapons/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." + item = /obj/item/weapon/pen/poison + cost = 5 + excludefrom = list(/datum/game_mode/nuclear) + job = list("Head of Personnel", "Quartermaster", "Cargo Technician") + + // DANGEROUS WEAPONS /datum/uplink_item/dangerous diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index a5f04461551..7a2ae8b8e96 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -31,6 +31,8 @@ var/offset_y[0] //usage by the photocopier var/rigged = 0 var/spam_flag = 0 + var/contact_poison // Reagent ID to transfer on contact + var/contact_poison_volume = 0 var/const/deffont = "Verdana" var/const/signfont = "Times New Roman" @@ -278,6 +280,8 @@ info += t // Oh, he wants to edit to the end of the file, let him. updateinfolinks() + i.on_write(src,usr) + show_content(usr, forceshow = 1, infolinks = 1) update_icon() @@ -653,3 +657,12 @@ /obj/item/weapon/paper/evilfax/proc/evilpaper_selfdestruct() visible_message("[src] spontaneously catches fire, and burns up!") qdel(src) + +/obj/item/weapon/paper/pickup(user) + 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) + H.reagents.add_reagent(contact_poison, contact_poison_volume) + contact_poison = null + ..() \ No newline at end of file diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index d7f86727d87..72fd065af3b 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -182,3 +182,21 @@ else icon_state = initial(icon_state) //looks like a normal pen when off. item_state = initial(item_state) + +/obj/item/proc/on_write(obj/item/weapon/paper/P, mob/user) + return + +/obj/item/weapon/pen/poison + var/uses_left = 3 + +/obj/item/weapon/pen/poison/on_write(obj/item/weapon/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 = "sarin" + P.contact_poison_volume = 15 + add_logs(user, P, "used poison pen on") + to_chat(user, "You apply the poison to [P].") + else + to_chat(user, "[src] clicks. It seems to be depleted.") \ No newline at end of file