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)