Bugfix: is_loyalty_implanted() now checks to make sure the implant is actually implanted and now in your hand.

implant adding via the traitor panel will also update it's location to be in the players head for autopsy as well as is_loyalty_implanted() reasons.

Thanks Chinsky / alex-gh for the heads up on this.
This commit is contained in:
Ccomp5950
2013-11-23 15:27:39 +01:00
committed by Alex
parent 25d306d9fc
commit 38114c537c
2 changed files with 14 additions and 3 deletions
+11 -2
View File
@@ -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 <Font size =3><B>Your loyalty implant has been deactivated.</B></FONT>"
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 <Font size =3><B>You somehow have become the recepient of a loyalty transplant, and it just activated!</B></FONT>"
if(src in ticker.mode.revolutionaries)
special_role = null
@@ -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)