From efb1c57bb8d754ea0bb362087626c618c67a52a3 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Fri, 13 Sep 2024 10:50:11 -0400
Subject: [PATCH] sharp / edge / damage mode regex (#6747)
last regex before #6575 , probably
deprecated sharp and edge
---
code/__DEFINES/combat/damage.dm | 4 ++-
code/__HELPERS/unsorted.dm | 22 +++++++-------
.../gamemodes/changeling/powers/armblade.dm | 6 ++--
code/game/gamemodes/cult/cult_items.dm | 3 +-
.../technomancer/devices/shield_armor.dm | 3 +-
code/game/objects/items.dm | 6 ++--
code/game/objects/items/devices/gps.dm | 3 +-
code/game/objects/items/melee/types/misc.dm | 21 +++++--------
.../items/melee/types/ninja_energy_blade.dm | 3 +-
.../melee/types/transforming/energy/axe.dm | 3 +-
.../types/transforming/energy/ionic_rapier.dm | 3 +-
.../objects/items/storage/misc_legacy/misc.dm | 3 +-
code/game/objects/items/tools/screwdriver.dm | 2 +-
code/game/objects/items/tools/wirecutters.dm | 3 +-
.../items/weapons/material/chainsaw.dm | 15 ++++------
.../objects/items/weapons/material/misc.dm | 3 +-
.../objects/items/weapons/material/shards.dm | 4 +--
code/game/objects/items/weapons/stunbaton.dm | 2 --
.../objects/items/weapons/surgery_tools.dm | 18 ++++-------
.../objects/items/weapons/swords_axes_etc.dm | 7 ++---
code/game/objects/obj.dm | 5 ----
code/modules/blob2/overmind/types.dm | 2 +-
code/modules/food/drinks/bottle.dm | 3 +-
code/modules/materials/material_sheets.dm | 4 +--
code/modules/mining/tools/kinetic_crusher.dm | 4 +--
code/modules/mining/tools/mine_items.dm | 15 +++-------
.../mob/living/carbon/carbon_defense.dm | 10 +++----
.../carbon/human/human-defense-legacy.dm | 8 ++---
.../mob/living/living-defense-legacy.dm | 2 +-
.../silicon/robot/dogborg/dog_modules_vr.dm | 3 +-
.../subtypes/mechanical/hivebot/hivebot.dm | 3 +-
.../simple_mob/subtypes/slime/feral/feral.dm | 2 +-
code/modules/paperwork/pen.dm | 9 ++----
code/modules/power/cable.dm | 5 ----
code/modules/power/lighting/lights.dm | 2 +-
.../ballistic/microbattery/revolver_cells.dm | 4 +--
.../projectiles/guns/launcher/crossbow.dm | 6 ++--
.../projectiles/guns/launcher/syringe_gun.dm | 4 +--
.../guns/legacy_vr_guns/gunsword.dm | 8 ++---
.../projectiles/guns/projectile/revolver.dm | 3 +-
.../projectiles/guns/projectile/shotgun.dm | 3 +-
.../projectile/subtypes/beam/beams.dm | 3 +-
.../projectile/subtypes/bullets.dm | 30 +++++++++----------
.../projectile/subtypes/bullets_vr.dm | 1 -
.../projectiles/projectile/subtypes/hook.dm | 2 +-
.../projectiles/projectile/subtypes/pellet.dm | 3 +-
.../projectile/subtypes/special.dm | 3 --
code/modules/projectiles/unsorted/magic.dm | 2 +-
.../reagents/reagent_containers/syringes.dm | 2 +-
code/modules/vore/fluffstuff/custom_items.dm | 11 +------
code/modules/xenoarcheaology/sampling.dm | 2 +-
51 files changed, 107 insertions(+), 191 deletions(-)
diff --git a/code/__DEFINES/combat/damage.dm b/code/__DEFINES/combat/damage.dm
index f2c4aa85ff6..4c8bab21d08 100644
--- a/code/__DEFINES/combat/damage.dm
+++ b/code/__DEFINES/combat/damage.dm
@@ -1,7 +1,7 @@
//* This file is explicitly licensed under the MIT license. *//
//* Copyright (c) 2024 Citadel Station Developers *//
-//? damage types
+//? damage types
//* direct damage types; maps to most systems in the game *//
@@ -42,6 +42,8 @@
/// pulse lasers, etc, basically blows a crater
#define DAMAGE_MODE_ABLATING (1<<2)
/// specifically highly-piercing weapons like bullets, even worse than sharp.
+///
+/// * for pierce-ness checks, 'sharp withot edge' is fine. having this flag is pretty much second tier of piercing.
#define DAMAGE_MODE_PIERCE (1<<3)
/// messy, shredded wounds instead of a clean cut / pierce. strong.
#define DAMAGE_MODE_SHRED (1<<4)
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 20b933d326d..e927cff55b2 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1003,36 +1003,36 @@
return FALSE
/// Whether or not the given item counts as sharp in terms of dealing damage.
+// todo: deprecrated
/proc/is_sharp(obj/O as obj)
if(!O)
return FALSE
- if(O.sharp)
- return TRUE
- if(O.edge)
- return TRUE
if(isitem(O))
var/obj/item/I = O
- if(I.damage_mode & DAMAGE_MODE_SHARP)
- return TRUE
+ return I.damage_mode & (DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE)
+ else if(istype(O, /obj/projectile))
+ var/obj/projectile/proj = O
+ return proj.damage_mode & (DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE)
return FALSE
/// Whether or not the given item counts as cutting with an edge in terms of removing limbs.
+// todo: deprecrated
/proc/has_edge(obj/O as obj)
if(!O)
return FALSE
- if(O.edge)
- return TRUE
if(isitem(O))
var/obj/item/I = O
- if(I.damage_mode & DAMAGE_MODE_EDGE)
- return TRUE
+ return I.damage_mode & (DAMAGE_MODE_EDGE)
+ else if(istype(O, /obj/projectile))
+ var/obj/projectile/proj = O
+ return proj.damage_mode & (DAMAGE_MODE_EDGE)
return FALSE
/// Returns 1 if the given item is capable of popping things like balloons, inflatable barriers, or cutting police tape.
/proc/can_puncture(obj/item/W as obj) //For the record, WHAT THE HELL IS THIS METHOD OF DOING IT?
if(!W)
return FALSE
- if(W.sharp)
+ if(W.damage_mode & DAMAGE_MODE_SHARP)
return TRUE
return ( \
W.is_screwdriver() || \
diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm
index bc89f0efdef..9946b4d9d0b 100644
--- a/code/game/gamemodes/changeling/powers/armblade.dm
+++ b/code/game/gamemodes/changeling/powers/armblade.dm
@@ -123,8 +123,7 @@
icon_state = "arm_blade"
damage_force = 40
armor_penetration = 15
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
pry = 1
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
@@ -150,8 +149,7 @@
desc = "A grotesque claw made out of bone and flesh that cleaves through people as a hot knife through butter."
icon_state = "ling_claw"
damage_force = 15
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
passive_parry = /datum/passive_parry/melee{
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index ca3ed22aa69..13fc46b27a0 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -10,8 +10,7 @@
drop_sound = 'sound/items/drop/sword.ogg'
pickup_sound = 'sound/items/pickup/sword.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- edge = 1
- sharp = 1
+ damage_mode = DAMAGE_MODE_EDGE | DAMAGE_MODE_SHARP
/obj/item/melee/cultblade/cultify()
return
diff --git a/code/game/gamemodes/technomancer/devices/shield_armor.dm b/code/game/gamemodes/technomancer/devices/shield_armor.dm
index c02a431c540..24a751530f7 100644
--- a/code/game/gamemodes/technomancer/devices/shield_armor.dm
+++ b/code/game/gamemodes/technomancer/devices/shield_armor.dm
@@ -76,8 +76,7 @@
if(istype(damage_source, /obj/projectile))
var/obj/projectile/P = damage_source
- P.sharp = 0
- P.edge = 0
+ P.damage_mode &= ~(DAMAGE_MODE_EDGE | DAMAGE_MODE_SHARP | DAMAGE_MODE_SHRED | DAMAGE_MODE_PIERCE)
P.embed_chance = 0
if(P.agony)
var/agony_blocked = P.agony * (modified_block_percentage / 100)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 4239cb4f903..903c76c9174 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -194,7 +194,7 @@
origin_tech = typelist(NAMEOF(src, origin_tech), origin_tech)
//Potential memory optimization: Making embed chance a getter if unset.
if(embed_chance == EMBED_CHANCE_UNSET)
- if(sharp)
+ if(damage_mode & DAMAGE_MODE_SHARP)
embed_chance = max(5, round(damage_force/w_class))
else
embed_chance = max(5, round(damage_force/(w_class*3)))
@@ -786,7 +786,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
* * strict - require us to be toggled to sharp mode if there's multiple modes of attacking.
*/
/obj/item/proc/is_sharp(strict)
- return sharp || (damage_mode & DAMAGE_MODE_SHARP)
+ return (damage_mode & DAMAGE_MODE_SHARP)
/**
* can be edged; even if not being used as such
@@ -795,7 +795,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
* * strict - require us to be toggled to sharp mode if there's multiple modes of attacking.
*/
/obj/item/proc/is_edge(strict)
- return sharp || (damage_mode & DAMAGE_MODE_EDGE)
+ return (damage_mode & DAMAGE_MODE_EDGE)
/**
* can be piercing; even if not being used as such
diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm
index 009374244b8..a3630e0ebfc 100644
--- a/code/game/objects/items/devices/gps.dm
+++ b/code/game/objects/items/devices/gps.dm
@@ -600,8 +600,7 @@
item_state = "knife"
damage_force = 15
throw_force = 10
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
w_class = WEIGHT_CLASS_NORMAL
origin_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 4)
attack_verb = list("sliced", "chopped", "stabbed", "pierced")
diff --git a/code/game/objects/items/melee/types/misc.dm b/code/game/objects/items/melee/types/misc.dm
index 1b5cacd7ce1..8661f171689 100644
--- a/code/game/objects/items/melee/types/misc.dm
+++ b/code/game/objects/items/melee/types/misc.dm
@@ -61,8 +61,7 @@
damage_force = 30
throw_force = 10
w_class = WEIGHT_CLASS_NORMAL
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
attack_sound = 'sound/weapons/bladeslice.ogg'
can_speak = 1
@@ -155,8 +154,7 @@
damage_force = 30
throw_force = 10
w_class = WEIGHT_CLASS_NORMAL
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
reach = 2
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
attack_sound = 'sound/items/bikehorn.ogg'
@@ -182,8 +180,7 @@
damage_force = 30
throw_force = 10
w_class = WEIGHT_CLASS_NORMAL
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
attack_verb = list("grasped", "torn", "cut", "pierced", "lashed")
attack_sound = 'sound/weapons/bladeslice.ogg'
armor_penetration = 10
@@ -227,8 +224,7 @@
w_class = WEIGHT_CLASS_NORMAL
slot_flags = SLOT_BELT
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut", "chopped")
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
/obj/item/melee/ashlander/elder
name = "elder bone sword"
@@ -313,7 +309,7 @@
damage_force = 8
throw_force = 5
w_class = WEIGHT_CLASS_SMALL
- sharp = 1
+ damage_mode = DAMAGE_MODE_SHARP
//I would like two-handed weapons that don't use our annoying material system, resulting in a "Steel Mjollnir". Drives me crazy.
/obj/item/melee/twohanded
@@ -359,7 +355,6 @@
force_wielded = 75
force_unwielded = 50
w_class = WEIGHT_CLASS_HUGE
- edge = 1
attack_verb = list("attacked", "smashed", "crushed", "wacked", "pounded")
armor_penetration = 50
weight = ITEM_WEIGHT_BASELINE
@@ -529,8 +524,7 @@
src.damage_type = DAMAGE_TYPE_BURN
src.set_weight_class(WEIGHT_CLASS_BULKY)
src.attack_sound = 'sound/items/welder.ogg'
- src.sharp = 1
- src.edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
active = 1
update_icon()
else
@@ -546,10 +540,9 @@
playsound(loc, deac_sound, 50, 1)
src.damage_force = 3
src.damage_type = DAMAGE_TYPE_BRUTE
+ damage_mode = NONE
src.set_weight_class(initial(src.w_class))
src.active = 0
- src.sharp = 0
- src.edge = 0
src.attack_sound = initial(src.attack_sound)
update_icon()
diff --git a/code/game/objects/items/melee/types/ninja_energy_blade.dm b/code/game/objects/items/melee/types/ninja_energy_blade.dm
index c7d110bc483..24ce9eb2ed1 100644
--- a/code/game/objects/items/melee/types/ninja_energy_blade.dm
+++ b/code/game/objects/items/melee/types/ninja_energy_blade.dm
@@ -5,8 +5,7 @@
item_state = "ninja_energy_blade"
damage_force = 40 //Normal attacks deal very high damage - about the same as wielded fire axe
armor_penetration = 100
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
anchored = 1 // Never spawned outside of inventory, should be fine.
throw_force = 1 //Throwing or dropping the item deletes it.
throw_speed = 1
diff --git a/code/game/objects/items/melee/types/transforming/energy/axe.dm b/code/game/objects/items/melee/types/transforming/energy/axe.dm
index 1bbb2202385..175015f0ab0 100644
--- a/code/game/objects/items/melee/types/transforming/energy/axe.dm
+++ b/code/game/objects/items/melee/types/transforming/energy/axe.dm
@@ -11,8 +11,7 @@
w_class = WEIGHT_CLASS_NORMAL
origin_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 4)
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
can_cleave = TRUE
active_damage_force = 60
diff --git a/code/game/objects/items/melee/types/transforming/energy/ionic_rapier.dm b/code/game/objects/items/melee/types/transforming/energy/ionic_rapier.dm
index 16c15a514bb..401b8bae11a 100644
--- a/code/game/objects/items/melee/types/transforming/energy/ionic_rapier.dm
+++ b/code/game/objects/items/melee/types/transforming/energy/ionic_rapier.dm
@@ -8,8 +8,7 @@
item_state = "ionrapier"
active_damage_force = 10
active_throw_force = 3
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
armor_penetration = 0
atom_flags = NOBLOODY
lrange = 2
diff --git a/code/game/objects/items/storage/misc_legacy/misc.dm b/code/game/objects/items/storage/misc_legacy/misc.dm
index 4aa010e76c4..7301f5f5281 100644
--- a/code/game/objects/items/storage/misc_legacy/misc.dm
+++ b/code/game/objects/items/storage/misc_legacy/misc.dm
@@ -84,8 +84,7 @@
icon_state = "survivalknife"
item_state = "knife"
max_combined_volume = WEIGHT_VOLUME_TINY * 3
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
damage_force = 15
throw_force = 15
attack_verb = list("stabbed", "chopped", "cut")
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index 6a063c62cb8..41e66bd2f0a 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -20,7 +20,7 @@
pickup_sound = 'sound/items/pickup/screwdriver.ogg'
materials_base = list(MAT_STEEL = 75)
attack_verb = list("stabbed")
- sharp = 1
+ damage_mode = DAMAGE_MODE_SHARP
tool_speed = 1
var/random_color = TRUE
diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm
index 6378a9be323..964b6a65cd8 100644
--- a/code/game/objects/items/tools/wirecutters.dm
+++ b/code/game/objects/items/tools/wirecutters.dm
@@ -20,8 +20,7 @@
tool_sound = 'sound/items/wirecutter.ogg'
drop_sound = 'sound/items/drop/wirecutter.ogg'
pickup_sound = 'sound/items/pickup/wirecutter.ogg'
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
tool_speed = 1
var/random_color = TRUE
diff --git a/code/game/objects/items/weapons/material/chainsaw.dm b/code/game/objects/items/weapons/material/chainsaw.dm
index 477c05edf2e..7eb98859953 100644
--- a/code/game/objects/items/weapons/material/chainsaw.dm
+++ b/code/game/objects/items/weapons/material/chainsaw.dm
@@ -41,8 +41,7 @@
attack_verb = list("shredded", "ripped", "torn")
playsound(src, 'sound/weapons/chainsaw_startup.ogg',40,1)
damage_force = active_force
- edge = 1
- sharp = 1
+ damage_mode = DAMAGE_MODE_EDGE | DAMAGE_MODE_SHARP
on = 1
update_icon()
else
@@ -53,8 +52,7 @@
attack_verb = list("bluntly hit", "beat", "knocked")
playsound(user, 'sound/weapons/chainsaw_turnoff.ogg',40,1)
damage_force = inactive_force
- edge = 0
- sharp = 0
+ damage_mode = initial(damage_mode)
on = 0
update_icon()
@@ -125,8 +123,7 @@
damage_force = 30
throw_force = 10
w_class = WEIGHT_CLASS_NORMAL
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
attack_sound = 'sound/weapons/chainsaw_attack.ogg'
armor_penetration = 30
@@ -147,8 +144,7 @@
attack_verb = list("shredded", "ripped", "torn")
playsound(src, 'sound/weapons/chainsaw_startup.ogg',40,1)
damage_force = active_force
- edge = 1
- sharp = 1
+ damage_mode = DAMAGE_MODE_EDGE | DAMAGE_MODE_SHARP
on = 1
update_icon()
else
@@ -159,8 +155,7 @@
attack_verb = list("bluntly hit", "beat", "knocked")
playsound(user, 'sound/weapons/chainsaw_turnoff.ogg',40,1)
damage_force = inactive_force
- edge = 0
- sharp = 0
+ damage_mode = initial(damage_mode)
on = 0
update_icon()
diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm
index 83e4e728a9d..fb12e25c424 100644
--- a/code/game/objects/items/weapons/material/misc.dm
+++ b/code/game/objects/items/weapons/material/misc.dm
@@ -1,7 +1,6 @@
/obj/item/material/harpoon
name = "harpoon"
- sharp = 1
- edge = 0
+ damage_mode = DAMAGE_MODE_SHARP
desc = "A common design throughout the galaxy, this is a metal spear used for hunting fish (or people in voidsuits, to devestating effect)."
icon_state = "harpoon"
item_state = "harpoon"
diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm
index 2ef03eb8add..dac7280dfc0 100644
--- a/code/game/objects/items/weapons/material/shards.dm
+++ b/code/game/objects/items/weapons/material/shards.dm
@@ -89,11 +89,11 @@
if(gloves && !protected_hands)
to_chat(user, "\The [src] partially cuts into your hand through your gloves as you hit \the [target]!")
- user.apply_damage(light_glove_d + will_break ? break_damage : 0, DAMAGE_TYPE_BRUTE, active_hand, 0, 0, src, src.sharp || (damage_mode & DAMAGE_MODE_SHARP), src.edge || (damage_mode & DAMAGE_MODE_EDGE)) // Ternary to include break damage
+ user.apply_damage(light_glove_d + will_break ? break_damage : 0, DAMAGE_TYPE_BRUTE, active_hand, 0, 0, src, (damage_mode & DAMAGE_MODE_SHARP), (damage_mode & DAMAGE_MODE_EDGE)) // Ternary to include break damage
else if(!gloves)
to_chat(user, "\The [src] cuts into your hand as you hit \the [target]!")
- user.apply_damage(no_glove_d + will_break ? break_damage : 0, DAMAGE_TYPE_BRUTE, active_hand, 0, 0, src, src.sharp || (damage_mode & DAMAGE_MODE_SHARP), src.edge || (damage_mode & DAMAGE_MODE_EDGE))
+ user.apply_damage(no_glove_d + will_break ? break_damage : 0, DAMAGE_TYPE_BRUTE, active_hand, 0, 0, src, (damage_mode & DAMAGE_MODE_SHARP), (damage_mode & DAMAGE_MODE_EDGE))
if(will_break && src.loc == user) // If it's not in our hand anymore
user.visible_message("[user] hit \the [target] with \the [src], shattering it!", "You shatter \the [src] in your hand!")
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index add625fde68..843dbb53e74 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -8,8 +8,6 @@
rad_flags = RAD_BLOCK_CONTENTS
slot_flags = SLOT_BELT
damage_force = 15
- sharp = 0
- edge = 0
throw_force = 7
atom_flags = NOCONDUCT
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index 8877442b964..800244bff4c 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -81,8 +81,7 @@
desc = "Cut, cut, and once more cut."
icon_state = "scalpel"
damage_force = 10.0
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_EARS
throw_force = 5.0
@@ -153,8 +152,7 @@
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
materials_base = list(MAT_STEEL = 20000, MAT_GLASS = 10000)
attack_verb = list("attacked", "slashed", "sawed", "cut")
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
/obj/item/surgical/circular_saw/manager
name = "energetic bone diverter"
@@ -318,8 +316,7 @@
desc = "Finely knapped glass attached to a carved bone by sinew. It seems like it'd be good at cutting."
icon_state = "scalpel_bone"
damage_force = 10.0
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_EARS
throw_force = 5.0
@@ -342,8 +339,7 @@
icon = 'icons/obj/lavaland.dmi'
icon_state = "scalpel_bronze"
damage_force = 10.0
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_EARS
throw_force = 5.0
@@ -373,8 +369,7 @@
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
materials_base = list("bone" = 6000, MAT_GLASS = 4000)
attack_verb = list("attacked", "slashed", "sawed", "cut")
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
/obj/item/surgical/saw_bronze
name = "bronze saw"
@@ -389,8 +384,7 @@
origin_tech = list(TECH_MATERIAL = 1)
materials_base = list("bone" = 6000, MAT_BRONZE = 4000)
attack_verb = list("attacked", "slashed", "sawed", "cut")
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
/obj/item/surgical/bonesetter_primitive
name = "primitive bone setter"
diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm
index 63b12ff5d9c..c1bb323054f 100644
--- a/code/game/objects/items/weapons/swords_axes_etc.dm
+++ b/code/game/objects/items/weapons/swords_axes_etc.dm
@@ -147,8 +147,7 @@
)
item_state = "armblade"
damage_force = 15 // same damage_force as a drill
- sharp = TRUE
- edge = TRUE
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
var/SA_bonus_damage = 35 // 50 total against animals and aberrations.
var/SA_vulnerability = MOB_CLASS_ANIMAL | MOB_CLASS_ABERRATION
@@ -173,8 +172,7 @@
damage_force = 5 // HAVING A STICK JAMMED INTO YOU IS LIKELY BAD FOR YOUR HEALTH // well to be fair most of the damage comes from the embed not the stab
w_class = WEIGHT_CLASS_SMALL
materials_base = list(MAT_STEEL = 2500)
- sharp = TRUE
- edge = TRUE
+ damage_mode = DAMAGE_MODE_EDGE | DAMAGE_MODE_SHARP
icon_state = "embed_spike"
item_icons = list(
SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_material.dmi',
@@ -312,7 +310,6 @@
damage_force = 15
damage_tier = MELEE_TIER_MEDIUM
slot_flags = SLOT_BACK
- sharp = 1
attack_sound = "swing_hit"
attack_verb = list("smashed", "slammed", "whacked", "thwacked")
icon_state = "bostaff0"
diff --git a/code/game/objects/obj.dm b/code/game/objects/obj.dm
index 8784f12371f..848001c470c 100644
--- a/code/game/objects/obj.dm
+++ b/code/game/objects/obj.dm
@@ -203,11 +203,6 @@
/// Set when a player renames a renamable object.
var/renamed_by_player = FALSE
var/w_class // Size of the object.
- //! LEGACY: DO NOT USE
- var/sharp = 0 // whether this object cuts
- //! LEGACY: DO NOT USE
- var/edge = 0 // whether this object is more likely to dismember
- //! LEGACY: DO NOT USE
var/pry = 0 //Used in attackby() to open doors
//! LEGACY: DO NOT USE
var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING!
diff --git a/code/modules/blob2/overmind/types.dm b/code/modules/blob2/overmind/types.dm
index ec8ba27683b..58a1fec4868 100644
--- a/code/modules/blob2/overmind/types.dm
+++ b/code/modules/blob2/overmind/types.dm
@@ -629,7 +629,7 @@
if(!H.drop_item_to_ground(I))
B.visible_message(SPAN_DANGER("[name] heaves and pulls at [H]'s [I], struggling to pull it from their grip!"))
return ..()
- if((I.sharp || I.edge || (I.damage_mode & (DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE))) && !istype(I, /obj/item/gun))
+ if(((I.damage_mode & (DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE))) && !istype(I, /obj/item/gun))
I.forceMove(get_turf(B)) // Disarmed entirely.
B.visible_message("The [name] heaves, \the [attacker]'s weapon becoming stuck in the churning mass!")
else
diff --git a/code/modules/food/drinks/bottle.dm b/code/modules/food/drinks/bottle.dm
index 606531dcaec..de52e6a5082 100644
--- a/code/modules/food/drinks/bottle.dm
+++ b/code/modules/food/drinks/bottle.dm
@@ -189,8 +189,7 @@
item_state = "beer"
atom_flags = NOCONDUCT
attack_verb = list("stabbed", "slashed", "attacked")
- sharp = 1
- edge = 0
+ damage_mode = DAMAGE_MODE_SHARP
var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken")
/obj/item/reagent_containers/food/drinks/bottle/redeemersbrew
diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm
index 4eab8536f57..8fb9f06f477 100644
--- a/code/modules/materials/material_sheets.dm
+++ b/code/modules/materials/material_sheets.dm
@@ -393,7 +393,7 @@
/obj/item/stack/material/log/attackby(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier)
if(!istype(I) || I.damage_force <= 0)
return ..()
- if(CHECK_MULTIPLE_BITFIELDS(I.damage_mode, DAMAGE_MODE_EDGE | DAMAGE_MODE_SHARP) || (I.edge && I.sharp))
+ if(CHECK_MULTIPLE_BITFIELDS(I.damage_mode, DAMAGE_MODE_EDGE | DAMAGE_MODE_SHARP))
var/time = (3 SECONDS / max(I.damage_force / 10, 1)) * I.tool_speed
user.setClickCooldown(time)
if(do_after(user, time, src) && use(1))
@@ -424,7 +424,7 @@
/obj/item/stack/material/log/ironwood/attackby(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier)
if(!istype(I) || I.damage_force <= 20) //You will need at least PLASTEEL Tools to cut this.
return ..()
- if(CHECK_MULTIPLE_BITFIELDS(I.damage_mode, DAMAGE_MODE_EDGE | DAMAGE_MODE_SHARP) || (I.edge && I.sharp))
+ if(CHECK_MULTIPLE_BITFIELDS(I.damage_mode, DAMAGE_MODE_EDGE | DAMAGE_MODE_SHARP))
var/time = (3 SECONDS / max(I.damage_force / 10, 1)) * I.tool_speed
user.setClickCooldown(time)
if(do_after(user, time, src) && use(1))
diff --git a/code/modules/mining/tools/kinetic_crusher.dm b/code/modules/mining/tools/kinetic_crusher.dm
index 149841982a7..1986137c3c7 100644
--- a/code/modules/mining/tools/kinetic_crusher.dm
+++ b/code/modules/mining/tools/kinetic_crusher.dm
@@ -21,9 +21,7 @@
*/
attack_sound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped")
- sharp = TRUE
- edge = TRUE
- // sharpness = SHARP_EDGED
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
item_action_name = "Toggle Light"
light_wedge = LIGHT_WIDE
// actions_types = list(/datum/action/item_action/toggle_light)
diff --git a/code/modules/mining/tools/mine_items.dm b/code/modules/mining/tools/mine_items.dm
index 0f5ad496300..499d2e7f927 100644
--- a/code/modules/mining/tools/mine_items.dm
+++ b/code/modules/mining/tools/mine_items.dm
@@ -29,7 +29,7 @@
attack_verb = list("hit", "pierced", "sliced", "attacked")
var/drill_sound = 'sound/weapons/Genhit.ogg'
var/drill_verb = "drilling"
- sharp = 1
+ damage_mode = DAMAGE_MODE_SHARP
var/active = 1
var/excavation_amount = 200
@@ -100,8 +100,7 @@
desc = "A rock cutter that uses bursts of hot plasma. You could use it to cut limbs off of xenos! Or, you know, mine stuff."
drill_verb = "cutting"
drill_sound = 'sound/items/Welder.ogg'
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
worth_intrinsic = 175
/obj/item/pickaxe/diamond
@@ -147,7 +146,6 @@
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
attack_verb = list("mined", "pierced", "stabbed", "attacked")
drill_verb = "picking"
- sharp = 1
worth_intrinsic = 75
//Snowflake drill that works like a chainsaw! How fun. Honestly they should probably all work like this or something. I dunno. Might be a fun mining overhaul later.
@@ -194,8 +192,6 @@
playsound(src, 'sound/weapons/chainsaw_startup.ogg',40,1)
damage_force = 15
damage_mode |= DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
- edge = TRUE
- sharp = TRUE
active = TRUE
update_icon()
else
@@ -208,8 +204,6 @@
playsound(user, 'sound/weapons/chainsaw_turnoff.ogg',40,1)
damage_force = 3
damage_mode = initial(damage_mode)
- edge = FALSE
- sharp = FALSE
active = FALSE
update_icon()
@@ -290,8 +284,7 @@
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
materials_base = list(MAT_STEEL = 50)
attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked")
- sharp = 0
- edge = 1
+ damage_mode = DAMAGE_MODE_EDGE
worth_intrinsic = 50
var/digspeed = 40
@@ -304,7 +297,7 @@
throw_force = 12
tool_speed = 0.7
attack_verb = list("slashed", "impaled", "stabbed", "sliced")
- sharp = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
/obj/item/shovel/bronze
name = "bronze shovel"
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 039154fa083..847c11bb9ea 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -102,7 +102,7 @@
// Knifing
/mob/living/carbon/proc/attack_throat(obj/item/W, obj/item/grab/G, mob/user)
- if(!((W.damage_mode & DAMAGE_MODE_EDGE) || W.edge) || !W.damage_force || W.damage_type != DAMAGE_TYPE_BRUTE)
+ if(!(W.damage_mode & DAMAGE_MODE_EDGE) || !W.damage_force || W.damage_type != DAMAGE_TYPE_BRUTE)
return 0 //unsuitable weapon
user.visible_message("\The [user] begins to slit [src]'s throat with \the [W]!")
@@ -123,7 +123,7 @@
var/total_damage = 0
for(var/i in 1 to 3)
var/damage = min(W.damage_force*1.5, 20)*damage_mod
- apply_damage(damage, W.damage_type, "head", 0, sharp=W.sharp||(W.damage_mode & DAMAGE_MODE_EDGE), edge=W.edge||(W.damage_mode & DAMAGE_MODE_EDGE))
+ apply_damage(damage, W.damage_type, "head", 0, sharp = (W.damage_mode & DAMAGE_MODE_EDGE), edge = (W.damage_mode & DAMAGE_MODE_EDGE))
total_damage += damage
var/oxyloss = total_damage
@@ -150,13 +150,13 @@
/mob/living/carbon/proc/shank_attack(obj/item/W, obj/item/grab/G, mob/user, hit_zone)
- if(!(W.sharp || (W.damage_mode & DAMAGE_MODE_SHARP)) || !W.damage_force || W.damage_type != DAMAGE_TYPE_BRUTE)
+ if(!(W.damage_mode & DAMAGE_MODE_SHARP) || !W.damage_force || W.damage_type != DAMAGE_TYPE_BRUTE)
return 0 //unsuitable weapon
user.visible_message("\The [user] plunges \the [W] into \the [src]!")
var/damage = shank_armor_helper(W, G, user)
- apply_damage(damage, W.damage_type, "torso", 0, sharp=W.sharp||(W.damage_mode & DAMAGE_MODE_EDGE), edge=W.edge||(W.damage_mode & DAMAGE_MODE_EDGE))
+ apply_damage(damage, W.damage_type, "torso", 0, sharp = (W.damage_mode & DAMAGE_MODE_EDGE), edge = (W.damage_mode & DAMAGE_MODE_EDGE))
if(W.attack_sound)
playsound(loc, W.attack_sound, 50, 1, -1)
@@ -168,7 +168,7 @@
/mob/living/carbon/proc/shank_armor_helper(obj/item/W, obj/item/grab/G, mob/user)
var/damage = W.damage_force
var/damage_mod = 1
- if(W.edge || (W.damage_mode & DAMAGE_MODE_EDGE))
+ if(W.damage_mode & DAMAGE_MODE_EDGE)
damage = damage * 1.25 //small damage bonus for having sharp and edge
var/obj/item/clothing/suit/worn_suit
diff --git a/code/modules/mob/living/carbon/human/human-defense-legacy.dm b/code/modules/mob/living/carbon/human/human-defense-legacy.dm
index cc719d39f3c..5e0f68cf84e 100644
--- a/code/modules/mob/living/carbon/human/human-defense-legacy.dm
+++ b/code/modules/mob/living/carbon/human/human-defense-legacy.dm
@@ -321,7 +321,7 @@
if(isitem(AM))
var/obj/item/impacting_item = AM
dtype = impacting_item.damage_type
-
+
var/throw_damage = O.throw_force * TT.get_damage_multiplier(src)
var/zone
@@ -412,7 +412,7 @@
if(!O || !src) return
- if(O.loc == src && O.sharp) //Projectile is embedded and suitable for pinning.
+ if(O.loc == src && is_sharp(O)) //Projectile is embedded and suitable for pinning.
var/turf/T = near_wall(dir,2)
if(T)
forceMove(T)
@@ -439,7 +439,7 @@
// Alright, our hand works? Time to try the catching.
var/catch_chance = 90 // Default 90% catch rate
- if(O.sharp)
+ if(is_sharp(O))
catch_chance -= 50 // Catching knives is hard
catch_chance -= get_accuracy_penalty() // Same issues with shooting a gun, or swinging a weapon
@@ -553,7 +553,7 @@
var/damage = shank_armor_helper(W, G, user)
var/obj/item/organ/external/chest = get_organ(hit_zone)
- if(W.edge || (W.damage_mode & DAMAGE_MODE_EDGE))
+ if(W.damage_mode & DAMAGE_MODE_EDGE)
organ_chance = 75
user.next_move = world.time + 20
user.visible_message("\The [user] begins to twist \the [W] around inside [src]'s [chest]!")
diff --git a/code/modules/mob/living/living-defense-legacy.dm b/code/modules/mob/living/living-defense-legacy.dm
index f6e64eaed3a..fa82ae3cf12 100644
--- a/code/modules/mob/living/living-defense-legacy.dm
+++ b/code/modules/mob/living/living-defense-legacy.dm
@@ -293,7 +293,7 @@
if(!O || !src)
return
- if(O.sharp) //Projectile is suitable for pinning.
+ if(is_sharp(O)) //Projectile is suitable for pinning.
if(soaked >= round(throw_damage*0.8))
return
diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm
index 30f9696a308..c061d3a0c49 100644
--- a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm
+++ b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm
@@ -335,8 +335,7 @@
icon_state = "swordtail"
desc = "A glowing pink dagger normally attached to the end of a cyborg's tail. It appears to be extremely sharp."
damage_force = 20 //Takes 5 hits to 100-0
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
throw_force = 0 //This shouldn't be thrown in the first place.
attack_sound = 'sound/weapons/blade1.ogg'
attack_verb = list("slashed", "stabbed", "jabbed", "mauled", "sliced")
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm
index dc0d7a6f28b..bb7d0526eee 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm
@@ -56,8 +56,7 @@
/obj/projectile/bullet/hivebot
damage_force = 10
damage_type = DAMAGE_TYPE_BRUTE
- sharp = FALSE
- edge = FALSE
+ damage_mode = NONE
/mob/living/simple_mob/mechanical/hivebot/swarm
name = "swarm hivebot"
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm b/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm
index f96303e4280..394c54caed3 100644
--- a/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm
@@ -71,7 +71,7 @@
speed = 7.5 * WORLD_ICON_SIZE
icon_scale_x = 2 // It hits like a truck.
icon_scale_y = 2
- sharp = TRUE
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_PIERCE
/obj/projectile/icicle/on_impact(atom/target, impact_flags, def_zone, efficiency)
. = ..()
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 7315a0a90a8..4c69cc9342f 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -185,11 +185,7 @@
embed_chance = active_embed_chance
damage_force = active_force
throw_force = active_throwforce
-
-
-
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
set_weight_class(active_w_class)
playsound(src, 'sound/weapons/saberon.ogg', 15, 1)
damage_type = DAMAGE_TYPE_SEARING
@@ -211,8 +207,7 @@
embed_chance = initial(embed_chance)
damage_force = initial(damage_force)
throw_force = initial(throw_force)
- sharp = initial(sharp)
- edge = initial(edge)
+ damage_mode = initial(damage_mode)
set_weight_class(initial(w_class))
damage_type = DAMAGE_TYPE_BRUTE
item_flags &= ~ITEM_THROW_UNCATCHABLE
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index e0d015625a9..079aaea6ac9 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -979,11 +979,6 @@ GLOBAL_LIST_INIT(possible_cable_coil_colours, list(
/obj/item/stack/cable_coil/alien/Initialize(mapload, new_amount, merge, param_color)
. = ..()
- if(embed_chance == -1) //From /obj/item, don't want to do what the normal cable_coil does
- if(sharp)
- embed_chance = damage_force/w_class
- else
- embed_chance = damage_force/(w_class*3)
update_icon()
remove_obj_verb(src, /obj/item/stack/cable_coil/verb/make_restraint)
diff --git a/code/modules/power/lighting/lights.dm b/code/modules/power/lighting/lights.dm
index cd1dddcda2f..1e5992b37e1 100644
--- a/code/modules/power/lighting/lights.dm
+++ b/code/modules/power/lighting/lights.dm
@@ -279,7 +279,7 @@
)
status = LIGHT_BROKEN
damage_force = 5
- sharp = 1
+ damage_mode |= DAMAGE_MODE_SHARP
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, TRUE)
update_icon()
diff --git a/code/modules/projectiles/guns/ballistic/microbattery/revolver_cells.dm b/code/modules/projectiles/guns/ballistic/microbattery/revolver_cells.dm
index dd98d6edcfe..6eaa9bab62c 100644
--- a/code/modules/projectiles/guns/ballistic/microbattery/revolver_cells.dm
+++ b/code/modules/projectiles/guns/ballistic/microbattery/revolver_cells.dm
@@ -41,7 +41,7 @@
agony = 20
pellets = 6 //number of pellets
embed_chance = 0
- sharp = 0
+ damage_mode = NONE
damage_flag = ARMOR_MELEE
/obj/item/ammo_casing/microbattery/combat/ion
@@ -61,7 +61,7 @@
nodamage = 1
agony = 5
embed_chance = 0
- sharp = 0
+ damage_mode = NONE
damage_flag = ARMOR_MELEE
/obj/projectile/bullet/stripper/on_impact(atom/target, impact_flags, def_zone, efficiency)
diff --git a/code/modules/projectiles/guns/launcher/crossbow.dm b/code/modules/projectiles/guns/launcher/crossbow.dm
index 6738cc275a1..87f550386ac 100644
--- a/code/modules/projectiles/guns/launcher/crossbow.dm
+++ b/code/modules/projectiles/guns/launcher/crossbow.dm
@@ -10,8 +10,7 @@
pickup_sound = 'sound/items/pickup/sword.ogg'
throw_force = 8
w_class = WEIGHT_CLASS_NORMAL
- sharp = 1
- edge = 0
+ damage_mode = DAMAGE_MODE_SHARP
/obj/item/arrow/proc/removed() //Helper for metal rods falling apart.
return
@@ -19,8 +18,7 @@
/obj/item/spike
name = "alloy spike"
desc = "It's about a foot of weird silver metal with a wicked point."
- sharp = 1
- edge = 0
+ damage_mode = DAMAGE_MODE_SHARP
throw_force = 5
w_class = WEIGHT_CLASS_SMALL
icon = 'icons/obj/weapons.dmi'
diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm
index 4461b6a2c85..53d2e8aee2d 100644
--- a/code/modules/projectiles/guns/launcher/syringe_gun.dm
+++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm
@@ -23,7 +23,7 @@
return
syringe = I
to_chat(user, "You carefully insert [syringe] into [src].")
- sharp = 1
+ damage_mode |= DAMAGE_MODE_SHARP
name = "syringe dart"
update_icon()
@@ -36,7 +36,7 @@
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
user.grab_item_from_interacted_with(syringe, src)
syringe = null
- sharp = initial(sharp)
+ damage_mode &= ~DAMAGE_MODE_SHARP
name = initial(name)
update_icon()
diff --git a/code/modules/projectiles/guns/legacy_vr_guns/gunsword.dm b/code/modules/projectiles/guns/legacy_vr_guns/gunsword.dm
index 602c2d9913c..359c891654a 100644
--- a/code/modules/projectiles/guns/legacy_vr_guns/gunsword.dm
+++ b/code/modules/projectiles/guns/legacy_vr_guns/gunsword.dm
@@ -49,8 +49,6 @@
var/active_throwforce = 20
var/active_w_class = WEIGHT_CLASS_BULKY
var/active_embed_chance = 0 //In the off chance one of these is supposed to embed, you can just tweak this var
- sharp = 0
- edge = 0
armor_penetration = 50
atom_flags = NOBLOODY
var/lrange = 2
@@ -67,8 +65,7 @@
embed_chance = active_embed_chance
damage_force = active_force
throw_force = active_throwforce
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
set_weight_class(active_w_class)
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
set_light(lrange, lpower, lcolor)
@@ -86,8 +83,7 @@
embed_chance = initial(embed_chance)
damage_force = initial(damage_force)
throw_force = initial(throw_force)
- sharp = initial(sharp)
- edge = initial(edge)
+ damage_mode = initial(damage_mode)
set_weight_class(initial(w_class))
set_light(0,0)
attack_verb = list()
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index 66e7d6bf471..73c2d28eb98 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -58,8 +58,7 @@
caliber = /datum/ammo_caliber/a38
ammo_type = /obj/item/ammo_casing/a38
damage_force = 15
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
/obj/item/gun/ballistic/revolver/detective
name = "revolver"
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 96bd6b3fbd2..f2c8a944a3e 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -318,8 +318,7 @@
damage_force = 25
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_OCCULT = 1)
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
holy = TRUE
/obj/item/gun/ballistic/shotgun/underslung
diff --git a/code/modules/projectiles/projectile/subtypes/beam/beams.dm b/code/modules/projectiles/projectile/subtypes/beam/beams.dm
index b0839452036..7a95311c1a2 100644
--- a/code/modules/projectiles/projectile/subtypes/beam/beams.dm
+++ b/code/modules/projectiles/projectile/subtypes/beam/beams.dm
@@ -139,7 +139,7 @@
muzzle_type = /obj/effect/projectile/muzzle/darkmatter
tracer_type = /obj/effect/projectile/tracer/darkmatter
- impact_type = /obj/effect/projectile/impact/darkmatter
+ impact_type = /obj/effect/projectile/impact/darkmatter
/obj/projectile/beam/emitter
name = "emitter beam"
@@ -330,7 +330,6 @@
icon_state = "laser"
damage_force = 15
damage_type = DAMAGE_TYPE_ELECTROCUTE //You should be safe inside a voidsuit
- sharp = FALSE //"Wide" spectrum beam
light_color = "#A9980A"
excavation_amount = 200 // Good at shooting rocks
diff --git a/code/modules/projectiles/projectile/subtypes/bullets.dm b/code/modules/projectiles/projectile/subtypes/bullets.dm
index 69ca1e19592..9e0667d7326 100644
--- a/code/modules/projectiles/projectile/subtypes/bullets.dm
+++ b/code/modules/projectiles/projectile/subtypes/bullets.dm
@@ -7,7 +7,7 @@
nodamage = 0
damage_flag = ARMOR_BULLET
embed_chance = 20 //Modified in the actual embed process, but this should keep embed chance about the same
- sharp = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_PIERCE
projectile_type = PROJECTILE_TYPE_KINETIC
muzzle_type = /obj/effect/projectile/muzzle/bullet
@@ -123,23 +123,22 @@
embed_chance = -1
holy = TRUE
-/obj/projectile/bullet/pistol/rubber/strong // "Rubber" bullets for high power pistols.
- fire_sound = 'sound/weapons/weaponsounds_heavypistolshot.ogg' // Rubber shots have less powder, but these still have more punch than normal rubber shot.
- damage_force = 10
- agony = 60
- embed_chance = 0
- sharp = 0
- damage_flag = ARMOR_MELEE
-
/obj/projectile/bullet/pistol/rubber // "Rubber" bullets for all other pistols.
name = "rubber bullet"
damage_force = 5
agony = 40
embed_chance = 0
- sharp = 0
+ damage_mode = NONE
damage_flag = ARMOR_MELEE
fire_sound ='sound/weapons/weaponsounds_smallpistolshot.ogg' // It may be rubber shots but it's still a gun homie it shouldn't be as pathetic as it was
+/obj/projectile/bullet/pistol/rubber/strong // "Rubber" bullets for high power pistols.
+ fire_sound = 'sound/weapons/weaponsounds_heavypistolshot.ogg' // Rubber shots have less powder, but these still have more punch than normal rubber shot.
+ damage_force = 10
+ agony = 60
+ embed_chance = 0
+ damage_flag = ARMOR_MELEE
+
/obj/projectile/bullet/pistol/spin // Special weak ammo for Service Spin mode.
fire_sound = 'sound/weapons/weaponsounds_smallpistolshot.ogg'
damage_force = 5
@@ -160,7 +159,7 @@
damage_force = 20
agony = 60
embed_chance = 0
- sharp = 0
+ damage_mode = NONE
damage_flag = ARMOR_MELEE
//Should do about 80 damage at 1 tile distance (adjacent), and 50 damage at 3 tiles distance.
@@ -207,7 +206,7 @@
fire_sound = 'sound/weapons/gunshot/gunshot_tech_huge.ogg'
damage_force = 15
embed_chance = 0
- sharp = 0
+ damage_mode = NONE
damage_flag = ARMOR_MELEE
combustion = FALSE
@@ -339,7 +338,7 @@
fire_sound = 'sound/soundbytes/effects/explosion/explosion1.ogg'
damage_force = 20
embed_chance = 0
- edge = 1
+ damage_mode = DAMAGE_MODE_EDGE
/obj/projectile/bullet/burstbullet/on_impact(atom/target, impact_flags, def_zone, efficiency)
. = ..()
@@ -353,7 +352,6 @@
fire_sound = 'sound/soundbytes/effects/explosion/explosion1.ogg'
damage_force = 20
embed_chance = 0
- edge = 1
SA_bonus_damage = 40 // 60 total damage against demons.
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
holy = TRUE
@@ -522,7 +520,7 @@
damage_force = 0
nodamage = 1
embed_chance = 0
- sharp = 0
+ damage_mode = NONE
incendiary = 1
flammability = 4
@@ -539,7 +537,7 @@
damage_force = 0
nodamage = 1
embed_chance = 0
- sharp = 0
+ damage_mode = NONE
/obj/projectile/bullet/blank/cap/process(delta_time)
loc = null
diff --git a/code/modules/projectiles/projectile/subtypes/bullets_vr.dm b/code/modules/projectiles/projectile/subtypes/bullets_vr.dm
index d0fbfd4ed02..72a7e83da26 100644
--- a/code/modules/projectiles/projectile/subtypes/bullets_vr.dm
+++ b/code/modules/projectiles/projectile/subtypes/bullets_vr.dm
@@ -2,7 +2,6 @@
damage_force = 10
agony = 60
embed_chance = 0
- sharp = 0
damage_flag = ARMOR_MELEE
/obj/projectile/energy/flash/strong
diff --git a/code/modules/projectiles/projectile/subtypes/hook.dm b/code/modules/projectiles/projectile/subtypes/hook.dm
index 0929b49a84d..65eeec07a86 100644
--- a/code/modules/projectiles/projectile/subtypes/hook.dm
+++ b/code/modules/projectiles/projectile/subtypes/hook.dm
@@ -40,7 +40,7 @@
if(INTENT_HARM)
damage_flag = ARMOR_BULLET
damage_force *= 3
- sharp = 1
+ damage_mode |= DAMAGE_MODE_SHARP
agony = 20
if(INTENT_GRAB)
damage_flag = ARMOR_MELEE
diff --git a/code/modules/projectiles/projectile/subtypes/pellet.dm b/code/modules/projectiles/projectile/subtypes/pellet.dm
index 5be41a1006a..3335b3859ba 100644
--- a/code/modules/projectiles/projectile/subtypes/pellet.dm
+++ b/code/modules/projectiles/projectile/subtypes/pellet.dm
@@ -120,8 +120,7 @@
name = "stingball shrapnel"
damage_force = 3
agony = 8
- sharp = FALSE
- edge = FALSE
+ damage_mode = NONE
damage_flag = ARMOR_MELEE
/obj/projectile/bullet/pellet/fragment/rubber/strong
diff --git a/code/modules/projectiles/projectile/subtypes/special.dm b/code/modules/projectiles/projectile/subtypes/special.dm
index 7eef692d2f9..4b12b1b7085 100644
--- a/code/modules/projectiles/projectile/subtypes/special.dm
+++ b/code/modules/projectiles/projectile/subtypes/special.dm
@@ -41,9 +41,6 @@
icon_state= "bolter"
damage_force = 50
damage_flag = ARMOR_BULLET
- sharp = 1
- edge = 1
-
/obj/projectile/bullet/gyro/on_impact(atom/target, impact_flags, def_zone, efficiency)
. = ..()
if(. & PROJECTILE_IMPACT_FLAGS_UNCONDITIONAL_ABORT)
diff --git a/code/modules/projectiles/unsorted/magic.dm b/code/modules/projectiles/unsorted/magic.dm
index 2783e38b19d..591456b2298 100644
--- a/code/modules/projectiles/unsorted/magic.dm
+++ b/code/modules/projectiles/unsorted/magic.dm
@@ -309,7 +309,7 @@
icon_state = "lavastaff"
damage_force = 15
damage_type = DAMAGE_TYPE_BURN
- sharp = TRUE
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
magic = TRUE
/obj/projectile/magic/spellblade/on_impact(atom/target, impact_flags, def_zone, efficiency)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 0d68bfa56c6..7e3e8033072 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -14,7 +14,7 @@
volume = 15
w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_EARS
- sharp = 1
+ damage_mode = DAMAGE_MODE_SHARP
integrity_flags = INTEGRITY_ACIDPROOF
rad_flags = RAD_NO_CONTAMINATE
item_flags = ITEM_NOBLUDGEON | ITEM_ENCUMBERS_WHILE_HELD | ITEM_EASY_LATHE_DECONSTRUCT
diff --git a/code/modules/vore/fluffstuff/custom_items.dm b/code/modules/vore/fluffstuff/custom_items.dm
index efcccd15205..692171b3e86 100644
--- a/code/modules/vore/fluffstuff/custom_items.dm
+++ b/code/modules/vore/fluffstuff/custom_items.dm
@@ -1138,8 +1138,6 @@
icon_state = "stunstaff00"
var/base_icon = "stunstaff"
damage_force = 5
- sharp = 0
- edge = 0
throw_force = 7
w_class = WEIGHT_CLASS_HUGE
origin_tech = list(TECH_COMBAT = 2)
@@ -1234,8 +1232,6 @@
var/active_throwforce
var/active_w_class
var/active_embed_chance = 0
- sharp = 0
- edge = 0
/obj/item/melee/fluffstuff/proc/activate(mob/living/user)
if(active)
@@ -1244,8 +1240,6 @@
embed_chance = active_embed_chance
damage_force = active_force
throw_force = active_throwforce
- sharp = 1
- edge = 1
set_weight_class(active_w_class)
playsound(user, 'sound/weapons/sparkle.ogg', 50, 1)
@@ -1257,8 +1251,6 @@
embed_chance = initial(embed_chance)
damage_force = initial(damage_force)
throw_force = initial(throw_force)
- sharp = initial(sharp)
- edge = initial(edge)
set_weight_class(initial(w_class))
/obj/item/melee/fluffstuff/attack_self(mob/user)
@@ -1321,8 +1313,7 @@
..()
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
icon_state = "[active_state]_sharp"
damage_type = DAMAGE_TYPE_BRUTE
diff --git a/code/modules/xenoarcheaology/sampling.dm b/code/modules/xenoarcheaology/sampling.dm
index be7e5bce0a5..39f201dd381 100644
--- a/code/modules/xenoarcheaology/sampling.dm
+++ b/code/modules/xenoarcheaology/sampling.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "sliver1"
w_class = WEIGHT_CLASS_TINY
- sharp = 1
+ damage_mode = DAMAGE_MODE_SHARP
var/datum/geosample/geological_data
/obj/item/rocksliver/Initialize(mapload)