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