diff --git a/code/datums/uplink/medical.dm b/code/datums/uplink/medical.dm
index eab9d9cd02..0c616793ca 100644
--- a/code/datums/uplink/medical.dm
+++ b/code/datums/uplink/medical.dm
@@ -22,12 +22,12 @@
/datum/uplink_item/item/medical/clotting
name = "Clotting Medicine injector"
item_cost = 10
- path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/clotting
+ path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting
/datum/uplink_item/item/medical/bonemeds
name = "Bone Repair injector"
item_cost = 10
- path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/bonemed
+ path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bonemed
/datum/uplink_item/item/medical/ambrosiadeusseeds
name = "Box of 7x ambrosia deus seed packets"
diff --git a/code/game/gamemodes/technomancer/devices/hypos.dm b/code/game/gamemodes/technomancer/devices/hypos.dm
index b54ce5e35c..dd0fa4436a 100644
--- a/code/game/gamemodes/technomancer/devices/hypos.dm
+++ b/code/game/gamemodes/technomancer/devices/hypos.dm
@@ -5,12 +5,11 @@
amount_per_transfer_from_this = 15
volume = 15
origin_tech = list(TECH_BIO = 4)
+ filled_reagents = list("inaprovaline" = 15)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/New()
..()
- reagents.remove_reagent("inaprovaline", 5)
- update_icon()
- return
+
/datum/technomancer/consumable/hypo_brute
name = "Trauma Hypo"
@@ -66,127 +65,44 @@
name = "trauma hypo"
desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to be used on victims of \
moderate blunt trauma."
- icon_state = "autoinjector"
- amount_per_transfer_from_this = 15
- volume = 15
- origin_tech = list(TECH_BIO = 4)
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute/New()
- ..()
- reagents.add_reagent("bicaridine", 15)
- update_icon()
- return
+ filled_reagents = list("bicaridine" = 15)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn
name = "burn hypo"
desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to be used on burn victims, \
featuring an optimized chemical mixture to allow for rapid healing."
- icon_state = "autoinjector"
- amount_per_transfer_from_this = 15
- volume = 15
- origin_tech = list(TECH_BIO = 4)
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn/New()
- ..()
- reagents.add_reagent("kelotane", 7.5)
- reagents.add_reagent("dermaline", 7.5)
- update_icon()
- return
+ filled_reagents = list("kelotane" = 7.5, "dermaline" = 7.5)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin
name = "toxin hypo"
desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to counteract toxins."
- icon_state = "autoinjector"
- amount_per_transfer_from_this = 15
- volume = 15
- origin_tech = list(TECH_BIO = 4)
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin/New()
- ..()
- reagents.add_reagent("anti_toxin", 15)
- update_icon()
- return
+ filled_reagents = list("anti_toxin" = 15)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy
name = "oxy hypo"
desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to counteract oxygen \
deprivation."
- icon_state = "autoinjector"
- amount_per_transfer_from_this = 15
- volume = 15
- origin_tech = list(TECH_BIO = 4)
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy/New()
- ..()
- reagents.add_reagent("dexalinp", 10)
- reagents.add_reagent("tricordrazine", 5) //Dex+ ODs above 10, so we add tricord to pad it out somewhat.
- update_icon()
- return
+ filled_reagents = list("dexalinp" = 10, "tricordrazine" = 5)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity
name = "purity hypo"
desc = "A refined version of the standard autoinjector, allowing greater capacity. This varient excels at \
resolving viruses, infections, radiation, and genetic maladies."
- icon_state = "autoinjector"
- amount_per_transfer_from_this = 15
- volume = 15
- origin_tech = list(TECH_BIO = 4)
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity/New()
- ..()
- reagents.add_reagent("spaceacillin", 9)
- reagents.add_reagent("arithrazine", 5)
- reagents.add_reagent("ryetalyn", 1)
- update_icon()
- return
+ filled_reagents = list("spaceacillin" = 9, "arithrazine" = 5, "ryetalyn" = 1)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain
name = "pain hypo"
desc = "A refined version of the standard autoinjector, allowing greater capacity. This one contains potent painkillers."
- icon_state = "autoinjector"
- amount_per_transfer_from_this = 15
- volume = 15
- origin_tech = list(TECH_BIO = 4)
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain/New()
- ..()
- reagents.add_reagent("tramadol", 15)
- update_icon()
- return
+ filled_reagents = list("tramadol" = 15)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ
name = "organ hypo"
desc = "A refined version of the standard autoinjector, allowing greater capacity. Organ damage is resolved by this varient."
- icon_state = "autoinjector"
- amount_per_transfer_from_this = 15
- volume = 15
- origin_tech = list(TECH_BIO = 4)
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ/New()
- ..()
- reagents.add_reagent("alkysine", 1)
- reagents.add_reagent("imidazoline", 1)
- reagents.add_reagent("peridaxon", 13)
- update_icon()
- return
+ filled_reagents = list("alkysine" = 1, "imidazoline" = 1, "peridaxon" = 13)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat
name = "combat hypo"
desc = "A refined version of the standard autoinjector, allowing greater capacity. This is a more dangerous and potentially \
addictive hypo compared to others, as it contains a potent cocktail of various chemicals to optimize the recipient's combat \
ability."
- icon_state = "autoinjector"
- amount_per_transfer_from_this = 15
- volume = 15
- origin_tech = list(TECH_BIO = 4)
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat/New()
- ..()
- reagents.add_reagent("bicaridine", 3)
- reagents.add_reagent("kelotane", 1.5)
- reagents.add_reagent("dermaline", 1.5)
- reagents.add_reagent("oxycodone", 3)
- reagents.add_reagent("hyperzine", 3)
- reagents.add_reagent("tricordrazine", 3)
- update_icon()
- return
+ filled_reagents = list("bicaridine" = 3, "kelotane" = 1.5, "dermaline" = 1.5, "oxycodone" = 3, "hyperzine" = 3, "tricordrazine" = 3)
diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm
index 61a9a99f96..3ceb940bbb 100644
--- a/code/game/objects/items/weapons/storage/firstaid.dm
+++ b/code/game/objects/items/weapons/storage/firstaid.dm
@@ -126,7 +126,7 @@
new /obj/item/weapon/storage/pill_bottle/dylovene(src)
new /obj/item/weapon/storage/pill_bottle/tramadol(src)
new /obj/item/weapon/storage/pill_bottle/spaceacillin(src)
- new /obj/item/weapon/reagent_containers/hypospray/autoinjector/clotting(src)
+ new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting(src)
new /obj/item/stack/medical/splint(src)
return
@@ -161,7 +161,7 @@
if (empty)
return
for(var/i = 1 to 8)
- new /obj/item/weapon/reagent_containers/hypospray/autoinjector/clotting(src)
+ new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting(src)
return
/*
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index e9e3c62dad..d4ef757a3c 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -14,11 +14,19 @@
possible_transfer_amounts = null
flags = OPENCONTAINER
slot_flags = SLOT_BELT
+ var/reusable = 1
+ var/used = 0
+ var/filled = 0
+ var/list/filled_reagents = list()
-///obj/item/weapon/reagent_containers/hypospray/New() //comment this to make hypos start off empty
-// ..()
-// reagents.add_reagent("tricordrazine", 30)
-// return
+/obj/item/weapon/reagent_containers/hypospray/New()
+ ..()
+ if(filled)
+ if(filled_reagents)
+ for(var/r in filled_reagents)
+ reagents.add_reagent(r, filled_reagents[r])
+ update_icon()
+ return
/obj/item/weapon/reagent_containers/hypospray/do_surgery(mob/living/carbon/M, mob/living/user)
if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
@@ -53,6 +61,9 @@
admin_inject_log(user, M, src, contained, trans)
user << "[trans] units injected. [reagents.total_volume] units remaining in \the [src]."
+ if(!reusable && !used)
+ used = !used
+
return
/obj/item/weapon/reagent_containers/hypospray/autoinjector
@@ -62,59 +73,48 @@
item_state = "autoinjector"
amount_per_transfer_from_this = 5
volume = 5
+ reusable = 0
+ filled = 1
+ filled_reagents = list("inaprovaline" = 5)
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/New()
- ..()
- reagents.add_reagent("inaprovaline", 5)
- update_icon()
- return
+/obj/item/weapon/reagent_containers/hypospray/autoinjector/empty
+ filled = 0
+ filled_reagents = list()
+
+/obj/item/weapon/reagent_containers/hypospray/autoinjector/used
+ used = 1
+ filled_reagents = list()
/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M as mob, mob/user as mob)
..()
- if(reagents.total_volume <= 0) //Prevents autoinjectors to be refilled.
+ if(used) //Prevents autoinjectors to be refilled.
flags &= ~OPENCONTAINER
update_icon()
return
/obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon()
- if(reagents.total_volume > 0)
+ if(!used && reagents.reagent_list.len)
icon_state = "[initial(icon_state)]1"
- else
+ else if(used)
icon_state = "[initial(icon_state)]0"
+ else
+ icon_state = "[initial(icon_state)]2"
/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine(mob/user)
..(user)
if(reagents && reagents.reagent_list.len)
user << "It is currently loaded."
- else
+ else if(used)
user << "It is spent."
+ else
+ user << "It is currently unloaded."
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/clotting
+/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting
name = "clotting agent"
- desc = "A rapid and safe way to administer clotting drugs by untrained or trained personnel."
- icon_state = "autoinjector"
- item_state = "autoinjector"
- amount_per_transfer_from_this = 10
- volume = 10
+ desc = "A refined version of the standard autoinjector, allowing greater capacity. This variant excels at treating bleeding wounds and internal bleeding."
+ filled_reagents = list("inaprovaline" = 5, "myelamine" = 10)
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/clotting/New()
- ..()
- reagents.remove_reagent("inaprovaline", 5)
- reagents.add_reagent("myelamine", 10)
- update_icon()
- return
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/bonemed
+/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bonemed
name = "bone repair injector"
- desc = "A rapid and safe way to administer advanced drugs by untrained or trained personnel."
- icon_state = "autoinjector"
- item_state = "autoinjector"
- amount_per_transfer_from_this = 10
- volume = 10
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/bonemed/New()
- ..()
- reagents.remove_reagent("inaprovaline", 5)
- reagents.add_reagent("osteodaxon", 10)
- update_icon()
- return
\ No newline at end of file
+ desc = "A refined version of the standard autoinjector, allowing greater capacity. This one excels at treating damage to bones."
+ filled_reagents = list("inaprovaline" = 5, "osteodaxon" = 10)
diff --git a/icons/obj/syringe.dmi b/icons/obj/syringe.dmi
index a9a46f6046..e604b23f3f 100644
Binary files a/icons/obj/syringe.dmi and b/icons/obj/syringe.dmi differ