diff --git a/code/datums/mind.dm b/code/datums/mind.dm index f073d6e7ee3..16bd1d3e5ae 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -508,10 +508,19 @@ datum/mind switch(href_list["implant"]) if("remove") for(var/obj/item/weapon/implant/loyalty/I in H.contents) - I.Del() + for(var/datum/organ/external/organs in H.organs) + if(I in organs.implants) + I.Del() + break H << "\blue Your loyalty implant has been deactivated." if("add") - H.contents.Add( new /obj/item/weapon/implant/loyalty (src) ) + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + L.imp_in = H + L.implanted = 1 + var/datum/organ/external/affected = H.organs_by_name["head"] + affected.implants += L + L.part = affected + H << "\red You somehow have become the recepient of a loyalty transplant, and it just activated!" if(src in ticker.mode.revolutionaries) special_role = null diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index f3d66aa3fc5..7a3bb5bbf08 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -320,7 +320,9 @@ /mob/living/carbon/human/proc/is_loyalty_implanted(mob/living/carbon/human/M) for(var/L in M.contents) if(istype(L, /obj/item/weapon/implant/loyalty)) - return 1 + for(var/datum/organ/external/O in M.organs) + if(L in O.implants) + return 1 return 0 /mob/living/carbon/human/attack_slime(mob/living/carbon/slime/M as mob)