From 03ff489f7ad3e1e7a44b10f1cd6a75dba9af0b67 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Sun, 30 Apr 2017 17:13:00 +0100 Subject: [PATCH] Kinda reworks Hyposprays/Autoinjectors --- code/datums/uplink/medical.dm | 4 +- .../gamemodes/technomancer/devices/hypos.dm | 104 ++---------------- .../objects/items/weapons/storage/firstaid.dm | 4 +- .../reagents/reagent_containers/hypospray.dm | 78 ++++++------- icons/obj/syringe.dmi | Bin 3325 -> 3367 bytes 5 files changed, 53 insertions(+), 137 deletions(-) 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 a9a46f6046d6b471476a2bdd78e9fcd50c0beb12..e604b23f3fafbd8f882c9e86ec57a12e803aba92 100644 GIT binary patch literal 3367 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 L14N~!UD&?>SutFH literal 3325 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 F_y_f#Dp&vj