diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm
index fa8d035a8f1..873a70e1b10 100644
--- a/code/modules/surgery/amputation.dm
+++ b/code/modules/surgery/amputation.dm
@@ -9,7 +9,7 @@
/datum/surgery_step/sever_limb
name = "sever limb"
- implements = list(TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/arm_blade = 80, /obj/item/twohanded/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25)
+ implements = list(/obj/item/shears = 300, TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/arm_blade = 80, /obj/item/twohanded/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25)
time = 64
experience_given = 5
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index 9920244e8c6..02f0bf81a39 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -330,3 +330,73 @@
/obj/item/surgicaldrill/advanced/examine()
. = ..()
. += " It's set to [tool_behaviour == TOOL_DRILL ? "drilling" : "mending"] mode."
+
+/obj/item/shears
+ name = "amputation shears"
+ desc = "A type of heavy duty surgical shears used for achieving a clean separation between limb and patient. Keeping the patient still is imperative to be able to secure and align the shears."
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "shears"
+ flags_1 = CONDUCT_1
+ item_flags = SURGICAL_TOOL
+ toolspeed = 1
+ force = 12
+ w_class = WEIGHT_CLASS_NORMAL
+ throwforce = 6
+ throw_speed = 2
+ throw_range = 5
+ custom_materials = list(/datum/material/iron=8000, /datum/material/titanium=6000)
+ attack_verb = list("sheared", "snipped")
+ sharpness = IS_SHARP
+ custom_premium_price = 1800
+
+/obj/item/shears/attack(mob/living/M, mob/user)
+ if(!iscarbon(M) || user.a_intent != INTENT_HELP)
+ return ..()
+
+ if(user.zone_selected == BODY_ZONE_CHEST)
+ return ..()
+
+ var/mob/living/carbon/patient = M
+
+ if(HAS_TRAIT(patient, TRAIT_NODISMEMBER))
+ to_chat(user, "The patient's limbs look too sturdy to amputate.")
+ return
+
+ var/candidate_name
+ var/obj/item/organ/tail_snip_candidate
+ var/obj/item/bodypart/limb_snip_candidate
+
+ if(user.zone_selected == BODY_ZONE_PRECISE_GROIN)
+ tail_snip_candidate = patient.getorganslot(ORGAN_SLOT_TAIL)
+ if(!tail_snip_candidate)
+ to_chat(user, "[patient] does not have a tail.")
+ return
+ candidate_name = tail_snip_candidate.name
+
+ else
+ limb_snip_candidate = patient.get_bodypart(check_zone(user.zone_selected))
+ if(!limb_snip_candidate)
+ to_chat(user, "[patient] is already missing that limb, what more do you want?")
+ return
+ candidate_name = limb_snip_candidate.name
+
+ var/amputation_speed_mod
+
+ patient.visible_message("[user] begins to secure [src] around [patient]'s [candidate_name].", "[user] begins to secure [src] around your [candidate_name]!")
+ playsound(get_turf(patient), 'sound/items/ratchet.ogg', 20, TRUE)
+ if(patient.stat == DEAD || patient.stat == UNCONSCIOUS || patient.IsStun()) //Stun is used by paralytics like curare it should not be confused with the more common paralyze.
+ amputation_speed_mod = 0.5
+ else if(patient.jitteriness >= 1)
+ amputation_speed_mod = 1.5
+ else
+ amputation_speed_mod = 1
+
+ if(do_after(user, toolspeed * 150 * amputation_speed_mod, target = patient))
+ playsound(get_turf(patient), 'sound/weapons/bladeslice.ogg', 250, TRUE)
+ if(user.zone_selected == BODY_ZONE_PRECISE_GROIN) //OwO
+ tail_snip_candidate.Remove(patient)
+ tail_snip_candidate.forceMove(get_turf(patient))
+ else
+ limb_snip_candidate.dismember()
+ user.visible_message("[src] violently slams shut, amputating [patient]'s [candidate_name].", "You amputate [patient]'s [candidate_name] with [src].")
+
diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm
index fcc2207f2cf..cfadc833106 100644
--- a/code/modules/vending/medical.dm
+++ b/code/modules/vending/medical.dm
@@ -32,10 +32,11 @@
/obj/item/reagent_containers/pill/multiver = 6,
/obj/item/storage/box/hug/medical = 1)
premium = list(/obj/item/reagent_containers/medigel/instabitaluri = 2,
- /obj/item/storage/pill_bottle/psicodine = 2,
- /obj/item/reagent_containers/hypospray/medipen = 3,
- /obj/item/storage/belt/medical = 3,
- /obj/item/storage/firstaid/advanced = 2)
+ /obj/item/storage/pill_bottle/psicodine = 2,
+ /obj/item/reagent_containers/hypospray/medipen = 3,
+ /obj/item/storage/belt/medical = 3,
+ /obj/item/storage/firstaid/advanced = 2,
+ /obj/item/shears = 1)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/medical
diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi
index eb32a869da5..17ebcf6b4c9 100755
Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ