diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index 7f3867ce676..d3308a8a78f 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -20,7 +20,7 @@ /************************Hivelord core*******************/ /obj/item/organ/regenerative_core name = "regenerative core" - desc = "All that remains of a hivelord. It can be used to heal completely, but it will rapidly decay into uselessness." + desc = "All that remains of a hivelord. It can be used to help keep your body going, but it will rapidly decay into uselessness." icon_state = "roro core 2" item_flags = NOBLUDGEON slot = "hivecore" @@ -66,16 +66,16 @@ if(owner.health <= owner.crit_threshold) ui_action_click() -/obj/item/organ/regenerative_core/afterattack(atom/target, mob/user, proximity_flag) - . = ..() - if(proximity_flag && ishuman(target)) +///Handles applying the core, logging and status/mood events. +/obj/item/organ/regenerative_core/proc/applyto(atom/target, mob/user) + if(ishuman(target)) var/mob/living/carbon/human/H = target if(inert) to_chat(user, "[src] has decayed and can no longer be used to heal.") return else if(H.stat == DEAD) - to_chat(user, "[src] are useless on the dead.") + to_chat(user, "[src] is useless on the dead.") return if(H != user) H.visible_message("[user] forces [H] to apply [src]... Black tendrils entangle and reinforce [H.p_them()]!") @@ -87,6 +87,15 @@ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "core", /datum/mood_event/healsbadman) //Now THIS is a miner buff (fixed - nerf) qdel(src) +/obj/item/organ/regenerative_core/afterattack(atom/target, mob/user, proximity_flag) + . = ..() + if(proximity_flag) + applyto(target, user) + +/obj/item/organ/regenerative_core/attack_self(mob/user) + if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + applyto(user, user) + /obj/item/organ/regenerative_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) . = ..() if(!preserved && !inert) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 861bee656ed..56dba521ebb 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -19,11 +19,15 @@ return attack_hand(user) /obj/item/reagent_containers/hypospray/attack(mob/living/M, mob/user) + inject(M, user) + +///Handles all injection checks, injection and logging. +/obj/item/reagent_containers/hypospray/proc/inject(mob/living/M, mob/user) if(!reagents.total_volume) to_chat(user, "[src] is empty!") - return + return FALSE if(!iscarbon(M)) - return + return FALSE //Always log attemped injects for admins var/list/injected = list() @@ -35,20 +39,20 @@ 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, transfered_by = user) 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].") - - log_combat(user, M, "injected", src, "([contained])") + return TRUE + return FALSE + /obj/item/reagent_containers/hypospray/CMO list_reagents = list(/datum/reagent/medicine/omnizine = 30) @@ -97,23 +101,16 @@ user.visible_message("[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") return OXYLOSS//ironic. he could save others from oxyloss, but not himself. -/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)) +/obj/item/reagent_containers/hypospray/inject(mob/living/M, mob/user) + . = ..() + if(.) reagents.maximum_volume = 0 //Makes them useless afterwards reagents.flags = NONE - update_icon() - addtimer(CALLBACK(src, .proc/cyborg_recharge, user), 80) + update_icon() -/obj/item/reagent_containers/hypospray/medipen/proc/cyborg_recharge(mob/living/silicon/robot/user) - if(!reagents.total_volume && iscyborg(user)) - var/mob/living/silicon/robot/R = user - if(R.cell.use(100)) - reagents.add_reagent_list(list_reagents) - update_icon() +/obj/item/reagent_containers/hypospray/medipen/attack_self(mob/user) + if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + inject(user, user) /obj/item/reagent_containers/hypospray/medipen/update_icon() if(reagents.total_volume > 0) @@ -161,14 +158,6 @@ amount_per_transfer_from_this = 57 list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/tricordrazine = 15, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/lavaland_extract = 2, /datum/reagent/medicine/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/combat/heresypurge name = "holy water autoinjector" desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with 5 doses of a holy water mixture."