diff --git a/code/game/objects/devices/PDA/uplink.dm b/code/game/objects/devices/PDA/uplink.dm
index 7186c52d2e8..bca3ca79c15 100644
--- a/code/game/objects/devices/PDA/uplink.dm
+++ b/code/game/objects/devices/PDA/uplink.dm
@@ -140,11 +140,13 @@
uses -= 3
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(get_turf(hostpda))
O.imp = new /obj/item/weapon/implant/freedom(O)
+ O.update()
if("imp_uplink")
if (uses >= 10)
uses -= 10
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(get_turf(hostpda))
O.imp = new /obj/item/weapon/implant/uplink(O)
+ O.update()
if("imp_exp")
if (src.uses >= 6)
src.uses -= 6
diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm
index 05f8236005c..174e5fe007f 100644
--- a/code/game/objects/items/weapons/implants/implanter.dm
+++ b/code/game/objects/items/weapons/implants/implanter.dm
@@ -29,17 +29,16 @@
O.show_message(text("\red [] is trying to implant [] with [src.name]!", user, M), 1)
else
O.show_message("\red [user] is trying to inject themselves with [src.name]!", 1)
- if(!do_mob(user, M,60)) return
+ if(!do_mob(user, M,60))
+ return
if(istype(M, /mob/living/carbon/human))
var/picked = 0
var/mob/living/carbon/human/T = M
- var/list/datum/organ/external/E = T.organs
- while(picked == 0 && E.len > 0)
- var/datum/organ/external/O = pick(E)
- E -= O
+ for(var/datum/organ/external/E in T)
if(!E.implant)
- O.implant = src.imp
+ E.implant = src.imp
picked = 1
+ break
if(picked == 0)
for (var/mob/O in viewers(M, null))
O.show_message(text("[user.name] can't find anywhere to implant [M.name]"), 1)