diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index a121e87c9a282..acdcd16740e5d 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -243,9 +243,10 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
#define BLOCKING_HUNTER (1<<3) //is the item more suited to fighting fauna?
// Object/Item sharpness
-#define IS_BLUNT 0
-#define IS_SHARP 1
-#define IS_SHARP_ACCURATE 2
+#define BLUNT 0 //Can only remove limbs if they're easy to remove
+#define SHARP 1 //Can only remove limbs if target is dead
+#define SHARP_DISMEMBER 2 //Can only remove limbs if the limb is already disabled
+#define SHARP_DISMEMBER_EASY 3 //Has a chance equal to weapon force to remove limb on every attack, in some cases taking them off in one swing
//! ### His Grace.
#define HIS_GRACE_SATIATED 0 //! He hungers not. If bloodthirst is set to this, His Grace is asleep.
diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm
index 0c7162fe13824..03847bff295ef 100644
--- a/code/game/gamemodes/clown_ops/clown_weapons.dm
+++ b/code/game/gamemodes/clown_ops/clown_weapons.dm
@@ -97,7 +97,7 @@
hitsound = null
attack_verb_on = list("slips")
clumsy_check = FALSE
- sharpness = IS_BLUNT
+ sharpness = BLUNT
sword_color = "yellow"
heat = 0
light_color = "#ffff00"
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index efe12677ab434..4dd99c7600c4c 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -156,8 +156,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/flags_cover = 0
/// Used to define how hot it's flame will be when lit. Used it igniters, lighters, flares, candles, etc.
var/heat = 0
- /// IS_BLUNT | IS_SHARP | IS_SHARP_ACCURATE Used to define whether the item is sharp or blunt. IS_SHARP is used if the item is supposed to be able to cut open things. See _DEFINES/combat.dm
- var/sharpness = IS_BLUNT
+ /// BLUNT | SHARP | SHARP_DISMEMBER | SHARP_DISMEMBER_EASY Used to define whether the item is sharp or blunt. SHARP is used if the item is supposed to be able to cut open things. See _DEFINES/combat.dm
+ var/sharpness = BLUNT
//this multiplies an attacks force for secondary effects like attacking blocking implements, dismemberment, and knocking a target silly
var/attack_weight = 1
diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm
index cc09f01d685c7..435f1c3d5367f 100644
--- a/code/game/objects/items/chainsaw.dm
+++ b/code/game/objects/items/chainsaw.dm
@@ -20,7 +20,7 @@
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
hitsound = "swing_hit"
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_DEEP_WOUND
actions_types = list(/datum/action/item_action/startchainsaw)
var/on = FALSE
diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm
index e91135a8c7db1..224a384e86fb4 100644
--- a/code/game/objects/items/cosmetics.dm
+++ b/code/game/objects/items/cosmetics.dm
@@ -277,7 +277,7 @@
attack_verb_continuous = list("slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
tool_behaviour = TOOL_SCALPEL
else
@@ -288,7 +288,7 @@
attack_verb_continuous = list("stubs", "pokes")
attack_verb_simple = list("stub", "poke")
hitsound = 'sound/weapons/genhit.ogg'
- sharpness = IS_BLUNT
+ sharpness = BLUNT
bleed_force = 0
tool_behaviour = null
diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm
index 0fcd562b8a1cb..cb56d0baa3997 100644
--- a/code/game/objects/items/dualsaber.dm
+++ b/code/game/objects/items/dualsaber.dm
@@ -76,7 +76,7 @@
if(user.dna.check_mutation(HULK))
to_chat(user, "You lack the grace to wield this!")
return COMPONENT_TWOHANDED_BLOCK_WIELD
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER_EASY
bleed_force = BLEED_DEEP_WOUND
w_class = w_class_on
hitsound = 'sound/weapons/blade1.ogg'
diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm
index 081497c40a02c..6065ccb0e7db7 100644
--- a/code/game/objects/items/fireaxe.dm
+++ b/code/game/objects/items/fireaxe.dm
@@ -15,7 +15,7 @@
attack_verb_continuous = list("attacks", "chops", "cleaves", "tears", "lacerates", "cuts")
attack_verb_simple = list("attack", "chop", "cleave", "tear", "lacerate", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
max_integrity = 200
armor_type = /datum/armor/item_fireaxe
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index 718e93d430268..069d69a13b772 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -333,7 +333,7 @@
block_flags = BLOCKING_NASTY | BLOCKING_ACTIVE
block_level = 1
block_power = 30
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
@@ -456,7 +456,7 @@
block_power = 15
block_flags = BLOCKING_ACTIVE | BLOCKING_NASTY
slot_flags = ITEM_SLOT_BACK
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
attack_verb_continuous = list("chops", "slices", "cuts", "reaps")
attack_verb_simple = list("chop", "slice", "cut", "reap")
@@ -579,7 +579,7 @@
righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
w_class = WEIGHT_CLASS_HUGE
item_flags = ABSTRACT | ISWEAPON
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
@@ -605,7 +605,7 @@
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
worn_icon_state = "render"
hitsound = 'sound/items/bikehorn.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
@@ -659,7 +659,7 @@
throw_speed = 4
throw_range = 7
throwforce = 30
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
attack_verb_continuous = list("enlightens", "redpills")
attack_verb_simple = list("enlighten", "redpill")
@@ -675,7 +675,7 @@
slot_flags = null
item_flags = ABSTRACT | ISWEAPON
w_class = WEIGHT_CLASS_HUGE
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
/obj/item/nullrod/armblade/Initialize(mapload)
@@ -718,7 +718,7 @@
force = 14
block_power = 40
slot_flags = ITEM_SLOT_BACK
- sharpness = IS_BLUNT
+ sharpness = BLUNT
hitsound = "swing_hit"
attack_verb_continuous = list("smashes", "slams", "whacks", "thwacks")
attack_verb_simple = list("smash", "slam", "whack", "thwack")
@@ -737,7 +737,7 @@
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
w_class = WEIGHT_CLASS_HUGE
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
slot_flags = null
hitsound = 'sound/weapons/bladeslice.ogg'
@@ -773,7 +773,7 @@
attack_verb_continuous = list("pokes", "impales", "pierces", "jabs")
attack_verb_simple = list("poke", "impale", "pierce", "jab")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
/obj/item/nullrod/egyptian
@@ -816,7 +816,7 @@
icon = 'icons/obj/clockwork_objects.dmi'
slot_flags = ITEM_SLOT_BELT
armour_penetration = 10
- sharpness = IS_SHARP_ACCURATE
+ sharpness = SHARP
bleed_force = BLEED_CUT
w_class = WEIGHT_CLASS_BULKY
attack_verb_continuous = list("stabs", "pokes", "slashes", "clocks")
@@ -836,7 +836,7 @@
throw_speed = 3
throw_range = 6
tool_behaviour = TOOL_KNIFE
- sharpness = IS_SHARP_ACCURATE
+ sharpness = SHARP
w_class = WEIGHT_CLASS_SMALL
/obj/item/nullrod/rainbow_knife/afterattack(atom/O, mob/user, proximity)
diff --git a/code/game/objects/items/knives.dm b/code/game/objects/items/knives.dm
index e32c8392d430b..876717738cd7c 100644
--- a/code/game/objects/items/knives.dm
+++ b/code/game/objects/items/knives.dm
@@ -18,7 +18,7 @@
custom_materials = list(/datum/material/iron=12000)
attack_verb_continuous = list("slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
- sharpness = IS_SHARP_ACCURATE
+ sharpness = SHARP
bleed_force = BLEED_CUT
armor_type = /datum/armor/item_knife
var/bayonet = FALSE //Can this be attached to a gun?
@@ -76,6 +76,7 @@
attack_verb_simple = list("cleave", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
w_class = WEIGHT_CLASS_NORMAL
custom_price = 60
+ sharpness = SHARP_DISMEMBER //This is a big boy knife
/obj/item/knife/hunting
name = "hunting knife"
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index fba93468ceda5..0ac6ea85e83c9 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -106,7 +106,7 @@
attack_verb_off = list("taps", "pokes")
throw_speed = 3
throw_range = 5
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER_EASY
bleed_force_on = BLEED_DEEP_WOUND
embedding = list("embed_chance" = 200, "armour_block" = 60, "max_pain_mult" = 15)
armour_penetration = 35
@@ -139,7 +139,7 @@
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
sword_color = null //stops icon from breaking when turned on.
w_class = WEIGHT_CLASS_NORMAL
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER_EASY
bleed_force_on = BLEED_DEEP_WOUND
light_color = "#40ceff"
tool_behaviour = TOOL_SAW
@@ -170,7 +170,7 @@
sword_color = null //stops icon from breaking when turned on.
hitcost = 75 //Costs more than a standard cyborg esword
w_class = WEIGHT_CLASS_NORMAL
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER_EASY
bleed_force_on = BLEED_DEEP_WOUND
light_color = "#40ceff"
tool_behaviour = TOOL_SAW
@@ -268,7 +268,7 @@
throw_range = 1
w_class = WEIGHT_CLASS_BULKY//So you can't hide it in your pocket or some such.
var/datum/effect_system/spark_spread/spark_system
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER_EASY
bleed_force_on = BLEED_DEEP_WOUND
//Most of the other special functions are handled in their own files. aka special snowflake code so kewl
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index b401ff08a3600..cc021a15a5600 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -46,7 +46,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
/obj/item/melee/synthetic_arm_blade/Initialize(mapload)
@@ -70,7 +70,7 @@
throwforce = 10
w_class = WEIGHT_CLASS_BULKY
armour_penetration = 75
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
attack_verb_continuous = list("slashes", "cuts")
attack_verb_simple = list("slash", "cut")
diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm
index a556f326681e2..0177c4b2187ae 100644
--- a/code/game/objects/items/melee/transforming.dm
+++ b/code/game/objects/items/melee/transforming.dm
@@ -1,5 +1,5 @@
/obj/item/melee/transforming
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = 0
var/active = FALSE
var/force_on = 30 //force when active
diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm
index 25dc5d1e95467..20e9a34d9feab 100644
--- a/code/game/objects/items/mop.dm
+++ b/code/game/objects/items/mop.dm
@@ -125,6 +125,6 @@
throw_speed = 4
attack_verb_continuous = list("mops", "stabs", "shanks", "jousts")
attack_verb_simple = list("mop", "stab", "shank", "joust")
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
embedding = list("armour_block" = 40)
diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/pitchfork.dm
index a01c3933fd895..16c22402f9fc0 100644
--- a/code/game/objects/items/pitchfork.dm
+++ b/code/game/objects/items/pitchfork.dm
@@ -13,7 +13,7 @@
attack_verb_continuous = list("attacks", "impales", "pierces")
attack_verb_simple = list("attack", "impale", "pierce")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
max_integrity = 200
armor_type = /datum/armor/item_pitchfork
diff --git a/code/game/objects/items/sharpener.dm b/code/game/objects/items/sharpener.dm
index 3f7c68e07e163..6437ba060288c 100644
--- a/code/game/objects/items/sharpener.dm
+++ b/code/game/objects/items/sharpener.dm
@@ -8,7 +8,6 @@
var/increment = 4
var/max = 30
var/prefix = "sharpened"
- var/requires_sharpness = 1
/obj/item/sharpener/attackby(obj/item/I, mob/user, params)
@@ -18,7 +17,7 @@
if(I.force >= max || I.throwforce >= max)//no esword sharpening
to_chat(user, "[I] is much too powerful to sharpen further!")
return
- if(requires_sharpness && !I.is_sharp())
+ if(!I.is_sharp())
to_chat(user, "You can only sharpen items that are already sharp, such as knives!")
return
if(istype(I, /obj/item/melee/transforming/energy))
@@ -39,7 +38,6 @@
I.force = clamp(I.force + increment, 0, max)
user.visible_message("[user] sharpens [I] with [src]!", "You sharpen [I], making it much more deadly than before.")
playsound(src, 'sound/items/unsheath.ogg', 25, 1)
- I.sharpness = IS_SHARP_ACCURATE
I.bleed_force *= 1.1
I.throwforce = clamp(I.throwforce + increment, 0, max)
I.name = "[prefix] [I.name]"
@@ -54,4 +52,3 @@
increment = 200
max = 200
prefix = "super-sharpened"
- requires_sharpness = 0
diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index 0b2fb887db7aa..61117ee21f763 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -104,7 +104,7 @@
transparent = TRUE
/obj/item/shield/riot/attackby(obj/item/W, mob/user, params)
- if(istype(W, /obj/item/melee) && W.sharpness == IS_BLUNT)
+ if(istype(W, /obj/item/melee) && W.sharpness == BLUNT)
if(cooldown < world.time - 25)
user.visible_message("[user] bashes [src] with [W]!")
playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm
index a75d2f6045b13..671d6bda2d008 100644
--- a/code/game/objects/items/spear.dm
+++ b/code/game/objects/items/spear.dm
@@ -18,7 +18,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "pokes", "jabs", "tears", "lacerates", "gores")
attack_verb_simple = list("attack", "poke", "jab", "tear", "lacerate", "gore")
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
max_integrity = 200
armor_type = /datum/armor/item_spear
@@ -201,7 +201,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/item/spear/explosive)
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "pokes", "jabs", "tears", "lacerates", "gores")
attack_verb_simple = list("attack", "poke", "jab", "tear", "lacerate", "gore")
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
/obj/item/spear/bamboospear/ComponentInitialize()
diff --git a/code/game/objects/items/stacks/sheets/mineral/glass.dm b/code/game/objects/items/stacks/sheets/mineral/glass.dm
index 31f1fcac6b563..5ddfcea1fb57c 100644
--- a/code/game/objects/items/stacks/sheets/mineral/glass.dm
+++ b/code/game/objects/items/stacks/sheets/mineral/glass.dm
@@ -248,7 +248,7 @@
resistance_flags = ACID_PROOF
armor_type = /datum/armor/item_shard
max_integrity = 40
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
var/icon_prefix
embedding = list("embed_chance" = 65)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 0056cc7f57dd4..06f70b1690b1f 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -427,7 +427,7 @@
/obj/item/dualsaber/toy/on_wield(obj/item/source, mob/living/carbon/user)
. = ..()
- sharpness = IS_BLUNT
+ sharpness = BLUNT
bleed_force = 0
/obj/item/dualsaber/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
@@ -459,7 +459,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
block_flags = BLOCKING_ACTIVE | BLOCKING_PROJECTILE //if it some how gets block level, katanas block projectiles for the meme
item_flags = ISWEAPON
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
/*
@@ -1173,7 +1173,7 @@
card_throwforce = 12
card_throw_speed = 6
embedding = list("pain_mult" = 1, "embed_chance" = 80, "max_damage_mult" = 8, "fall_chance" = 0, "embed_chance_turf_mod" = 15, "armour_block" = 60) //less painful than throwing stars
- card_sharpness = IS_SHARP
+ card_sharpness = SHARP
bleed_force = BLEED_SURFACE
card_throw_range = 7
card_attack_verb_continuous = list("attacks", "slices", "dices", "slashes", "cuts")
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 51e6a94249423..e8c4a4d60cf00 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -89,7 +89,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
block_upgrade_walk = 1
block_level = 1
block_flags = BLOCKING_ACTIVE | BLOCKING_NASTY
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_DEEP_WOUND
max_integrity = 200
armor_type = /datum/armor/item_claymore
@@ -280,7 +280,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
block_level = 1
block_upgrade_walk = 1
block_flags = BLOCKING_ACTIVE | BLOCKING_NASTY | BLOCKING_PROJECTILE
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_DEEP_WOUND
max_integrity = 200
armor_type = /datum/armor/item_katana
@@ -357,7 +357,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
w_class = WEIGHT_CLASS_SMALL
item_flags = ISWEAPON
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
custom_materials = list(/datum/material/iron=500, /datum/material/glass=500)
resistance_flags = FIRE_PROOF
@@ -371,7 +371,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
/obj/item/throwing_star/toy
name = "toy throwing star"
desc = "An aerodynamic disc strapped with adhesive for sticking to people, good for playing pranks and getting yourself killed by security."
- sharpness = IS_BLUNT
+ sharpness = BLUNT
force = 0
throwforce = 0
embedding = list("pain_mult" = 0, "jostle_pain_mult" = 0, "embed_chance" = 300, "fall_chance" = 25, "armour_block" = 70)
@@ -424,7 +424,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
attack_verb_continuous = list("slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
else
force = initial(force)
@@ -434,7 +434,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
attack_verb_continuous = list("stubs", "pokes")
attack_verb_simple = list("stub", "poke")
hitsound = 'sound/weapons/genhit.ogg'
- sharpness = IS_BLUNT
+ sharpness = BLUNT
bleed_force = 0
/obj/item/switchblade/suicide_act(mob/living/user)
@@ -574,7 +574,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
throwforce = 0
throw_range = 0
throw_speed = 0
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_DEEP_WOUND
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
@@ -1037,7 +1037,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
force = 18
block_upgrade_walk = 1
block_flags = BLOCKING_ACTIVE | BLOCKING_NASTY
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
@@ -1058,7 +1058,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
force = 20
throwforce = 20
throw_speed = 4
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
attack_verb_continuous = list("cuts", "slices", "dices")
attack_verb_simple = list("cut", "slice", "dice")
diff --git a/code/game/turfs/open/floor/fancy_floor.dm b/code/game/turfs/open/floor/fancy_floor.dm
index 212a1c61c6fff..c7e9f061f41b4 100644
--- a/code/game/turfs/open/floor/fancy_floor.dm
+++ b/code/game/turfs/open/floor/fancy_floor.dm
@@ -144,7 +144,7 @@
user.visible_message("[user] digs up [src].", "You [turfverb] [src].")
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1)
make_plating()
- else if(C.sharpness != IS_BLUNT)
+ else if(C.sharpness != BLUNT)
QUEUE_SMOOTH(src)
QUEUE_SMOOTH_NEIGHBORS(src)
icon_state = "grass"
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index c11aa30ed52e1..d379047ad2497 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -160,7 +160,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER_EASY
bleed_force = BLEED_DEEP_WOUND
var/can_drop = FALSE
var/fake = FALSE
@@ -175,6 +175,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/item/melee/arm_blade)
loc.visible_message("A grotesque blade forms around [loc.name]\'s arm!", "Our arm twists and mutates, transforming it into a deadly blade.", "You hear organic matter ripping and tearing!")
if(synthetic)
can_drop = TRUE
+ sharpness = SHARP_DISMEMBER
AddComponent(/datum/component/butchering, 60, 80)
/obj/item/melee/arm_blade/afterattack(atom/target, mob/user, proximity)
diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm
index 44ff428fdaff9..a56a3e5a4a38e 100644
--- a/code/modules/antagonists/changeling/powers/tiny_prick.dm
+++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm
@@ -128,6 +128,7 @@
/obj/item/melee/arm_blade/false
desc = "A grotesque mass of flesh that used to be your arm. Although it looks dangerous at first, you can tell it's actually quite dull and useless."
+ sharpness = BLUNT //Not actually sharp
force = 5 //Basically as strong as a punch
fake = TRUE
diff --git a/code/modules/antagonists/clock_cult/items/clockwork_weapon.dm b/code/modules/antagonists/clock_cult/items/clockwork_weapon.dm
index 97c61732910c2..9caee25a385a9 100644
--- a/code/modules/antagonists/clock_cult/items/clockwork_weapon.dm
+++ b/code/modules/antagonists/clock_cult/items/clockwork_weapon.dm
@@ -19,7 +19,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "pokes", "jabs", "tears", "lacerates", "gores")
attack_verb_simple = list("attack", "poke", "jab", "tear", "lacerate", "gore")
- sharpness = IS_SHARP_ACCURATE
+ sharpness = SHARP
bleed_force = BLEED_CUT
max_integrity = 200
var/clockwork_hint = ""
@@ -99,7 +99,7 @@
worn_icon_state = "mining_hammer1"
throwforce = 25
armour_penetration = 6
- sharpness = IS_BLUNT
+ sharpness = BLUNT
attack_verb_continuous = list("bashes", "bludgeons", "thrashes", "whacks")
attack_verb_simple = list("bash", "bludgeon", "thrash", "whack")
clockwork_hint = "Enemies hit by this will be flung back while on Reebe."
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index cf05b79bfbcaf..ae43b26f59559 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -47,7 +47,7 @@ Striking a noncultist, however, will tear their flesh."}
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
flags_1 = CONDUCT_1
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
w_class = WEIGHT_CLASS_BULKY
block_level = 1
@@ -576,7 +576,7 @@ Striking a noncultist, however, will tear their flesh."}
block_upgrade_walk = 1
attack_verb_continuous = list("attacks", "impales", "stabs", "tears", "lacerates", "gores")
attack_verb_simple = list("attack", "impale", "stab", "tear", "lacerate", "gore")
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
hitsound = 'sound/weapons/bladeslice.ogg'
var/datum/action/innate/cult/spear/spear_act
diff --git a/code/modules/antagonists/heretic/items/heretic_blades.dm b/code/modules/antagonists/heretic/items/heretic_blades.dm
index 1f3385c65b49d..cbdca6a8bf1f3 100644
--- a/code/modules/antagonists/heretic/items/heretic_blades.dm
+++ b/code/modules/antagonists/heretic/items/heretic_blades.dm
@@ -9,7 +9,7 @@
inhand_x_dimension = 64
inhand_y_dimension = 64
flags_1 = CONDUCT_1
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER_EASY
bleed_force = BLEED_CUT
w_class = WEIGHT_CLASS_LARGE
force = 24
diff --git a/code/modules/antagonists/heretic/structures/carving_knife.dm b/code/modules/antagonists/heretic/structures/carving_knife.dm
index eed18614df296..516c3f914a763 100644
--- a/code/modules/antagonists/heretic/structures/carving_knife.dm
+++ b/code/modules/antagonists/heretic/structures/carving_knife.dm
@@ -6,7 +6,7 @@
icon = 'icons/obj/heretic.dmi'
icon_state = "rune_carver"
flags_1 = CONDUCT_1
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
w_class = WEIGHT_CLASS_SMALL
force = 10
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index 5741630d0d3f4..a73b48b71a3e2 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -123,7 +123,7 @@
attack_verb_continuous = list("slices")
attack_verb_simple = list("slice")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
/obj/item/clothing/glasses/meson/prescription
@@ -244,7 +244,7 @@
attack_verb_continuous = list("slices")
attack_verb_simple = list("slice")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
glass_colour_type = /datum/client_colour/glass_colour/lightgreen
@@ -329,7 +329,7 @@
attack_verb_continuous = list("slices")
attack_verb_simple = list("slice")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
/obj/item/clothing/glasses/sunglasses/advanced/garb/supergarb
@@ -351,7 +351,7 @@
attack_verb_continuous = list("slices")
attack_verb_simple = list("slice")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
glass_colour_type = /datum/client_colour/glass_colour/orange
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index b3beba00edd23..743fe43f953c1 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -293,7 +293,7 @@
attack_verb_continuous = list("slices")
attack_verb_simple = list("slice")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
/obj/item/clothing/glasses/hud/security/sunglasses/gars/supergars
diff --git a/code/modules/food_and_drinks/plate.dm b/code/modules/food_and_drinks/plate.dm
index d7a68c3567884..7bd30f14fea3a 100644
--- a/code/modules/food_and_drinks/plate.dm
+++ b/code/modules/food_and_drinks/plate.dm
@@ -91,7 +91,7 @@
base_icon_state = "plate_shard"
force = 5
throwforce = 5
- sharpness = IS_SHARP
+ sharpness = SHARP
/// How many variants of shard there are
var/variants = 5
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index 8b995fb82dafe..f213159854662 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -87,7 +87,7 @@
attack_verb_continuous = list("chops", "tears", "lacerates", "cuts")
attack_verb_simple = list("chop", "tear", "lacerate", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
/obj/item/hatchet/Initialize(mapload)
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 7199aa1e6b220..105deac6bf761 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -18,7 +18,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb_continuous = list("smashes", "crushes", "cleaves", "chops", "pulps")
attack_verb_simple = list("smash", "crush", "cleave", "chop", "pulp")
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_CUT
actions_types = list(/datum/action/item_action/toggle_light)
light_system = MOVABLE_LIGHT
diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm
index f2a5a5add17c3..e835264d1c353 100644
--- a/code/modules/mining/equipment/mining_tools.dm
+++ b/code/modules/mining/equipment/mining_tools.dm
@@ -128,7 +128,7 @@
custom_materials = list(/datum/material/iron=50)
attack_verb_continuous = list("bashes", "batters", "bludgeons", "whacks")
attack_verb_simple = list("bash", "batter", "bludgeon", "whack")
- sharpness = IS_SHARP
+ sharpness = SHARP
/obj/item/shovel/Initialize(mapload)
. = ..()
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 2ec126b7947dd..ced5bd6ca68a3 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -765,7 +765,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/item/shared_storage/blue)
hitsound = 'sound/weapons/bladeslice.ogg'
hitsound_on = 'sound/weapons/bladeslice.ogg'
w_class = WEIGHT_CLASS_BULKY
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
faction_bonus_force = 45
nemesis_factions = list("mining", "boss")
@@ -859,7 +859,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/item/shared_storage/blue)
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
flags_1 = CONDUCT_1
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
w_class = WEIGHT_CLASS_BULKY
force = 1
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 3b46d8299efa2..bd793766da4f6 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -78,6 +78,7 @@
var/hit_amount = (100 - armour_block) / 100
add_bleeding(I.bleed_force * hit_amount)
if(I.force)
+ var/limb_damage = affecting.get_damage() //We need to save this for later to simplify dismemberment
var/armour_block = run_armor_check(affecting, MELEE, armour_penetration = I.armour_penetration)
apply_damage(I.force, I.damtype, affecting, armour_block)
if(I.damtype == BRUTE && (IS_ORGANIC_LIMB(affecting)))
@@ -102,18 +103,26 @@
to_chat(src, "The heat from [I] cauterizes your bleeding!")
playsound(src, 'sound/surgery/cautery2.ogg', 70)
- //dismemberment
- var/dismemberthreshold = (((affecting.max_damage * 2) / max(I.is_sharp(), 0.5)) - (affecting.get_damage() + ((I.w_class - 3) * 10) + ((I.attack_weight - 1) * 15)))
- if(HAS_TRAIT(src, TRAIT_EASYDISMEMBER))
- dismemberthreshold -= 50
- if(I.is_sharp())
- dismemberthreshold = min(((affecting.max_damage * 2) - affecting.get_damage()), dismemberthreshold) //makes it so limbs wont become immune to being dismembered if the item is sharp
- if(stat == DEAD)
- dismemberthreshold = dismemberthreshold / 3
- if(I.force >= dismemberthreshold && I.force >= 10)
- if(affecting.dismember(I.damtype))
- I.add_mob_blood(src)
- playsound(get_turf(src), I.get_dismember_sound(), 80, 1)
+ var/dismember_limb = FALSE
+ var/weapon_sharpness = I.is_sharp()
+
+ if(((HAS_TRAIT(src, TRAIT_EASYDISMEMBER) && limb_damage) || (weapon_sharpness == SHARP_DISMEMBER_EASY)) && prob(I.force))
+ dismember_limb = TRUE
+ //Easy dismemberment on the mob allows even blunt weapons to potentially delimb, but only if the limb is already damaged
+ //Certain weapons are so sharp/strong they have a chance to cleave right through a limb without following the normal restrictions
+
+ else if(weapon_sharpness > SHARP || (weapon_sharpness == SHARP && stat == DEAD))
+ //Delimbing cannot normally occur with blunt weapons
+ //You also aren't cutting someone's arm off with a scalpel unless they're already dead
+
+ if(limb_damage >= affecting.max_damage)
+ dismember_limb = TRUE
+ //You can only cut a limb off if it is already damaged enough to be fully disabled
+
+ if(dismember_limb && (affecting.body_zone != BODY_ZONE_HEAD || stat != CONSCIOUS) && affecting.dismember(I.damtype))
+ I.add_mob_blood(src)
+ playsound(get_turf(src), I.get_dismember_sound(), 80, 1)
+
return TRUE //successful attack
/mob/living/carbon/send_item_attack_message(obj/item/I, mob/living/user, hit_area, obj/item/bodypart/hit_bodypart)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 06d5bf93df7b0..724bad4282158 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1773,6 +1773,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
var/armor_block = H.run_armor_check(affecting, MELEE, "Your armor has protected your [hit_area]!", "Your armor has softened a hit to your [hit_area]!",I.armour_penetration)
var/Iforce = I.force //to avoid runtimes on the forcesay checks at the bottom. Some items might delete themselves if you drop them. (stunning yourself, ninja swords)
+ var/limb_damage = affecting.get_damage() //We need to save this for later to simplify dismemberment
apply_damage(I.force, I.damtype, def_zone, armor_block, H)
if (I.bleed_force)
@@ -1808,17 +1809,25 @@ GLOBAL_LIST_EMPTY(features_by_species)
if(!I.force)
return 0 //item force is zero
- //dismemberment
- var/dismemberthreshold = ((affecting.max_damage * 2) - affecting.get_damage()) //don't take the current hit into account.
- var/attackforce = (((I.w_class - 3) * 5) + ((I.attack_weight - 1) * 14) + ((I.is_sharp()-1) * 20)) //all the variables that go into ripping off a limb in one handy package. Force is absent because it's already been taken into account by the limb being damaged
- if(HAS_TRAIT(src, TRAIT_EASYDISMEMBER))
- dismemberthreshold -= 30
- if(I.is_sharp())
- attackforce = max(attackforce, I.force)
- if(attackforce >= dismemberthreshold && I.force >= 10)
- if(affecting.dismember(I.damtype))
- I.add_mob_blood(H)
- playsound(get_turf(H), I.get_dismember_sound(), 80, 1)
+ var/dismember_limb = FALSE
+ var/weapon_sharpness = I.is_sharp()
+
+ if(((HAS_TRAIT(H, TRAIT_EASYDISMEMBER) && limb_damage) || (weapon_sharpness == SHARP_DISMEMBER_EASY)) && prob(I.force))
+ dismember_limb = TRUE
+ //Easy dismemberment on the mob allows even blunt weapons to potentially delimb, but only if the limb is already damaged
+ //Certain weapons are so sharp/strong they have a chance to cleave right through a limb without following the normal restrictions
+
+ else if(weapon_sharpness > SHARP || (weapon_sharpness == SHARP && H.stat == DEAD))
+ //Delimbing cannot normally occur with blunt weapons
+ //You also aren't cutting someone's arm off with a scalpel unless they're already dead
+
+ if(limb_damage >= affecting.max_damage)
+ dismember_limb = TRUE
+ //You can only cut a limb off if it is already damaged enough to be fully disabled
+
+ if(dismember_limb && (affecting.body_zone != BODY_ZONE_HEAD || H.stat != CONSCIOUS) && affecting.dismember(I.damtype))
+ I.add_mob_blood(H)
+ playsound(get_turf(H), I.get_dismember_sound(), 80, 1)
if(I.damtype == BRUTE && (I.force >= max(10, armor_block) && hit_area == BODY_ZONE_HEAD))
if(!I.is_sharp() && H.mind && H.stat == CONSCIOUS && H != user && (H.health - (I.force * I.attack_weight)) <= 0) // rev deconversion through blunt trauma.
diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
index 17a6a73e58717..b32ddee29e193 100644
--- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
@@ -225,7 +225,7 @@
righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi'
item_flags = ABSTRACT | DROPDEL | ISWEAPON
w_class = WEIGHT_CLASS_HUGE
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER_EASY
bleed_force = BLEED_DEEP_WOUND
/obj/item/light_eater/Initialize(mapload)
diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm
index e1e7b7c15f154..fd52baf236c79 100644
--- a/code/modules/ninja/energy_katana.dm
+++ b/code/modules/ninja/energy_katana.dm
@@ -18,7 +18,7 @@
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER_EASY
bleed_force = BLEED_DEEP_WOUND
max_integrity = 200
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 6d1b2b5d3e4fd..7b18ba27d539c 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -97,7 +97,7 @@
throw_speed = 4
colour = "crimson"
custom_materials = list(/datum/material/gold = 750)
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
resistance_flags = FIRE_PROOF
unique_reskin_icon = list("Oak" = "pen-fountain-o",
@@ -252,7 +252,7 @@
hitsound = 'sound/weapons/edagger.ogg'
embedding = list(embed_chance = 200, max_damage_mult = 15, armour_block = 40) //rule of cool
throwforce = 35
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_CUT
playsound(user, 'sound/weapons/saberon.ogg', 5, 1)
to_chat(user, "[src] is now active.")
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 6fa3812ad6a64..5a734b282a3f5 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -107,7 +107,7 @@
attack_verb_continuous = list("attacks", "slashes", "cuts", "slices")
attack_verb_simple = list("attack", "slash", "cut", "slice")
force = 12
- sharpness = IS_SHARP
+ sharpness = SHARP
can_charge = FALSE
dead_cell = TRUE
usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg')
diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm
index e9b8d8b024021..bc911c1142cc9 100644
--- a/code/modules/projectiles/guns/magic/staff.dm
+++ b/code/modules/projectiles/guns/magic/staff.dm
@@ -107,7 +107,7 @@
force = 20
armour_penetration = 75
block_flags = BLOCKING_ACTIVE | BLOCKING_NASTY | BLOCKING_PROJECTILE
- sharpness = IS_SHARP
+ sharpness = SHARP_DISMEMBER
bleed_force = BLEED_DEEP_WOUND
max_charges = 4
diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
index a9180e678bd38..186c650810fc3 100644
--- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm
+++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
@@ -126,7 +126,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb_continuous = list("stabs", "slashes", "attacks")
attack_verb_simple = list("stab", "slash", "attack")
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_SURFACE
var/static/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken")
diff --git a/code/modules/research/nanites/nanite_programs/buffing.dm b/code/modules/research/nanites/nanite_programs/buffing.dm
index aadebf25e1776..65cd5241e6642 100644
--- a/code/modules/research/nanites/nanite_programs/buffing.dm
+++ b/code/modules/research/nanites/nanite_programs/buffing.dm
@@ -177,6 +177,7 @@
name = "metallic armblade"
desc = "Nanites have formed this extremely sharp blade around your arm. Owie."
force = 15
+ sharpness = SHARP_DISMEMBER
icon = 'icons/obj/nanite.dmi'
icon_state = "nanite_blade"
item_state = "nanite_blade"
diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm
index 62c196fb254e4..8e9bd675f5fd1 100644
--- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm
@@ -9,6 +9,7 @@ Slimecrossing Weapons
name = "slimy boneblade"
desc = "What remains of the bones in your arm. Incredibly sharp, and painful for both you and your opponents."
force = 15
+ sharpness = SHARP_DISMEMBER
force_string = "painful"
/obj/item/melee/arm_blade/slime/attack(mob/living/L, mob/user)
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index d6bae900fb7ba..006dbda02f1f0 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -157,7 +157,7 @@
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP_ACCURATE
+ sharpness = SHARP
bleed_force = BLEED_CUT
tool_behaviour = TOOL_SCALPEL
toolspeed = 1
@@ -182,7 +182,7 @@
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
toolspeed = 0.5
hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP_ACCURATE
+ sharpness = SHARP
bleed_force = BLEED_CUT
/obj/item/scalpel/suicide_act(mob/living/user)
@@ -207,7 +207,7 @@
custom_materials = list(/datum/material/iron=10000, /datum/material/glass=6000)
attack_verb_continuous = list("attacks", "slashes", "saws", "cuts")
attack_verb_simple = list("attack", "slash", "saw", "cut")
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_DEEP_WOUND
tool_behaviour = TOOL_SAW
toolspeed = 1
@@ -233,7 +233,7 @@
toolspeed = 0.5
attack_verb_continuous = list("attacks", "slashes", "saws", "cuts")
attack_verb_simple = list("attack", "slash", "saw", "cut")
- sharpness = IS_SHARP
+ sharpness = SHARP
bleed_force = BLEED_DEEP_WOUND
/obj/item/hacksaw
@@ -252,7 +252,7 @@
custom_materials = list(/datum/material/iron=12000)
attack_verb_continuous = list("attacks", "slashes", "saws", "cuts")
attack_verb_simple = list("attack", "slash", "saw", "cut")
- sharpness = IS_SHARP
+ sharpness = SHARP
tool_behaviour = TOOL_SAW
toolspeed = 2
@@ -358,7 +358,7 @@
light_system = MOVABLE_LIGHT
light_range = 1
light_color = LIGHT_COLOR_GREEN
- sharpness = IS_SHARP_ACCURATE
+ sharpness = SHARP
// It cauterises the wound it causes
bleed_force = 0
diff --git a/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm b/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm
index 8bfb1997822da..7a32176d15f95 100644
--- a/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm
+++ b/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm
@@ -80,7 +80,7 @@
return TRUE
/datum/xenoartifact_trait/minor/sharp/on_init(obj/item/xenoartifact/X)
- X.sharpness = IS_SHARP_ACCURATE
+ X.sharpness = SHARP
X.bleed_force = BLEED_CUT
X.force = X.charge_req*0.12
X.attack_verb_continuous = list("cleaves", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")