diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index ec34bf833f..f236b83fa3 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -1,161 +1,164 @@
-/obj/item/reagent_containers/hypospray
- name = "hypospray"
- desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
- icon = 'icons/obj/syringe.dmi'
- item_state = "hypo"
- lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
- icon_state = "hypo"
- amount_per_transfer_from_this = 5
- volume = 30
- possible_transfer_amounts = list()
- resistance_flags = ACID_PROOF
- container_type = OPENCONTAINER_1
- slot_flags = SLOT_BELT
- var/ignore_flags = 0
- var/infinite = FALSE
-
-/obj/item/reagent_containers/hypospray/attack_paw(mob/user)
- return attack_hand(user)
-
-/obj/item/reagent_containers/hypospray/attack(mob/living/M, mob/user)
- if(!reagents.total_volume)
- to_chat(user, "[src] is empty!")
- return
- if(!iscarbon(M))
- return
-
- if(reagents.total_volume && (ignore_flags || M.can_inject(user, 1))) // Ignore flag should be checked first or there will be an error message.
- to_chat(M, "You feel a tiny prick!")
- to_chat(user, "You inject [M] with [src].")
-
- var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
- reagents.reaction(M, INJECT, fraction)
- if(M.reagents)
- var/list/injected = list()
- for(var/datum/reagent/R in reagents.reagent_list)
- injected += R.name
- var/trans = 0
- if(!infinite)
- trans = reagents.trans_to(M, amount_per_transfer_from_this)
- else
- trans = reagents.copy_to(M, amount_per_transfer_from_this)
-
- to_chat(user, "[trans] unit\s injected. [reagents.total_volume] unit\s remaining in [src].")
-
- var/contained = english_list(injected)
-
- add_logs(user, M, "injected", src, "([contained])")
-
-/obj/item/reagent_containers/hypospray/CMO
- list_reagents = list("omnizine" = 30)
- resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
-
-/obj/item/reagent_containers/hypospray/combat
- name = "combat stimulant injector"
- desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat."
- amount_per_transfer_from_this = 10
- icon_state = "combat_hypo"
- volume = 90
- ignore_flags = 1 // So they can heal their comrades.
- list_reagents = list("epinephrine" = 30, "omnizine" = 30, "leporazine" = 15, "atropine" = 15)
-
-/obj/item/reagent_containers/hypospray/combat/nanites
- desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with expensive medical nanites for rapid healing."
- volume = 100
- list_reagents = list("nanites" = 80, "synaptizine" = 20)
-
-/obj/item/reagent_containers/hypospray/magillitis
- name = "experimental autoinjector"
- desc = "A modified air-needle autoinjector with a small single-use reservoir. It contains an experimental serum."
- icon_state = "combat_hypo"
- volume = 5
- container_type = NONE
- list_reagents = list("magillitis" = 5)
-
-//MediPens
-
-/obj/item/reagent_containers/hypospray/medipen
- name = "epinephrine medipen"
- desc = "A rapid and safe way to stabilize patients in critical condition for personnel without advanced medical knowledge."
- icon_state = "medipen"
- item_state = "medipen"
- lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
- amount_per_transfer_from_this = 10
- volume = 10
- ignore_flags = 1 //so you can medipen through hardsuits
- container_type = DRAWABLE_1
- flags_1 = null
- list_reagents = list("epinephrine" = 10)
-
-/obj/item/reagent_containers/hypospray/medipen/attack(mob/M, mob/user)
- if(!reagents.total_volume)
- to_chat(user, "[src] is empty!")
- return
- ..()
- if(!iscyborg(user))
- reagents.maximum_volume = 0 //Makes them useless afterwards
- container_type = NONE
- update_icon()
- spawn(80)
- if(iscyborg(user) && !reagents.total_volume)
- var/mob/living/silicon/robot/R = user
- if(R.cell.use(100))
- reagents.add_reagent_list(list_reagents)
- update_icon()
- return
-
-/obj/item/reagent_containers/hypospray/medipen/update_icon()
- if(reagents.total_volume > 0)
- icon_state = initial(icon_state)
- else
- icon_state = "[initial(icon_state)]0"
-
-/obj/item/reagent_containers/hypospray/medipen/examine()
- ..()
- if(reagents && reagents.reagent_list.len)
- to_chat(usr, "It is currently loaded.")
- else
- to_chat(usr, "It is spent.")
-
-/obj/item/reagent_containers/hypospray/medipen/stimpack //goliath kiting
- name = "stimpack medipen"
- desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor."
- icon_state = "stimpen"
- volume = 20
- amount_per_transfer_from_this = 20
- list_reagents = list("ephedrine" = 10, "coffee" = 10)
-
-/obj/item/reagent_containers/hypospray/medipen/stimpack/traitor
- desc = "A modified stimulants autoinjector for use in combat situations. Has a mild healing effect."
- list_reagents = list("stimulants" = 10, "omnizine" = 10)
-
-/obj/item/reagent_containers/hypospray/medipen/morphine
- name = "morphine medipen"
- desc = "A rapid way to get you out of a tight situation and fast! You'll feel rather drowsy, though."
- list_reagents = list("morphine" = 10)
-
-/obj/item/reagent_containers/hypospray/medipen/tuberculosiscure
- name = "BVAK autoinjector"
- desc = "Bio Virus Antidote Kit autoinjector. Has a two use system for yourself, and someone else. Inject when infected."
- icon_state = "stimpen"
- volume = 60
- amount_per_transfer_from_this = 30
- list_reagents = list("atropine" = 10, "epinephrine" = 10, "salbutamol" = 20, "spaceacillin" = 20)
-
-/obj/item/reagent_containers/hypospray/medipen/survival
- name = "survival medipen"
- desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. WARNING: Do not inject more than one pen in quick succession."
- icon_state = "stimpen"
- volume = 57
- amount_per_transfer_from_this = 57
- list_reagents = list("salbutamol" = 10, "leporazine" = 15, "tricordrazine" = 15, "epinephrine" = 10, "miningnanites" = 2, "omnizine" = 5)
-
-/obj/item/reagent_containers/hypospray/medipen/species_mutator
- name = "species mutator medipen"
- desc = "Embark on a whirlwind tour of racial insensitivity by \
- literally appropriating other races."
- volume = 1
- amount_per_transfer_from_this = 1
- list_reagents = list("unstablemutationtoxin" = 1)
+/obj/item/reagent_containers/hypospray
+ name = "hypospray"
+ desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
+ icon = 'icons/obj/syringe.dmi'
+ item_state = "hypo"
+ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
+ icon_state = "hypo"
+ amount_per_transfer_from_this = 5
+ volume = 30
+ possible_transfer_amounts = list()
+ resistance_flags = ACID_PROOF
+ container_type = OPENCONTAINER_1
+ slot_flags = SLOT_BELT
+ var/ignore_flags = 0
+ var/infinite = FALSE
+
+/obj/item/reagent_containers/hypospray/attack_paw(mob/user)
+ return attack_hand(user)
+
+/obj/item/reagent_containers/hypospray/attack(mob/living/M, mob/user)
+ if(!reagents.total_volume)
+ to_chat(user, "[src] is empty!")
+ return
+ if(!iscarbon(M))
+ return
+
+ //Always log attemped injects for admins
+ var/list/injected = list()
+ for(var/datum/reagent/R in reagents.reagent_list)
+ injected += R.name
+ var/contained = english_list(injected)
+ add_logs(user, M, "attempted to inject", src, "([contained])")
+
+ if(reagents.total_volume && (ignore_flags || M.can_inject(user, 1))) // Ignore flag should be checked first or there will be an error message.
+ to_chat(M, "You feel a tiny prick!")
+ to_chat(user, "You inject [M] with [src].")
+
+ var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
+ reagents.reaction(M, INJECT, fraction)
+ if(M.reagents)
+ var/trans = 0
+ if(!infinite)
+ trans = reagents.trans_to(M, amount_per_transfer_from_this)
+ else
+ trans = reagents.copy_to(M, amount_per_transfer_from_this)
+
+ to_chat(user, "[trans] unit\s injected. [reagents.total_volume] unit\s remaining in [src].")
+
+
+ add_logs(user, M, "injected", src, "([contained])")
+
+/obj/item/reagent_containers/hypospray/CMO
+ list_reagents = list("omnizine" = 30)
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+
+/obj/item/reagent_containers/hypospray/combat
+ name = "combat stimulant injector"
+ desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat."
+ amount_per_transfer_from_this = 10
+ icon_state = "combat_hypo"
+ volume = 90
+ ignore_flags = 1 // So they can heal their comrades.
+ list_reagents = list("epinephrine" = 30, "omnizine" = 30, "leporazine" = 15, "atropine" = 15)
+
+/obj/item/reagent_containers/hypospray/combat/nanites
+ desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with expensive medical nanites for rapid healing."
+ volume = 100
+ list_reagents = list("nanites" = 80, "synaptizine" = 20)
+
+/obj/item/reagent_containers/hypospray/magillitis
+ name = "experimental autoinjector"
+ desc = "A modified air-needle autoinjector with a small single-use reservoir. It contains an experimental serum."
+ icon_state = "combat_hypo"
+ volume = 5
+ container_type = NONE
+ list_reagents = list("magillitis" = 5)
+
+//MediPens
+
+/obj/item/reagent_containers/hypospray/medipen
+ name = "epinephrine medipen"
+ desc = "A rapid and safe way to stabilize patients in critical condition for personnel without advanced medical knowledge."
+ icon_state = "medipen"
+ item_state = "medipen"
+ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
+ amount_per_transfer_from_this = 10
+ volume = 10
+ ignore_flags = 1 //so you can medipen through hardsuits
+ container_type = DRAWABLE_1
+ flags_1 = null
+ list_reagents = list("epinephrine" = 10)
+
+/obj/item/reagent_containers/hypospray/medipen/attack(mob/M, mob/user)
+ if(!reagents.total_volume)
+ to_chat(user, "[src] is empty!")
+ return
+ ..()
+ if(!iscyborg(user))
+ reagents.maximum_volume = 0 //Makes them useless afterwards
+ container_type = NONE
+ update_icon()
+ spawn(80)
+ if(iscyborg(user) && !reagents.total_volume)
+ var/mob/living/silicon/robot/R = user
+ if(R.cell.use(100))
+ reagents.add_reagent_list(list_reagents)
+ update_icon()
+ return
+
+/obj/item/reagent_containers/hypospray/medipen/update_icon()
+ if(reagents.total_volume > 0)
+ icon_state = initial(icon_state)
+ else
+ icon_state = "[initial(icon_state)]0"
+
+/obj/item/reagent_containers/hypospray/medipen/examine()
+ ..()
+ if(reagents && reagents.reagent_list.len)
+ to_chat(usr, "It is currently loaded.")
+ else
+ to_chat(usr, "It is spent.")
+
+/obj/item/reagent_containers/hypospray/medipen/stimpack //goliath kiting
+ name = "stimpack medipen"
+ desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor."
+ icon_state = "stimpen"
+ volume = 20
+ amount_per_transfer_from_this = 20
+ list_reagents = list("ephedrine" = 10, "coffee" = 10)
+
+/obj/item/reagent_containers/hypospray/medipen/stimpack/traitor
+ desc = "A modified stimulants autoinjector for use in combat situations. Has a mild healing effect."
+ list_reagents = list("stimulants" = 10, "omnizine" = 10)
+
+/obj/item/reagent_containers/hypospray/medipen/morphine
+ name = "morphine medipen"
+ desc = "A rapid way to get you out of a tight situation and fast! You'll feel rather drowsy, though."
+ list_reagents = list("morphine" = 10)
+
+/obj/item/reagent_containers/hypospray/medipen/tuberculosiscure
+ name = "BVAK autoinjector"
+ desc = "Bio Virus Antidote Kit autoinjector. Has a two use system for yourself, and someone else. Inject when infected."
+ icon_state = "stimpen"
+ volume = 60
+ amount_per_transfer_from_this = 30
+ list_reagents = list("atropine" = 10, "epinephrine" = 10, "salbutamol" = 20, "spaceacillin" = 20)
+
+/obj/item/reagent_containers/hypospray/medipen/survival
+ name = "survival medipen"
+ desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. WARNING: Do not inject more than one pen in quick succession."
+ icon_state = "stimpen"
+ volume = 57
+ amount_per_transfer_from_this = 57
+ list_reagents = list("salbutamol" = 10, "leporazine" = 15, "tricordrazine" = 15, "epinephrine" = 10, "miningnanites" = 2, "omnizine" = 5)
+
+/obj/item/reagent_containers/hypospray/medipen/species_mutator
+ name = "species mutator medipen"
+ desc = "Embark on a whirlwind tour of racial insensitivity by \
+ literally appropriating other races."
+ volume = 1
+ amount_per_transfer_from_this = 1
+ list_reagents = list("unstablemutationtoxin" = 1)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 324a7d7066..daf955d0ef 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -110,6 +110,13 @@
update_icon()
if(SYRINGE_INJECT)
+ //Always log attemped injections for admins
+ var/list/rinject = list()
+ for(var/datum/reagent/R in reagents.reagent_list)
+ rinject += R.name
+ var/contained = english_list(rinject)
+ add_logs(user, L, "attemped to inject", src, addition="which had [contained]")
+
if(!reagents.total_volume)
to_chat(user, "[src] is empty.")
return
@@ -137,11 +144,6 @@
L.visible_message("[user] injects [L] with the syringe!", \
"[user] injects [L] with the syringe!")
- var/list/rinject = list()
- for(var/datum/reagent/R in reagents.reagent_list)
- rinject += R.name
- var/contained = english_list(rinject)
-
if(L != user)
add_logs(user, L, "injected", src, addition="which had [contained]")
else