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