diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index fa408d1b8f..adedddad1b 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -33,7 +33,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/obj/item/weapon/grenade/smokebomb,
/obj/item/weapon/grenade/smokebomb,
/obj/item/weapon/grenade/smokebomb,
- /obj/item/weapon/pen/paralysis,
+ /obj/item/weapon/pen/reagent/paralysis,
/obj/item/weapon/grenade/chem_grenade/incendiary)
cost = 20
containertype = /obj/structure/closet/crate
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 93168d7877..03e6aa14de 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -86,7 +86,7 @@ var/global/list/additional_antag_types = list()
new/datum/uplink_item(/obj/item/weapon/soap/syndie, 1, "Subversive Soap", "SP"),
new/datum/uplink_item(/obj/item/weapon/cane/concealed, 2, "Concealed Cane Sword", "CC"),
new/datum/uplink_item(/obj/item/weapon/cartridge/syndicate, 3, "Detomatix PDA Cartridge", "DC"),
- new/datum/uplink_item(/obj/item/weapon/pen/paralysis, 3, "Paralysis Pen", "PP"),
+ new/datum/uplink_item(/obj/item/weapon/pen/reagent/paralysis, 3, "Paralysis Pen", "PP"),
new/datum/uplink_item(/obj/item/weapon/storage/box/syndie_kit/cigarette, 4, "Cigarette Kit", "BH"),
new/datum/uplink_item(/obj/item/weapon/storage/box/syndie_kit/toxin, 4, "Random Toxin - Beaker", "RT")
),
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index 085e23f9b6..b33d72f6fb 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -11,7 +11,7 @@
if("stealth")
new /obj/item/weapon/gun/energy/crossbow(src)
- new /obj/item/weapon/pen/paralysis(src)
+ new /obj/item/weapon/pen/reagent/paralysis(src)
new /obj/item/device/chameleon(src)
return
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 0d052d9114..4414f4f8f0 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -51,66 +51,59 @@
msg_admin_attack("[user.name] ([user.ckey]) Used the [name] to stab [M.name] ([M.ckey]) (JMP)")
return
+/*
+ * Reagent pens
+ */
+
+/obj/item/weapon/pen/reagent
+ flags = OPENCONTAINER
+ slot_flags = SLOT_BELT
+
+/obj/item/weapon/pen/reagent/New()
+ ..()
+ create_reagents(30)
+
+/obj/item/weapon/pen/reagent/attack(mob/living/M as mob, mob/user as mob)
+
+ if(!istype(M))
+ return
+
+ . = ..()
+
+ if(M.can_inject(user,1))
+ if(reagents.total_volume)
+ if(M.reagents)
+ var/list/contained_reagents = list()
+ for(var/datum/reagent/R in reagents.reagent_list)
+ contained_reagents += R.name
+ M.attack_log += "\[[time_stamp()]\] Injected by [user.name] ([user.ckey]) with \the [src] (INTENT: [uppertext(user.a_intent)]) Reagents: [english_list(contained_reagents)]"
+ user.attack_log += "\[[time_stamp()]\] Injected [M.name] ([M.ckey]) with \the [src] (INTENT: [uppertext(user.a_intent)]) Reagents: [english_list(contained_reagents)]"
+ msg_admin_attack("[key_name_admin(user)] injected [key_name_admin(M)] with \the [src] (INTENT: [uppertext(user.a_intent)]) Reagents: [english_list(contained_reagents)]")
+ reagents.trans_to_mob(M, 30, CHEM_BLOOD)
+
/*
* Sleepy Pens
*/
-/obj/item/weapon/pen/sleepypen
+/obj/item/weapon/pen/reagent/sleepy
desc = "It's a black ink pen with a sharp point and a carefully engraved \"Waffle Co.\""
- flags = OPENCONTAINER
- slot_flags = SLOT_BELT
origin_tech = "materials=2;syndicate=5"
-
-/obj/item/weapon/pen/sleepypen/New()
- var/datum/reagents/R = new/datum/reagents(30) //Used to be 300
- reagents = R
- R.my_atom = src
- R.add_reagent("chloralhydrate", 22) //Used to be 100 sleep toxin//30 Chloral seems to be fatal, reducing it to 22./N
+/obj/item/weapon/pen/reagent/sleepy/New()
..()
- return
-
-
-/obj/item/weapon/pen/sleepypen/attack(mob/M as mob, mob/user as mob)
- if(!(istype(M,/mob)))
- return
- ..()
- if(reagents.total_volume)
- if(M.reagents) reagents.trans_to_mob(M, 50, CHEM_BLOOD) //used to be 150
- return
+ reagents.add_reagent("chloralhydrate", 22) //Used to be 100 sleep toxin//30 Chloral seems to be fatal, reducing it to 22./N
/*
* Parapens
*/
- /obj/item/weapon/pen/paralysis
- flags = OPENCONTAINER
- slot_flags = SLOT_BELT
+ /obj/item/weapon/pen/reagent/paralysis
origin_tech = "materials=2;syndicate=5"
-
-/obj/item/weapon/pen/paralysis/attack(mob/living/M as mob, mob/user as mob)
-
- if(!(istype(M,/mob)))
- return
-
+/obj/item/weapon/pen/reagent/paralysis/New()
..()
-
-
- if(M.can_inject(user,1))
- if(reagents.total_volume)
- if(M.reagents) reagents.trans_to_mob(M, 50, CHEM_BLOOD)
- return
-
-
-/obj/item/weapon/pen/paralysis/New()
- var/datum/reagents/R = new/datum/reagents(50)
- reagents = R
- R.my_atom = src
- R.add_reagent("zombiepowder", 10)
- R.add_reagent("cryptobiolin", 15)
- ..()
- return
+ reagents.add_reagent("zombiepowder", 10)
+ reagents.add_reagent("cryptobiolin", 15)
/*
* Chameleon pen
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index c5153510d7..26b61f0cf7 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -19,17 +19,19 @@
reagents.add_reagent("tricordrazine", 30)
return
-/obj/item/weapon/reagent_containers/hypospray/attack(mob/M as mob, mob/user as mob)
+/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M as mob, mob/user as mob)
if(!reagents.total_volume)
user << "[src] is empty."
return
if (!istype(M))
return
+ if(!M.can_inject(user, 1))
+ return
+
user << "You inject [M] with [src]."
M << "You feel a tiny prick!"
if(M.reagents)
-
var/contained = reagentlist()
M.attack_log += text("\[[time_stamp()]\] Has been injected with [name] by [user.name] ([user.ckey]). Reagents: [contained]")
user.attack_log += text("\[[time_stamp()]\] Used the [name] to inject [M.name] ([M.key]). Reagents: [contained]")
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index c7f869802b..6f306bf1e9 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -219,10 +219,6 @@
proc/syringestab(mob/living/carbon/target as mob, mob/living/carbon/user as mob)
- user.attack_log += "\[[time_stamp()]\] Attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
- target.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
- msg_admin_attack("[user.name] ([user.ckey]) attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)")
-
if(istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
@@ -244,6 +240,11 @@
O.show_message(text("\red [user] tries to stab [target] in \the [hit_area] with [src.name], but the attack is deflected by armor!"), 1)
user.remove_from_mob(src)
qdel(src)
+
+ user.attack_log += "\[[time_stamp()]\] Attacked [target.name] ([target.ckey]) with \the [src] (INTENT: HARM)."
+ target.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: HARM)."
+ msg_admin_attack("[key_name_admin(user)] attacked [key_name_admin(target)] with [src.name] (INTENT: HARM) (JMP)")
+
return
user.visible_message("[user] stabs [target] in \the [hit_area] with [src.name]!")
@@ -255,7 +256,15 @@
user.visible_message("[user] stabs [target] with [src.name]!")
target.take_organ_damage(3)// 7 is the same as crowbar punch
+
+
var/syringestab_amount_transferred = rand(0, (reagents.total_volume - 5)) //nerfed by popular demand
+ var/list/contained_reagents = list()
+ for(var/datum/reagent/R in reagents.reagent_list)
+ contained_reagents += R.name
+ user.attack_log += "\[[time_stamp()]\] Stabbed [target.name] ([target.ckey]) with \the [src] (INTENT: HARM). Reagents: [english_list(contained_reagents)] ([syringestab_amount_transferred]u total)"
+ target.attack_log += "\[[time_stamp()]\] Stabbed by [user.name] ([user.ckey]) with \the [src] (INTENT: HARM). Reagents: [english_list(contained_reagents)] ([syringestab_amount_transferred]u total)"
+ msg_admin_attack("[key_name_admin(user)] stabbed [key_name_admin(target)] with \the [src] (INTENT: HARM). Reagents: [english_list(contained_reagents)] ([syringestab_amount_transferred]u total)")
reagents.trans_to_mob(target, syringestab_amount_transferred, CHEM_BLOOD)
break_syringe(target, user)
diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm
index e4520e1378..84799cc552 100644
--- a/code/modules/research/xenoarchaeology/finds/finds.dm
+++ b/code/modules/research/xenoarchaeology/finds/finds.dm
@@ -254,7 +254,7 @@
if(prob(75))
new_item = new /obj/item/weapon/pen(src.loc)
else
- new_item = new /obj/item/weapon/pen/sleepypen(src.loc)
+ new_item = new /obj/item/weapon/pen/reagent/sleepy(src.loc)
if(prob(30))
apply_image_decorations = 1
if(16)