diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 2d56706c846..9b8475ec1f9 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -169,6 +169,9 @@ parent.children = list() parent.children.Add(src) + if(owner.has_embedded_objects()) + owner.throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) + /obj/item/organ/external/attempt_become_organ(obj/item/organ/external/parent,mob/living/carbon/human/H) if(parent_organ != parent.limb_name) return FALSE @@ -781,11 +784,11 @@ Note that amputating the affected organ does in fact remove the infection from t I.forceMove(src) RegisterSignal(I, COMSIG_MOVABLE_MOVED, PROC_REF(remove_embedded_object)) - if(!owner.has_embedded_objects()) - owner.clear_alert("embeddedobject") - . = ..() + if(!victim.has_embedded_objects()) + victim.clear_alert("embeddedobject") + // Attached organs also fly off. if(!ignore_children) for(var/obj/item/organ/external/O in children) diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm index 77af1a584ee..513fcd1f022 100644 --- a/code/modules/surgery/remove_embedded_object.dm +++ b/code/modules/surgery/remove_embedded_object.dm @@ -24,12 +24,10 @@ . = ..() if(!.) return FALSE - if(!istype(target)) - return FALSE var/obj/item/organ/external/affected = target.get_organ(user.zone_selected) if(!affected) return FALSE - if(affected.is_robotic()) + if(!length(affected.embedded_objects)) return FALSE return TRUE @@ -39,11 +37,6 @@ return FALSE if(!istype(target)) return FALSE - var/obj/item/organ/external/affected = target.get_organ(user.zone_selected) - if(!affected) - return FALSE - if(!affected.is_robotic()) - return FALSE return TRUE