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