From 98b6019f993dd506f06f7ce0ce32e9f996fd5d5c Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Wed, 11 Jan 2012 21:28:34 -0700 Subject: [PATCH] Implanters now work properly. This is a bugfix. --- code/game/objects/items/weapons/implants/implanter.dm | 8 +++++--- code/game/objects/items/weapons/uplinks.dm | 7 +++++-- code/modules/mob/living/carbon/carbon.dm | 7 +++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 174e5fe007f..0d4d7543e7c 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -34,11 +34,13 @@ if(istype(M, /mob/living/carbon/human)) var/picked = 0 var/mob/living/carbon/human/T = M - for(var/datum/organ/external/E in T) + var/list/datum/organ/external/E = T.GetOrgans() + while(picked == 0 && E.len > 0) + var/datum/organ/external/O = pick(E) + E -= O if(!E.implant) - E.implant = src.imp + O.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) diff --git a/code/game/objects/items/weapons/uplinks.dm b/code/game/objects/items/weapons/uplinks.dm index 971862d44aa..2edba45f0c7 100644 --- a/code/game/objects/items/weapons/uplinks.dm +++ b/code/game/objects/items/weapons/uplinks.dm @@ -18,6 +18,9 @@ SYNDICATE UPLINK return /obj/item/weapon/syndicate_uplink/attack_self(mob/user as mob) + interact(user) + +/obj/item/weapon/syndicate_uplink/proc/interact(mob/user as mob) currentUser = user user.machine = src var/dat @@ -220,11 +223,11 @@ SYNDICATE UPLINK if (href_list["temp"]) src.temp = null if (istype(src.loc, /mob)) - attack_self(src.loc) + interact(src.loc) else for(var/mob/M in viewers(1, src)) if (M.client) - src.attack_self(M) + interact(M) return /obj/item/weapon/syndicate_uplink/proc/shutdown_uplink() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index e7c75aff32f..94e5d0dc42e 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -195,3 +195,10 @@ if(src.sleeping_willingly) src.sleeping = 0 src.sleeping_willingly = 0 + +/mob/living/carbon/human/proc/GetOrgans() + var/list/L = list( ) + for(var/t in organs) + if (istype(organs[text("[]", t)], /datum/organ/external)) + L += organs[text("[]", t)] + return L \ No newline at end of file