Add a protean ability to absorb implants into themselves (#18026)

* Add a protean ability to absorb implants into themselves

* Add admin log to protean implanting
This commit is contained in:
ShadowLarkens
2025-07-25 11:14:21 -07:00
committed by GitHub
parent 99a81b5a7b
commit 5933a3e643
2 changed files with 41 additions and 1 deletions
@@ -901,3 +901,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].")
@@ -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