diff --git a/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 3fd7db3427..c18a619868 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -903,3 +903,43 @@ icon = 'icons/obj/slimeborg/slimecore.dmi' icon_state = "core" to_call = /mob/living/carbon/human/proc/transparency_toggle + +/obj/effect/protean_ability/absorb_implant + ability_name = "Absorb Implant" + desc = "Absorb an implant into your system." + icon = 'icons/obj/surgery.dmi' + icon_state = "heart-on" + to_call = /mob/living/carbon/human/proc/absorb_implant + +/mob/living/carbon/human/proc/absorb_implant() + set name = "Absorb Implant" + set category = "Abilities.Protean" + if(stat || world.time < last_special) + return + last_special = world.time + 50 + + var/obj/item/organ/internal/augment/A = get_active_hand() + if(!istype(A)) + to_chat(src, span_danger("You cannot integrate this into your body.")) + return + + if(!(ORGAN_NANOFORM in A.target_parent_classes)) + to_chat(src, span_danger("This implant is incompatible with our nanoform.")) + return + + var/obj/item/organ/external/target_organ = get_organ(zone_sel.selecting) + if(!istype(target_organ) || target_organ.is_stump()) + to_chat(src, span_danger("Your [target_organ] is currently unsuitable for implants.")) + return + + if(target_organ.organ_tag != A.parent_organ) + to_chat(src, span_danger("[A] does not go in [target_organ].")) + return + + if(!unEquip(A)) + to_chat(src, span_danger("[A] is stuck to your hand.")) + return + + A.replaced(src, target_organ) + to_chat(src, span_notice("You absorb [A] into your [target_organ].")) + log_admin("[key_name(src)] protean self-implanted [A].") diff --git a/code/modules/organs/internal/augment/armmounted.dm b/code/modules/organs/internal/augment/armmounted.dm index 2223a8f651..2aac72356f 100644 --- a/code/modules/organs/internal/augment/armmounted.dm +++ b/code/modules/organs/internal/augment/armmounted.dm @@ -16,7 +16,7 @@ target_slot = slot_l_hand - target_parent_classes = list(ORGAN_FLESH, ORGAN_ROBOT) + target_parent_classes = list(ORGAN_FLESH, ORGAN_ROBOT, ORGAN_NANOFORM) integrated_object_type = /obj/item/gun/energy/laser/mounted/augment