From 42c762ccd22db63550390d9e5f854656dea0450d Mon Sep 17 00:00:00 2001 From: HMBGERDO <61080616+HMBGERDO@users.noreply.github.com> Date: Sat, 2 Sep 2023 00:02:34 +0200 Subject: [PATCH] Using medicine on yourself on activate (#21955) * now you can use patches, pills, injectors * more supported meds * apply proc --- code/game/objects/items/stacks/medical_packs.dm | 8 +++++++- .../reagents/reagent_containers/applicator.dm | 7 ++++++- .../reagents/reagent_containers/hypospray.dm | 13 ++++++++++++- code/modules/reagents/reagent_containers/pill.dm | 8 +++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/stacks/medical_packs.dm b/code/game/objects/items/stacks/medical_packs.dm index b97266aabd7..619d33831a7 100644 --- a/code/game/objects/items/stacks/medical_packs.dm +++ b/code/game/objects/items/stacks/medical_packs.dm @@ -17,7 +17,7 @@ var/stop_bleeding = 0 var/healverb = "bandage" -/obj/item/stack/medical/attack(mob/living/M, mob/user) +/obj/item/stack/medical/proc/apply(mob/living/M, mob/user) if(get_amount() <= 0) if(is_cyborg) to_chat(user, "You don't have enough energy to dispense more [singular_name]\s!") @@ -77,6 +77,12 @@ "You apply [src] on [M].") use(1) +/obj/item/stack/medical/attack(mob/living/M, mob/user) + return apply(M, user) + +/obj/item/stack/medical/attack_self(mob/user) + return apply(user, user) + /obj/item/stack/medical/proc/heal(mob/living/M, mob/user) var/mob/living/carbon/human/H = M var/obj/item/organ/external/affecting = H.get_organ(user.zone_selected) diff --git a/code/modules/reagents/reagent_containers/applicator.dm b/code/modules/reagents/reagent_containers/applicator.dm index d17b4fea4b8..83ecbc4a76e 100644 --- a/code/modules/reagents/reagent_containers/applicator.dm +++ b/code/modules/reagents/reagent_containers/applicator.dm @@ -62,7 +62,7 @@ applicator_bar.icon_state = "app_e" . += applicator_bar -/obj/item/reagent_containers/applicator/attack(mob/living/M, mob/user) +/obj/item/reagent_containers/applicator/proc/apply(mob/living/M, mob/user) if(!reagents.total_volume) to_chat(user, "[src] is empty!") return @@ -93,6 +93,11 @@ update_icon() user.changeNext_move(CLICK_CD_MELEE) +/obj/item/reagent_containers/applicator/attack(mob/living/M, mob/user) + return apply(M, user) + +/obj/item/reagent_containers/applicator/attack_self(mob/user) + return apply(user, user) /obj/item/reagent_containers/applicator/proc/apply_to(mob/living/carbon/M, mob/user, multiplier = 1, show_message = TRUE) var/total_applied_amount = applied_amount * multiplier diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 0ecd916900e..17b119a69d3 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -18,7 +18,7 @@ var/ignore_flags = FALSE var/safety_hypo = FALSE -/obj/item/reagent_containers/hypospray/attack(mob/living/M, mob/user) +/obj/item/reagent_containers/hypospray/proc/apply(mob/living/M, mob/user) if(!reagents.total_volume) to_chat(user, "[src] is empty!") return @@ -52,6 +52,12 @@ reagents.reaction(M, REAGENT_INGEST, 0.1) return TRUE +/obj/item/reagent_containers/hypospray/attack(mob/living/M, mob/user) + return apply(M, user) + +/obj/item/reagent_containers/hypospray/attack_self(mob/user) + return apply(user, user) + /obj/item/reagent_containers/hypospray/on_reagent_change() if(safety_hypo && !emagged) var/found_forbidden_reagent = FALSE @@ -129,6 +135,11 @@ update_icon(UPDATE_ICON_STATE) return TRUE +/obj/item/reagent_containers/hypospray/autoinjector/attack_self(mob/user) + ..() + update_icon(UPDATE_ICON_STATE) + return TRUE + /obj/item/reagent_containers/hypospray/autoinjector/update_icon_state() if(reagents.total_volume > 0) icon_state = initial(icon_state) diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 2130bad9328..0bbe6956b92 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -22,7 +22,7 @@ if(!icon_state) icon_state = "pill[rand(1, 20)]" -/obj/item/reagent_containers/food/pill/attack(mob/living/carbon/M, mob/user, def_zone) +/obj/item/reagent_containers/food/pill/proc/apply(mob/living/carbon/M, mob/user, def_zone) if(!istype(M)) return FALSE bitesize = reagents.total_volume @@ -31,6 +31,12 @@ return TRUE return FALSE +/obj/item/reagent_containers/food/pill/attack(mob/living/carbon/M, mob/user, def_zone) + return apply(M, user) + +/obj/item/reagent_containers/food/pill/attack_self(mob/user) + return apply(user, user) + /obj/item/reagent_containers/food/pill/afterattack(obj/target, mob/user, proximity) if(!proximity || !target.is_refillable()) return