From 154a94105de4d8782df099c64ec82c827f69246d Mon Sep 17 00:00:00 2001 From: Remie Richards Date: Fri, 13 Feb 2015 13:08:45 +0000 Subject: [PATCH] Minor cleanup + Committing the surgery --- code/game/objects/explosion.dm | 10 +---- .../modules/surgery/remove_embedded_object.dm | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 code/modules/surgery/remove_embedded_object.dm diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 691996487ad..bacd8c31c47 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -94,17 +94,9 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa //--- THROW ITEMS AROUND --- - /* - spawn(0)//Simultaneously not one at a time - var/throw_dir = get_dir(epicenter,T) - for(var/obj/item/I in T) - var/throw_range = rand(dist, max_range) - var/turf/throw_at = get_ranged_target_turf(I,throw_dir,throw_range) - I.throw_at(throw_at,throw_range,1) - */ var/throw_dir = get_dir(epicenter,T) for(var/obj/item/I in T) - spawn(0) + spawn(0) //Simultaneously not one at a time var/throw_range = rand(dist, max_range) var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range) I.throw_at(throw_at, throw_range,1) diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm new file mode 100644 index 00000000000..749faa22698 --- /dev/null +++ b/code/modules/surgery/remove_embedded_object.dm @@ -0,0 +1,44 @@ + + +/datum/surgery/embedded_removal + name = "removal of embedded objects" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/remove_object) + species = list(/mob/living/carbon/human) + location = "anywhere" + has_multi_loc = 1 + + +/datum/surgery_step/remove_object + time = 32 + allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head") + accept_hand = 1 + var/obj/item/organ/limb/L = null + + +/datum/surgery_step/remove_object/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + L = new_organ + if(L) + user.visible_message("[user] looks for objects embedded in [target]'s [parse_zone(user.zone_sel.selecting)].") + else + user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].") + + +/datum/surgery_step/remove_object/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(L) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + var/objects = 0 + for(var/obj/item/I in L.embedded_objects) + objects++ + I.loc = get_turf(H) + L.embedded_objects -= I + + if(objects > 0) + user.visible_message("[user] sucessfully removes [objects] objects from [H]'s [L.getDisplayName()]!") + else + user.visible_message("[user] finds no objects embedded in [H]'s [L.getDisplayName()].") + + else + user.visible_message("[user] can't find [target]'s [parse_zone(user.zone_sel.selecting)], let alone any objects embedded in it!") + + return 1 \ No newline at end of file