From 3b86b29063732123aa7a286d313b2bcea8650e82 Mon Sep 17 00:00:00 2001 From: Segrain Date: Fri, 31 Jan 2014 00:31:41 +0300 Subject: [PATCH] Check for verb removal. --- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/mob.dm | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 069a0903cdc..4455d7c27aa 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1217,7 +1217,7 @@ del(feet_blood_DNA) return 1 -/mob/living/carbon/human/proc/get_visible_implants(var/class = 0) +/mob/living/carbon/human/get_visible_implants(var/class = 0) var/list/visible_implants = list() for(var/datum/organ/external/organ in src.organs) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 9e26d94ebe5..22ae39d5ce2 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1109,6 +1109,13 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/flash_weak_pain() flick("weak_pain",pain) +/mob/proc/get_visible_implants(var/class = 0) + var/list/visible_implants = list() + for(var/obj/item/O in embedded) + if(O.w_class > class) + visible_implants += O + return visible_implants + mob/proc/yank_out_object() set category = "Object" set name = "Yank out object" @@ -1135,14 +1142,7 @@ mob/proc/yank_out_object() if(S == U) self = 1 // Removing object from yourself. - if(istype(src,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = src - valid_objects = H.get_visible_implants(1) - else - for(var/obj/item/weapon/W in embedded) - if(W.w_class >= 2) - valid_objects += W - + valid_objects = get_visible_implants(1) if(!valid_objects.len) if(self) src << "You have nothing stuck in your body that is large enough to remove." @@ -1166,7 +1166,9 @@ mob/proc/yank_out_object() visible_message("[src] rips [selection] out of their body.","You rip [selection] out of your body.") else visible_message("[usr] rips [selection] out of [src]'s body.","[usr] rips [selection] out of your body.") - src.verbs -= /mob/proc/yank_out_object + valid_objects = get_visible_implants(0) + if(valid_objects.len == 1) //Yanking out last object - removing verb. + src.verbs -= /mob/proc/yank_out_object if(istype(src,/mob/living/carbon/human))