From baafa32b59863581e2ddc58f2b8b80aa3c8bff50 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Fri, 5 Jul 2024 19:06:22 +0000
Subject: [PATCH 1/6] start
---
code/__DEFINES/combat/armor.dm | 60 ++++++-----
code/__DEFINES/inventory/carry_weight.dm | 128 ++++++++++++-----------
2 files changed, 102 insertions(+), 86 deletions(-)
diff --git a/code/__DEFINES/combat/armor.dm b/code/__DEFINES/combat/armor.dm
index f57d5e4f6f22..a1b1e9f50cb3 100644
--- a/code/__DEFINES/combat/armor.dm
+++ b/code/__DEFINES/combat/armor.dm
@@ -76,37 +76,49 @@ GLOBAL_REAL_LIST(armor_enums) = list(
//? melee
-#define MELEE_TIER_DEFAULT ARMOR_TIER_DEFAULT
+#define MELEE_TIER_UNARMED_DEFAULT ARMOR_TIER_LAUGHABLE
+#define MELEE_TIER_UNARMED_FISTS ARMOR_TIER_LAUGHABLE
+#define MELEE_TIER_UNARMED_CLAW ARMOR_TIER_LOW
+#define MELEE_TIER_LIGHT ARMOR_TIER_BELOW
+#define MELEE_TIER_MEDIUM ARMOR_TIER_NORMAL
+#define MELEE_TIER_HEAVY ARMOR_TIER_ABOVE
+#define MELEE_TIER_EXTREME ARMOR_TIER_HIGH
-#define MELEE_TIER_UNARMED_DEFAULT ARMOR_TIER_LOW
-#define MELEE_TIER_UNARMED_FISTS ARMOR_TIER_LOW
-#define MELEE_TIER_UNARMED_CLAW ARMOR_TIER_BELOW
-#define MELEE_TIER_LIGHT ARMOR_TIER_DEFAULT
-#define MELEE_TIER_MEDIUM ARMOR_TIER_ABOVE
-#define MELEE_TIER_HEAVY ARMOR_TIER_HIGH
-#define MELEE_TIER_EXTREME ARMOR_TIER_OVERWHELMING
+#define MELEE_TIER_DEFAULT MELEE_TIER_LIGHT
//? bullet
-#define BULLET_TIER_DEFAULT ARMOR_TIER_DEFAULT
-
-#define BULLET_TIER_LAUGHABLE ARMOR_TIER_BELOW //! super improvised rounds / pistols / whatever.
-#define BULLET_TIER_LOW ARMOR_TIER_DEFAULT //! pistols
-#define BULLET_TIER_MEDIUM ARMOR_TIER_ABOVE //! smgs
-#define BULLET_TIER_HIGH ARMOR_TIER_HIGH //! rifles
-#define BULLET_TIER_EXTREME ARMOR_TIER_OVERWHELMING //! lmgs, light mech weapons
-#define BULLET_TIER_RIDICULOUS ARMOR_TIER_RIDICULOUS //! heavy mech weapons
+/// super improvised rounds / pistols / whatever.
+#define BULLET_TIER_LAUGHABLE ARMOR_TIER_LOW
+/// pistols
+#define BULLET_TIER_LOW ARMOR_TIER_BELOW
+/// pistols
+#define BULLET_TIER_MEDIUM ARMOR_TIER_NORMAL
+/// rifles
+#define BULLET_TIER_HIGH ARMOR_TIER_ABOVE
+/// lmgs, light mech weapons
+#define BULLET_TIER_EXTREME ARMOR_TIER_HIGH
+/// heavy mech weapons
+#define BULLET_TIER_RIDICULOUS ARMOR_TIER_OVERWHELMING
+
+#define BULLET_TIER_DEFAULT ARMOR_TIER_NORMAL
//? laser
-#define LASER_TIER_DEFAULT ARMOR_TIER_DEFAULT
-
-#define LASER_TIER_LAUGHABLE ARMOR_TIER_BELOW //! improvised laser focis / etc
-#define LASER_TIER_LOW ARMOR_TIER_DEFAULT //! low tier lasers
-#define LASER_TIER_MEDIUM ARMOR_TIER_ABOVE //! laser carbines, energy guns, etc
-#define LASER_TIER_HIGH ARMOR_TIER_HIGH //! x-ray rifles, snipers
-#define LASER_TIER_EXTREME ARMOR_TIER_OVERWHELMING //! mech weapons, usualy
-#define LASER_TIER_RIDICULOUS ARMOR_TIER_RIDICULOUS //! power transmission laser?
+/// improvised laser focis / etc
+#define LASER_TIER_LAUGHABLE ARMOR_TIER_LOW
+/// low tier lasers
+#define LASER_TIER_LOW ARMOR_TIER_LOW
+/// laser carbines, energy guns, etc
+#define LASER_TIER_MEDIUM ARMOR_TIER_NORMAL
+/// x-ray rifles, snipers
+#define LASER_TIER_HIGH ARMOR_TIER_ABOVE
+/// mech weapons, usualy
+#define LASER_TIER_EXTREME ARMOR_TIER_HIGH
+/// power transmission laser?
+#define LASER_TIER_RIDICULOUS ARMOR_TIER_OVERWHELMING
+
+#define LASER_TIER_DEFAULT ARMOR_TIER_NORMAL
//? --- armor calculations ---
diff --git a/code/__DEFINES/inventory/carry_weight.dm b/code/__DEFINES/inventory/carry_weight.dm
index 0b9b086fc2ee..e0ee825caee9 100644
--- a/code/__DEFINES/inventory/carry_weight.dm
+++ b/code/__DEFINES/inventory/carry_weight.dm
@@ -7,21 +7,25 @@
//? encumberence - how hard it is to move with an item, non-recursive
//* CHECK https://www.desmos.com/calculator/o44o3naob2 FOR INFORMATION *//
-//* DO nOT CHANGE ANY CONSTANTS WItHOUT GRAPHING IT OUT FIRST. *//
+//* DO NOT CHANGE ANY CONSTANTS WItHOUT GRAPHING IT OUT FIRST. *//
//? Carry strength - flat strength. you can carry up to this with no penalty.
-#define CARRY_STRENGTH_BASELINE 20
+/// pretty much the base max(weight, encumbrance) someone can carry
+///
+/// * congratulations! 35kg is what soldiers carry into combat. you're all soldiers now! (/s)
+/// * balance your overpowered gamer gear around this, gamers!
+#define CARRY_STRENGTH_BASELINE 35
-#define CARRY_STRENGTH_ADD_HUMAN 1.25
-#define CARRY_STRENGTH_ADD_UNATHI 2.5
-#define CARRY_STRENGTH_ADD_PROTEAN 2.5
-#define CARRY_STRENGTH_ADD_MOTH_LIGHT 1.25
+#define CARRY_STRENGTH_ADD_HUMAN 1.25 * 1.75
+#define CARRY_STRENGTH_ADD_UNATHI 2.5 * 1.75
+#define CARRY_STRENGTH_ADD_PROTEAN 2.5 * 1.75
+#define CARRY_STRENGTH_ADD_MOTH_LIGHT 1.25 * 1.75
#define CARRY_STRENGTH_ADD_MOTH_DARK 0
#define CARRY_STRENGTH_ADD_TAJARAN 0
#define CARRY_STRENGTH_ADD_TESHARI 0
-#define CARRY_STRENGTH_ADD_XENOCHIMERA 2.5
-#define CARRY_STRENGTH_ADD_XENOHYBRID 2.5
+#define CARRY_STRENGTH_ADD_XENOCHIMERA 2.5 * 1.75
+#define CARRY_STRENGTH_ADD_XENOHYBRID 2.5 * 1.75
#define CARRY_STRENGTH_ADD_ALRAUNE 10 //alraune already deal with slowdown, let's give them some big bonus for being slow.
#define CARRY_STRENGTH_ADD_DIONA 20 //hee hoo
@@ -44,9 +48,9 @@
//? Carry equation constants
/// How penalizing the default penalty curve is; lower is weaker slowdowns from overweight.
-#define CARRY_WEIGHT_SCALING 2
+#define CARRY_WEIGHT_SCALING 3.5
/// For now, constant - bias factor; higher = skip more of the curve as soon as weight goes above strength
-#define CARRY_WEIGHT_BIAS 1.2
+#define CARRY_WEIGHT_BIAS 0.6
/// % from 0 to 1 of the curve that is automatically given ; 0.1 = the asymptote is 10%, as opposed to 0% movespeed
#define CARRY_WEIGHT_ASYMPTOTE 0.1
@@ -56,33 +60,33 @@
//* Armor
-#define ITEM_ENCUMBRANCE_ARMOR_ULTRALIGHT 7.5
+#define ITEM_ENCUMBRANCE_ARMOR_ULTRALIGHT 7.5 * 1.75
#define ITEM_ENCUMBRANCE_ARMOR_LIGHT 10
-#define ITEM_ENCUMBRANCE_ARMOR_MEDIUM 15
+#define ITEM_ENCUMBRANCE_ARMOR_MEDIUM 15 * 1.75
#define ITEM_ENCUMBRANCE_ARMOR_HEAVY 20
-#define ITEM_ENCUMBRANCE_ARMOR_SUPERHEAVY 30
-#define ITEM_ENCUMBRANCE_ARMOR_SPECIALIZED 15
-
-#define ITEM_ENCUMBRANCE_ARMOR_ULTRALIGHT_HELMET 1
-#define ITEM_ENCUMBRANCE_ARMOR_LIGHT_HELMET 1.5
-#define ITEM_ENCUMBRANCE_ARMOR_MEDIUM_HELMET 2
-#define ITEM_ENCUMBRANCE_ARMOR_HEAVY_HELMET 2.5
-#define ITEM_ENCUMBRANCE_ARMOR_SUPERHEAVY_HELMET 3
-#define ITEM_ENCUMBRANCE_ARMOR_SPECIALIZED_HELMET 2
-
-#define ITEM_ENCUMBRANCE_ARMOR_ULTRALIGHT_GLOVES 1
-#define ITEM_ENCUMBRANCE_ARMOR_LIGHT_GLOVES 2
-#define ITEM_ENCUMBRANCE_ARMOR_MEDIUM_GLOVES 3
-#define ITEM_ENCUMBRANCE_ARMOR_HEAVY_GLOVES 4
-#define ITEM_ENCUMBRANCE_ARMOR_SUPERHEAVY_GLOVES 5
-#define ITEM_ENCUMBRANCE_ARMOR_SPECIALIZED_GLOVES 3
-
-#define ITEM_ENCUMBRANCE_ARMOR_ULTRALIGHT_BOOTS 2.5
-#define ITEM_ENCUMBRANCE_ARMOR_LIGHT_BOOTS 3.5
-#define ITEM_ENCUMBRANCE_ARMOR_MEDIUM_BOOTS 5
-#define ITEM_ENCUMBRANCE_ARMOR_HEAVY_BOOTS 7.5
+#define ITEM_ENCUMBRANCE_ARMOR_SUPERHEAVY 30 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_SPECIALIZED 15 * 1.75
+
+#define ITEM_ENCUMBRANCE_ARMOR_ULTRALIGHT_HELMET 1 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_LIGHT_HELMET 1.5 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_MEDIUM_HELMET 2 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_HEAVY_HELMET 2.5 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_SUPERHEAVY_HELMET 3 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_SPECIALIZED_HELMET 2 * 1.75
+
+#define ITEM_ENCUMBRANCE_ARMOR_ULTRALIGHT_GLOVES 1 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_LIGHT_GLOVES 2 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_MEDIUM_GLOVES 3 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_HEAVY_GLOVES 4 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_SUPERHEAVY_GLOVES 5 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_SPECIALIZED_GLOVES 3 * 1.75
+
+#define ITEM_ENCUMBRANCE_ARMOR_ULTRALIGHT_BOOTS 2.5 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_LIGHT_BOOTS 3.5 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_MEDIUM_BOOTS 5 * 1.75
+#define ITEM_ENCUMBRANCE_ARMOR_HEAVY_BOOTS 7.5 * 1.75
#define ITEM_ENCUMBRANCE_ARMOR_SUPERHEAVY_BOOTS 10
-#define ITEM_ENCUMBRANCE_ARMOR_SPECIALIZED_BOOTS 5
+#define ITEM_ENCUMBRANCE_ARMOR_SPECIALIZED_BOOTS 5 * 1.75
#define ITEM_ENCUMBRANCE_ARMOR_BIORAD_SUIT 30
#define ITEM_ENCUMBRANCE_ARMOR_BIORAD_HELMET 0
@@ -92,7 +96,7 @@
#define ITEM_ENCUMBRANCE_ARMOR_FIRE_HELMET 0
#define ITEM_ENCUMBRANCE_ARMOR_MEDIEVAL_PLATE 30
-#define ITEM_ENCUMBRANCE_ARMOR_MEDIEVAL_CHAIN 25
+#define ITEM_ENCUMBRANCE_ARMOR_MEDIEVAL_CHAIN 25 * 1.75
#define ITEM_ENCUMBRANCE_ARMOR_ANOMALY 30
#define ITEM_ENCUMBRANCE_ARMOR_ANOMALY_HELMET 0
@@ -102,28 +106,28 @@
/// shoecuffs
#define ITEM_ENCUMBRANCE_SHOES_CUFFED 50
/// magboots off
-#define ITEM_ENCUMBRANCE_SHOES_MAGBOOTS 5
+#define ITEM_ENCUMBRANCE_SHOES_MAGBOOTS 5 * 1.75
/// normal magboots on
#define ITEM_ENCUMBRANCE_SHOES_MAGBOOTS_PULSE 20
/// ce magboots on
-#define ITEM_ENCUMBRANCE_SHOES_MAGBOOTS_PULSE_ADVANCED 7.5
-#define ITEM_ENCUMBRANCE_SHOES_CLOWN 5
-#define ITEM_ENCUMBRANCE_SHOES_FINS 5
-#define ITEM_ENCUMBRANCE_SHOES_GALOSHES 5
+#define ITEM_ENCUMBRANCE_SHOES_MAGBOOTS_PULSE_ADVANCED 7.5 * 1.75
+#define ITEM_ENCUMBRANCE_SHOES_CLOWN 5 * 1.75
+#define ITEM_ENCUMBRANCE_SHOES_FINS 5 * 1.75
+#define ITEM_ENCUMBRANCE_SHOES_GALOSHES 5 * 1.75
//* Factions
-#define ITEM_ENCUMBRANCE_CHANGELING_MAGBOOTS 5
-#define ITEM_ENCUMBRANCE_CHANGELING_MAGBOOTS_PULSE 7.5
-#define ITEM_ENCUMBRANCE_CULT_VOIDSUIT 35
-#define ITEM_ENCUMBRANCE_CULT_VOIDSUIT_HELMET 2.5
+#define ITEM_ENCUMBRANCE_CHANGELING_MAGBOOTS 5 * 1.75
+#define ITEM_ENCUMBRANCE_CHANGELING_MAGBOOTS_PULSE 7.5 * 1.75
+#define ITEM_ENCUMBRANCE_CULT_VOIDSUIT 35 * 1.75
+#define ITEM_ENCUMBRANCE_CULT_VOIDSUIT_HELMET 2.5 * 1.75
//* Spacesuits
-#define ITEM_ENCUMBRANCE_SOFTSUIT 22.5
-#define ITEM_ENCUMBRANCE_SOFTSUIT_HELMET 2.5
+#define ITEM_ENCUMBRANCE_SOFTSUIT 22.5 * 1.75
+#define ITEM_ENCUMBRANCE_SOFTSUIT_HELMET 2.5 * 1.75
-#define ITEM_ENCUMBRANCE_VOIDSUIT 25
+#define ITEM_ENCUMBRANCE_VOIDSUIT 25 * 1.75
#define ITEM_ENCUMBRANCE_VOIDSUIT_HELMET 0
#define ITEM_ENCUMBRANCE_VOIDSUIT_LIGHT 20
#define ITEM_ENCUMBRANCE_VOIDSUIT_HELMET_LIGHT 0
@@ -132,21 +136,21 @@
#define ITEM_ENCUMBRANCE_VOIDSUIT_ULTRALIGHT 20
#define ITEM_ENCUMBRANCE_VOIDSUIT_HELMET_ULTRALIGHT 0
-#define ITEM_ENCUMBRANCE_VOIDSUIT_ANOMALY 22.5
-#define ITEM_ENCUMBRANCE_VOIDSUIT_ANOMALY_HELMET 2.5
+#define ITEM_ENCUMBRANCE_VOIDSUIT_ANOMALY 22.5 * 1.75
+#define ITEM_ENCUMBRANCE_VOIDSUIT_ANOMALY_HELMET 2.5 * 1.75
#define ITEM_ENCUMBRANCE_LEGACY_RIG_LIGHT 20
-#define ITEM_ENCUMBRANCE_LEGACY_RIG 25
+#define ITEM_ENCUMBRANCE_LEGACY_RIG 25 * 1.75
#define ITEM_ENCUMBRANCE_LEGACY_RIG_HEAVY 30
-#define ITEM_ENCUMBRANCE_EMERGENCY_SOFTSUIT 25
+#define ITEM_ENCUMBRANCE_EMERGENCY_SOFTSUIT 25 * 1.75
#define ITEM_ENCUMBRANCE_EMERGENCY_SOFTSUIT_HELMET 0
//* Storage
-#define ITEM_ENCUMBRANCE_STORAGE_BACKPACK 5
-#define ITEM_ENCUMBRANCE_STORAGE_DUFFLEBAG 5
-#define ITEM_ENCUMBRANCE_STORAGE_POUCH_LARGE 5
+#define ITEM_ENCUMBRANCE_STORAGE_BACKPACK 5 * 1.75
+#define ITEM_ENCUMBRANCE_STORAGE_DUFFLEBAG 5 * 1.75
+#define ITEM_ENCUMBRANCE_STORAGE_POUCH_LARGE 5 * 1.75
//* Species
@@ -156,18 +160,18 @@
//* Weapons
-#define ITEM_ENCUMBRANCE_GUN_LIGHT 1.25
-#define ITEM_ENCUMBRANCE_GUN_NORMAL 2.5
-#define ITEM_ENCUMBRANCE_GUN_LARGE 5
-#define ITEM_ENCUMBRANCE_GUN_BULKY 8
-#define ITEM_ENCUMBRANCE_GUN_UNREASONABLE 15
+#define ITEM_ENCUMBRANCE_GUN_LIGHT 1.25 * 1.75
+#define ITEM_ENCUMBRANCE_GUN_NORMAL 2.5 * 1.75
+#define ITEM_ENCUMBRANCE_GUN_LARGE 5 * 1.75
+#define ITEM_ENCUMBRANCE_GUN_BULKY 8 * 1.75
+#define ITEM_ENCUMBRANCE_GUN_UNREASONABLE 15 * 1.75
#define ITEM_ENCUMBRANCE_GUN_RIDICULOUS 30
#define ITEM_ENCUMBRANCE_GUN_VEHICLE 60
-#define ITEM_ENCUMBRANCE_MELEE_SPEAR 7.5
-#define ITEM_ENCUMBRANCE_MELEE_SLEDGEHAMMER 12.5
+#define ITEM_ENCUMBRANCE_MELEE_SPEAR 7.5 * 1.75
+#define ITEM_ENCUMBRANCE_MELEE_SLEDGEHAMMER 12.5 * 1.75
-#define ITEM_ENCUMBRANCE_SHIELD_TOWER 12.5
+#define ITEM_ENCUMBRANCE_SHIELD_TOWER 12.5 * 1.75
//? Item Flat Encumbrance defines
From 2773d10c0ea3945906c41f10aad63a16f1db83e9 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Fri, 5 Jul 2024 19:49:29 +0000
Subject: [PATCH 2/6] start replacements
---
citadel.dme | 17 +-
code/__DEFINES/combat/damage.dm | 30 ++-
code/__DEFINES/damage_organs.dm | 17 --
code/__HELPERS/unsorted.dm | 2 +-
code/controllers/subsystem/throwing.dm | 11 +
code/datums/outfits/ghostrole.dm | 8 +-
code/datums/outfits/horror_killers.dm | 2 +-
code/datums/outfits/outfit.dm | 4 +-
code/datums/outfits/pirates.dm | 4 +-
.../recipe/crafting_recipes/recipes_primal.dm | 2 +-
code/datums/uplink/visible_weapons.dm | 6 +-
code/game/antagonist/outsider/deathsquad.dm | 2 +-
code/game/atoms/movable/movable.dm | 17 +-
code/game/content/factions/special/README.md | 5 +
.../scorian/items/scorian-melee-weapons.dm | 87 ++++++++
.../special/scorian/scorian-faction.dm | 5 +
code/game/content/factions/special/special.dm | 5 +
code/game/gamemodes/sandbox/h_sandbox.dm | 2 +-
code/game/machinery/doors/unpowered.dm | 2 +-
code/game/machinery/doors/windowdoor.dm | 2 +-
code/game/objects/defense.dm | 4 +-
code/game/objects/items.dm | 35 ++--
code/game/objects/items/contraband.dm | 6 +-
code/game/objects/items/storage/belt.dm | 2 +-
code/game/objects/items/storage/lockbox.dm | 2 +-
code/game/objects/items/storage/secure.dm | 2 +-
.../game/objects/items/storage/uplink_kits.dm | 2 +-
code/game/objects/items/tools/switchtool.dm | 4 +-
code/game/objects/items/tools/weldingtool.dm | 43 +++-
.../objects/items/weapons/cigs_lighters.dm | 6 +-
code/game/objects/items/weapons/melee/misc.dm | 87 --------
.../melee/{energy.dm => transforming.dm} | 192 ++++++++++--------
code/game/objects/objs.dm | 5 -
code/game/objects/random/mapping.dm | 6 +-
code/game/objects/random/misc.dm | 4 +-
.../structures/crates_lockers/__closet.dm | 2 +-
.../crates_lockers/closets/gimmick.dm | 4 +-
.../crates_lockers/closets/secure/personal.dm | 2 +-
.../structures/crates_lockers/crates.dm | 2 +-
code/game/turfs/simulated/wall/defense.dm | 4 +-
.../game/turfs/simulated/wall/wall_attacks.dm | 6 +-
code/modules/admin/topic.dm | 2 +-
code/modules/awaymissions/loot_vr.dm | 4 +-
code/modules/cargo/supplypacks/contraband.dm | 2 +-
code/modules/clothing/spacesuits/alien.dm | 2 +-
code/modules/clothing/spacesuits/syndi.dm | 2 +-
code/modules/clothing/spacesuits/void/merc.dm | 18 +-
.../clothing/spacesuits/void/xeno/tajara.dm | 4 +-
.../clothing/under/accessories/holster.dm | 2 +-
code/modules/examine/descriptions/weapons.dm | 2 +-
code/modules/flufftext/Hallucination.dm | 2 +-
code/modules/hardsuits/modules/combat.dm | 6 +-
code/modules/hardsuits/suits/merc.dm | 2 +-
code/modules/loot/packs/weapons.dm | 2 +-
.../{carbon_defense.dm => carbon-defense.dm} | 0
.../living/{defense.dm => living-defense.dm} | 35 ----
.../{mobility.dm => living-mobility.dm} | 3 +
.../robot/robot_modules/station/misc.dm | 4 +-
.../silicon/robot/robot_modules/swarm.dm | 2 +-
.../silicon/robot/robot_modules/syndicate.dm | 4 +-
.../subtypes/humanoid/mercs/mercs.dm | 4 +-
.../simple_mob/subtypes/humanoid/pirates.dm | 12 +-
code/modules/mob/{health.dm => mob-health.dm} | 0
code/modules/mob/{life.dm => mob-life.dm} | 0
.../mob/{mobility.dm => mob-mobility.dm} | 3 +
.../guns/energy/kinetic_accelerator.dm | 4 +-
.../projectiles/guns/energy/particle.dm | 2 +-
.../projectiles/guns/projectile/boltaction.dm | 6 +-
.../projectiles/guns/projectile/shotgun.dm | 2 +-
code/modules/projectiles/projectile.dm | 2 +-
.../modules/projectiles/projectile/animate.dm | 2 +-
code/modules/projectiles/projectile/arc.dm | 2 +-
.../projectiles/projectile/beam/beams.dm | 14 +-
.../projectiles/projectile/beam/beams_vr.dm | 6 +-
code/modules/projectiles/projectile/blob.dm | 6 +-
.../modules/projectiles/projectile/bullets.dm | 20 +-
code/modules/projectiles/projectile/change.dm | 2 +-
code/modules/projectiles/projectile/energy.dm | 20 +-
code/modules/projectiles/projectile/hook.dm | 6 +-
.../projectiles/projectile/magnetic.dm | 2 +-
.../projectiles/projectile/reusable.dm | 2 +-
.../modules/projectiles/projectile/special.dm | 32 +--
code/modules/projectiles/unsorted/magic.dm | 24 +--
code/modules/research/designs/weapons.dm | 4 +-
code/modules/surgery/generic.dm | 2 +-
.../guns/cell_loaded/revolver_cells.dm | 2 +-
code/modules/vore/fluffstuff/guns/pummeler.dm | 2 +-
code/modules/vore/fluffstuff/guns/sickshot.dm | 2 +-
.../xenoarcheaology/artifacts/artifact.dm | 2 +-
maps/away_missions/140x140/zoo.dmm | 2 +-
maps/away_missions/archive/spacebattle.dmm | 4 +-
.../archive/stationCollision.dmm | 2 +-
maps/rift/levels/rift-11-orbital.dmm | 8 +-
.../piratebase_192/levels/piratebase_192.dmm | 6 +-
.../tradeport_140/levels/tradeport_140.dmm | 2 +-
.../tradeport_192/levels/tradeport_192.dmm | 2 +-
maps/templates/admin/dhael_centcom.dmm | 28 +--
maps/templates/admin/ert_base.dmm | 10 +-
maps/templates/admin/kk_mercship.dmm | 12 +-
maps/templates/admin/mercbase.dmm | 12 +-
maps/templates/admin/skipjack.dmm | 2 +-
maps/templates/admin/thunderdome.dmm | 8 +-
.../shuttles/overmaps/generic/cruiser.dmm | 10 +-
.../shuttles/overmaps/generic/shelter_6.dmm | 10 +-
maps/triumph/levels/flagship.dmm | 28 +--
105 files changed, 574 insertions(+), 507 deletions(-)
create mode 100644 code/game/content/factions/special/README.md
create mode 100644 code/game/content/factions/special/scorian/items/scorian-melee-weapons.dm
create mode 100644 code/game/content/factions/special/scorian/scorian-faction.dm
create mode 100644 code/game/content/factions/special/special.dm
rename code/game/objects/items/weapons/melee/{energy.dm => transforming.dm} (76%)
rename code/modules/mob/living/carbon/{carbon_defense.dm => carbon-defense.dm} (100%)
rename code/modules/mob/living/{defense.dm => living-defense.dm} (96%)
rename code/modules/mob/living/{mobility.dm => living-mobility.dm} (97%)
rename code/modules/mob/{health.dm => mob-health.dm} (100%)
rename code/modules/mob/{life.dm => mob-life.dm} (100%)
rename code/modules/mob/{mobility.dm => mob-mobility.dm} (96%)
diff --git a/citadel.dme b/citadel.dme
index d4c3a15ad153..7bf894b3e8c5 100644
--- a/citadel.dme
+++ b/citadel.dme
@@ -1036,6 +1036,9 @@
#include "code\game\content\enigmas\unsorted\telecube.dm"
#include "code\game\content\factions\corporations\corporation.dm"
#include "code\game\content\factions\corporations\nanotrasen\faction.dm"
+#include "code\game\content\factions\special\special.dm"
+#include "code\game\content\factions\special\scorian\scorian-faction.dm"
+#include "code\game\content\factions\special\scorian\items\scorian-melee-weapons.dm"
#include "code\game\content\locations\frontier.dm"
#include "code\game\dna\dna2.dm"
#include "code\game\dna\dna2_domutcheck.dm"
@@ -1834,9 +1837,9 @@
#include "code\game\objects\items\weapons\material\twohanded.dm"
#include "code\game\objects\items\weapons\material\whetstone.dm"
#include "code\game\objects\items\weapons\melee\deflect.dm"
-#include "code\game\objects\items\weapons\melee\energy.dm"
#include "code\game\objects\items\weapons\melee\melee.dm"
#include "code\game\objects\items\weapons\melee\misc.dm"
+#include "code\game\objects\items\weapons\melee\transforming.dm"
#include "code\game\objects\items\weapons\tanks\jetpack.dm"
#include "code\game\objects\items\weapons\tanks\tank_types.dm"
#include "code\game\objects\items\weapons\tanks\tanks.dm"
@@ -3466,18 +3469,18 @@
#include "code\modules\mob\floating_message.dm"
#include "code\modules\mob\gender.dm"
#include "code\modules\mob\grab.dm"
-#include "code\modules\mob\health.dm"
#include "code\modules\mob\hear_say.dm"
#include "code\modules\mob\holder.dm"
#include "code\modules\mob\inventory.dm"
-#include "code\modules\mob\life.dm"
#include "code\modules\mob\login.dm"
#include "code\modules\mob\logout.dm"
+#include "code\modules\mob\mob-health.dm"
+#include "code\modules\mob\mob-life.dm"
+#include "code\modules\mob\mob-mobility.dm"
#include "code\modules\mob\mob.dm"
#include "code\modules\mob\mob_defines.dm"
#include "code\modules\mob\mob_helpers.dm"
#include "code\modules\mob\mob_transformation_simple.dm"
-#include "code\modules\mob\mobility.dm"
#include "code\modules\mob\movement.dm"
#include "code\modules\mob\perspective.dm"
#include "code\modules\mob\physiology.dm"
@@ -3543,17 +3546,17 @@
#include "code\modules\mob\living\damage_procs.dm"
#include "code\modules\mob\living\death.dm"
#include "code\modules\mob\living\default_language.dm"
-#include "code\modules\mob\living\defense.dm"
#include "code\modules\mob\living\health.dm"
#include "code\modules\mob\living\inventory.dm"
#include "code\modules\mob\living\life.dm"
+#include "code\modules\mob\living\living-defense.dm"
+#include "code\modules\mob\living\living-mobility.dm"
#include "code\modules\mob\living\living.dm"
#include "code\modules\mob\living\living_defines.dm"
#include "code\modules\mob\living\living_powers.dm"
#include "code\modules\mob\living\living_vr.dm"
#include "code\modules\mob\living\login.dm"
#include "code\modules\mob\living\logout.dm"
-#include "code\modules\mob\living\mobility.dm"
#include "code\modules\mob\living\movement.dm"
#include "code\modules\mob\living\offense.dm"
#include "code\modules\mob\living\organs.dm"
@@ -3576,8 +3579,8 @@
#include "code\modules\mob\living\bot\secbot.dm"
#include "code\modules\mob\living\bot\SLed209bot.dm"
#include "code\modules\mob\living\carbon\breathe.dm"
+#include "code\modules\mob\living\carbon\carbon-defense.dm"
#include "code\modules\mob\living\carbon\carbon.dm"
-#include "code\modules\mob\living\carbon\carbon_defense.dm"
#include "code\modules\mob\living\carbon\carbon_defines.dm"
#include "code\modules\mob\living\carbon\carbon_movement.dm"
#include "code\modules\mob\living\carbon\carbon_powers.dm"
diff --git a/code/__DEFINES/combat/damage.dm b/code/__DEFINES/combat/damage.dm
index 32d831fed87a..3a68c6338aa6 100644
--- a/code/__DEFINES/combat/damage.dm
+++ b/code/__DEFINES/combat/damage.dm
@@ -3,7 +3,35 @@
//? damage types
-// todo: refactor damage types
+//* direct damage types; maps to most systems in the game *//
+
+#define DAMAGE_TYPE_BRUTE "brute"
+#define DAMAGE_TYPE_BURN "burn"
+
+//* special damage types; only relevant for certain biologies *//
+//* most of these will be reworked in brainmed update *//
+
+/// body toxins / systems instability
+#define DAMAGE_TYPE_TOX "tox"
+/// oxygen deprivation
+#define DAMAGE_TYPE_OXY "oxy"
+/// dna damage
+#define DAMAGE_TYPE_CLONE "clone"
+/// pain
+/// todo: stamina vs pain
+#define DAMAGE_TYPE_HALLOSS "halloss"
+
+//* special hybrid types; processed specially depending on type *//
+
+/// passed to electrocute_act()
+/// todo: remove
+#define DAMAGE_TYPE_ELECTROCUTE "electrocute"
+/// bioacid ; toxins for organics, acid for synthetics
+/// todo: better hybrid type handling
+#define DAMAGE_TYPE_BIOACID "bioacid"
+/// searing; half brute, half bur
+/// todo: better hybrid type handling
+#define DAMAGE_TYPE_SEARING "searing"
//? damage_mode bitfield
diff --git a/code/__DEFINES/damage_organs.dm b/code/__DEFINES/damage_organs.dm
index 2cc7e6f2e2ad..ab7956e8d2cb 100644
--- a/code/__DEFINES/damage_organs.dm
+++ b/code/__DEFINES/damage_organs.dm
@@ -1,20 +1,3 @@
-// Damage things. //TODO: Merge these down to reduce on defines.
-// Way to waste perfectly good damage-type names (BRUTE) on this... If you were really worried about case sensitivity, you could have just used lowertext(damagetype) in the proc.
-#define BRUTE "brute"
-#define BURN "fire"
-#define TOX "tox"
-#define OXY "oxy"
-#define CLONE "clone"
-#define HALLOSS "halloss"
-#define ELECTROCUTE "electrocute"
-#define BIOACID "bioacid"
-#define SEARING "searing"
-
-// todo: these things should be damage modes / flags
-
-#define CUT "cut"
-#define BRUISE "bruise"
-#define PIERCE "pierce"
#define STUN "stun"
#define WEAKEN "weaken"
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index df7c75ef2559..645544a9110b 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1007,7 +1007,7 @@
return FALSE
if(/obj/item/pickaxe/plasmacutter)
return 3800
- if(/obj/item/melee/energy)
+ if(/obj/item/melee/transforming)
return 3500
else
return FALSE
diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm
index 007def420e51..7e3b962c3877 100644
--- a/code/controllers/subsystem/throwing.dm
+++ b/code/controllers/subsystem/throwing.dm
@@ -388,6 +388,17 @@ SUBSYSTEM_DEF(throwing)
/datum/thrownthing/proc/is_pacifistic()
return throw_flags & THROW_AT_IS_GENTLE
+/**
+ * get damage for a target
+ */
+/datum/thrownthing/proc/get_damage_force(atom/target)
+ . = thrownthing.throw_force
+ if(isitem(thrownthing))
+ var/obj/item/I = throwthing
+ if(isnull(.))
+ . = I.damage_force
+ return . * get_damage_multiplier(target)
+
/**
* get damage scaling - default handling
*/
diff --git a/code/datums/outfits/ghostrole.dm b/code/datums/outfits/ghostrole.dm
index a94e292e8b35..37ce2038f0cf 100644
--- a/code/datums/outfits/ghostrole.dm
+++ b/code/datums/outfits/ghostrole.dm
@@ -52,7 +52,7 @@
/datum/outfit/ashlander/priest
name = "Ashlander - Priest"
suit = /obj/item/clothing/suit/ashen_vestment
- belt = /obj/item/melee/ashlander/elder
+ belt = /obj/item/melee/transforming/ashlander_elder
l_pocket = /obj/item/elderstone
//Pirates!
@@ -69,13 +69,13 @@
/datum/outfit/pirate/immigrant
name = "Pirate - Immigrant"
belt = /obj/item/gun/ballistic/pirate
- r_pocket = /obj/item/melee/energy/sword/pirate
+ r_pocket = /obj/item/melee/transforming/sword/pirate
/datum/outfit/pirate/dilettante
name = "Pirate - Dilettante"
uniform = /obj/item/clothing/under/surplus
shoes = /obj/item/clothing/shoes/boots/jackboots
- belt = /obj/item/melee/energy/sword/pirate
+ belt = /obj/item/melee/transforming/sword/pirate
l_hand = /obj/item/shield/makeshift
/datum/outfit/pirate/professional
@@ -85,5 +85,5 @@
shoes = /obj/item/clothing/shoes/boots/jackboots
mask = /obj/item/clothing/mask/balaclava
belt = /obj/item/gun/energy/zip
- r_pocket = /obj/item/melee/energy/sword/pirate
+ r_pocket = /obj/item/melee/transforming/sword/pirate
r_hand = /obj/item/shield/makeshift
diff --git a/code/datums/outfits/horror_killers.dm b/code/datums/outfits/horror_killers.dm
index d28dfa48ff33..ad3dc8a0b4e7 100644
--- a/code/datums/outfits/horror_killers.dm
+++ b/code/datums/outfits/horror_killers.dm
@@ -41,7 +41,7 @@
gloves = /obj/item/clothing/gloves/black
l_ear = /obj/item/radio/headset
glasses = /obj/item/clothing/glasses/sunglasses
- l_pocket = /obj/item/melee/energy/sword
+ l_pocket = /obj/item/melee/transforming/sword
mask = /obj/item/clothing/mask/gas/clown_hat
id_slot = SLOT_ID_WORN_ID
diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm
index 8b8ab2b73edb..d1b4663b9c30 100644
--- a/code/datums/outfits/outfit.dm
+++ b/code/datums/outfits/outfit.dm
@@ -263,7 +263,7 @@
belt = /obj/item/storage/belt/security/tactical/bandolier
l_pocket = /obj/item/cell/device/weapon
r_pocket = /obj/item/cell/device/weapon
- r_hand = /obj/item/melee/energy/sword/imperial
+ r_hand = /obj/item/melee/transforming/sword/imperial
l_hand = /obj/item/shield/energy/imperial
suit_store = /obj/item/gun/energy/imperial
@@ -279,6 +279,6 @@
belt = /obj/item/storage/belt/security/tactical/bandolier
l_pocket = /obj/item/cell/device/weapon
r_pocket = /obj/item/cell/device/weapon
- r_hand = /obj/item/melee/energy/sword/imperial
+ r_hand = /obj/item/melee/transforming/sword/imperial
l_hand = /obj/item/shield/energy/imperial
suit_store = /obj/item/gun/energy/imperial
diff --git a/code/datums/outfits/pirates.dm b/code/datums/outfits/pirates.dm
index 81f725cb4c1d..8456dc134133 100644
--- a/code/datums/outfits/pirates.dm
+++ b/code/datums/outfits/pirates.dm
@@ -6,7 +6,7 @@
shoes = /obj/item/clothing/shoes/brown
head = /obj/item/clothing/head/bandana
glasses = /obj/item/clothing/glasses/eyepatch
- l_hand = /obj/item/melee/energy/sword/pirate
+ l_hand = /obj/item/melee/transforming/sword/pirate
/datum/outfit/pirate/norm
@@ -25,7 +25,7 @@
gloves = /obj/item/clothing/gloves/light_brown
mask = /obj/item/clothing/mask/breath
back = /obj/item/tank/vox
- l_hand = /obj/item/melee/energy/sword/pirate
+ l_hand = /obj/item/melee/transforming/sword/pirate
r_hand = /obj/item/gun/ballistic/shotgun/pump/rifle/vox_hunting
l_pocket = /obj/item/ammo_magazine/clip/c762
r_pocket = /obj/item/ammo_magazine/clip/c762
diff --git a/code/datums/recipe/crafting_recipes/recipes_primal.dm b/code/datums/recipe/crafting_recipes/recipes_primal.dm
index 9978e7d382e7..4141dd6e284d 100644
--- a/code/datums/recipe/crafting_recipes/recipes_primal.dm
+++ b/code/datums/recipe/crafting_recipes/recipes_primal.dm
@@ -83,7 +83,7 @@
/datum/crafting_recipe/bonesword_elder
name = "Bone Sword (Elder)"
- result = /obj/item/melee/ashlander/elder
+ result = /obj/item/melee/transforming/ashlander_elder
time = 100
reqs = list(/obj/item/stack/material/bone = 4,
/obj/item/stack/sinew = 1,
diff --git a/code/datums/uplink/visible_weapons.dm b/code/datums/uplink/visible_weapons.dm
index 04a3acad2112..2f0db5b99849 100644
--- a/code/datums/uplink/visible_weapons.dm
+++ b/code/datums/uplink/visible_weapons.dm
@@ -17,17 +17,17 @@
/datum/uplink_item/item/visible_weapons/energy_sword
name = "Energy Sword, Colorable"
item_cost = 40
- path = /obj/item/melee/energy/sword
+ path = /obj/item/melee/transforming/sword
/datum/uplink_item/item/visible_weapons/energy_sword_pirate
name = "Energy Cutlass, Colorable"
item_cost = 40
- path = /obj/item/melee/energy/sword/pirate
+ path = /obj/item/melee/transforming/sword/pirate
/datum/uplink_item/item/visible_weapons/energy_spear
name = "Energy Spear, Colorable"
item_cost = 50
- path = /obj/item/melee/energy/spear
+ path = /obj/item/melee/transforming/spear
/datum/uplink_item/item/visible_weapons/claymore
name = "Claymore"
diff --git a/code/game/antagonist/outsider/deathsquad.dm b/code/game/antagonist/outsider/deathsquad.dm
index 931ae8626d41..6f9515a309cb 100644
--- a/code/game/antagonist/outsider/deathsquad.dm
+++ b/code/game/antagonist/outsider/deathsquad.dm
@@ -49,7 +49,7 @@ var/datum/antagonist/deathsquad/deathsquad
player.equip_to_slot_or_del(new /obj/item/gun/ballistic/revolver/combat(player), SLOT_ID_BELT)
player.equip_to_slot_or_del(new /obj/item/gun/energy/pulse_rifle(player), /datum/inventory_slot/abstract/hand/right)
player.equip_to_slot_or_del(new /obj/item/hardsuit/ert/assetprotection(player), SLOT_ID_BACK)
- player.equip_to_slot_or_del(new /obj/item/melee/energy/sword(player), SLOT_ID_SUIT_STORAGE)
+ player.equip_to_slot_or_del(new /obj/item/melee/transforming/sword(player), SLOT_ID_SUIT_STORAGE)
// player.implant_loyalty()
var/obj/item/card/id/id = create_id("Asset Protection", player)
diff --git a/code/game/atoms/movable/movable.dm b/code/game/atoms/movable/movable.dm
index ef9da3be9428..1e5ef04fbe6e 100644
--- a/code/game/atoms/movable/movable.dm
+++ b/code/game/atoms/movable/movable.dm
@@ -114,12 +114,21 @@
//? Throwing
var/datum/thrownthing/throwing
- /// default throw speed
+ /// nominal throw speed
+ ///
+ /// * tiles / decisecond
+ /// * modulated by the force of the throw
var/throw_speed = 2
- /// default throw range
+ /// nominal throw range
+ ///
+ /// * in tiles
+ /// * modulated by the force of the throw
var/throw_range = 7
- /// default throw damage at a "standard" speed
- var/throw_force = 0
+ /// nominal throw damage
+ ///
+ /// * defaults to [damage_force] on items
+ /// * modulated by the force of the throw
+ var/throw_force = null
/// default throw move force resist
var/throw_resist = THROW_RESIST_DEFAULT
/**
diff --git a/code/game/content/factions/special/README.md b/code/game/content/factions/special/README.md
new file mode 100644
index 000000000000..3e415369cd22
--- /dev/null
+++ b/code/game/content/factions/special/README.md
@@ -0,0 +1,5 @@
+# Special Factions
+
+- one-off's that aren't special enough to be an enigma / aren't a world mechanic
+- natives for planets
+- isolated ones
diff --git a/code/game/content/factions/special/scorian/items/scorian-melee-weapons.dm b/code/game/content/factions/special/scorian/items/scorian-melee-weapons.dm
new file mode 100644
index 000000000000..ecdc436f4a52
--- /dev/null
+++ b/code/game/content/factions/special/scorian/items/scorian-melee-weapons.dm
@@ -0,0 +1,87 @@
+
+//Interestingly, a magic flame sword has a lot in common with the thermal cutter Tech and I made for Goblins. So I decided it should share some of that code.
+/obj/item/melee/ashlander
+ name = "bone sword"
+ desc = "A sharp sword crafted from knapped bone. In spite of its primitive appearance, it is still incredibly deadly."
+ icon_state = "bonesword"
+ attack_sound = 'sound/weapons/bladeslice.ogg'
+ damage_force = 20
+ throw_force = 10
+ 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
+
+/obj/item/melee/transforming/ashlander_elder
+ name = "elder bone sword"
+ desc = "These swords are crafted from one solid piece of a gigantic bone. Carried by the Ashlander priesthood, these weapons are considered holy relics and are often preserved over the lives of their wielders."
+ icon_state = "elderbonesword"
+ var/active = 0
+ var/flame_intensity = 2
+ var/flame_color = "#FF9933"
+ var/SA_bonus_damage = 25 // 50 total against demons and aberrations.
+ var/SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
+
+/obj/item/melee/transforming/ashlander_elder/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)
+
+/obj/item/melee/transforming/ashlander_elder/afterattack(atom/target, mob/user, clickchain_flags, list/params)
+ if(isliving(target))
+ var/mob/living/tm = target // targeted mob
+ if(SA_vulnerability & tm.mob_class)
+ tm.apply_damage(SA_bonus_damage) // fuck em
+
+/obj/item/melee/transforming/ashlander_elder/attack_self(mob/user)
+ . = ..()
+ if(.)
+ return
+ if(!active)
+ activate()
+ else if(active)
+ deactivate()
+
+/obj/item/melee/transforming/ashlander_elder/update_icon()
+ ..()
+ if(active)
+ icon_state = "[initial(icon_state)]_1"
+ else
+ icon_state = initial(icon_state)
+
+ // Lights
+ if(active && flame_intensity)
+ set_light(flame_intensity, flame_intensity, flame_color)
+ else
+ set_light(0)
+
+ var/mob/M = loc
+ if(istype(M))
+ M.update_inv_l_hand()
+ M.update_inv_r_hand()
+
+/obj/item/melee/transforming/ashlander_elder/proc/activate(mob/living/user)
+ to_chat(user, "You ignite the [src]'s sacred flame.")
+ playsound(loc, 'sound/weapons/gun_flamethrower3.ogg', 50, 1)
+ src.damage_force = 20
+ src.damtype = "fire"
+ src.set_weight_class(WEIGHT_CLASS_BULKY)
+ src.attack_sound = 'sound/weapons/gun_flamethrower2.ogg'
+ active = 1
+ update_icon()
+
+/obj/item/melee/transforming/ashlander_elder/proc/deactivate(mob/living/user)
+ to_chat(user, "You douse \the [src]'s sacred flame.")
+ playsound(loc, 'sound/weapons/gun_flamethrower1.ogg', 50, 1)
+ src.damage_force = 20
+ src.damtype = "brute"
+ src.set_weight_class(initial(src.w_class))
+ src.attack_sound = initial(src.attack_sound)
+ src.active = 0
+ update_icon()
+
+/obj/item/melee/transforming/ashlander_elder/proc/isOn()
+ return active
+
+/obj/item/melee/transforming/ashlander_elder/is_hot()
+ return isOn()
diff --git a/code/game/content/factions/special/scorian/scorian-faction.dm b/code/game/content/factions/special/scorian/scorian-faction.dm
new file mode 100644
index 000000000000..f7d9b70655c1
--- /dev/null
+++ b/code/game/content/factions/special/scorian/scorian-faction.dm
@@ -0,0 +1,5 @@
+//* This file is explicitly licensed under the MIT license. *//
+//* Copyright (c) 2024 silicons *//
+
+/datum/world_faction/special/scorian
+ abstract_type = /datum/world_faction/special/scorian
diff --git a/code/game/content/factions/special/special.dm b/code/game/content/factions/special/special.dm
new file mode 100644
index 000000000000..0c2983275ec0
--- /dev/null
+++ b/code/game/content/factions/special/special.dm
@@ -0,0 +1,5 @@
+//* This file is explicitly licensed under the MIT license. *//
+//* Copyright (c) 2024 silicons *//
+
+/datum/world_faction/special
+ abstract_type = /datum/world_faction/special
diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm
index 9ac85720d743..afc40e73382f 100644
--- a/code/game/gamemodes/sandbox/h_sandbox.dm
+++ b/code/game/gamemodes/sandbox/h_sandbox.dm
@@ -139,7 +139,7 @@ datum/hSB
continue
if(istype(O, /obj/item/dummy))
continue
- if(istype(O, /obj/item/melee/energy/sword))
+ if(istype(O, /obj/item/melee/transforming/sword))
continue
if(istype(O, /obj/structure))
continue
diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm
index 6236374a1055..c141b2e50f43 100644
--- a/code/game/machinery/doors/unpowered.dm
+++ b/code/game/machinery/doors/unpowered.dm
@@ -9,7 +9,7 @@
return
/obj/machinery/door/unpowered/attackby(obj/item/I as obj, mob/user as mob)
- if(istype(I, /obj/item/melee/energy/blade)) return
+ if(istype(I, /obj/item/melee/transforming/blade)) return
if(src.locked) return
..()
return
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index a7a20b6a593b..276bf56b2faf 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -194,7 +194,7 @@
return
//Emags and ninja swords? You may pass.
- if (istype(I, /obj/item/melee/energy/blade))
+ if (istype(I, /obj/item/melee/transforming/blade))
if(emag_act(10, user))
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, src.loc)
diff --git a/code/game/objects/defense.dm b/code/game/objects/defense.dm
index f5bd16c496e3..87d6e949d116 100644
--- a/code/game/objects/defense.dm
+++ b/code/game/objects/defense.dm
@@ -29,9 +29,9 @@
// todo: /atom/movable/proc/throw_impact_attack(atom/target)
if(isitem(AM))
var/obj/item/I = AM
- inflict_atom_damage(I.throw_force * TT.get_damage_multiplier(src), TT.get_damage_tier(src), I.damage_flag, I.damage_mode, ATTACK_TYPE_THROWN, AM)
+ inflict_atom_damage(TT.get_damage_force(src), TT.get_damage_tier(src), I.damage_flag, I.damage_mode, ATTACK_TYPE_THROWN, AM)
else
- inflict_atom_damage(AM.throw_force * TT.get_damage_multiplier(src), TT.get_damage_tier(src), ARMOR_MELEE, null, ATTACK_TYPE_THROWN, AM)
+ inflict_atom_damage(TT.get_damage_force(src), TT.get_damage_tier(src), ARMOR_MELEE, null, ATTACK_TYPE_THROWN, AM)
// if we got destroyed
if(QDELETED(src) && (obj_flags & OBJ_ALLOW_THROW_THROUGH))
. |= COMPONENT_THROW_HIT_PIERCE
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 6e2b8fee56c7..701f54c618bc 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -72,7 +72,7 @@
/// This affects multiplicative movespeed.
var/slowdown = 0
- //? Combat
+ //* Combat *//
/// Amount of damage we do on melee.
var/damage_force = 0
/// armor flag for melee attacks
@@ -81,7 +81,22 @@
var/damage_tier = MELEE_TIER_MEDIUM
/// damage_mode bitfield - see [code/__DEFINES/combat/damage.dm]
var/damage_mode = NONE
- // todo: port over damtype
+ /// our damage type
+ var/damage_type = DAMAGE_TYPE_BRUTE
+
+ //* Sounds *//
+ /// sound used when used in melee attacks. null for default for our damage tpye.
+ var/attack_sound
+ /// Used when thrown into a mob.
+ var/mob_throw_hit_sound
+ /// Sound used when equipping the item into a valid slot from hands or ground
+ var/equip_sound
+ /// Sound used when uneqiupping the item from a valid slot to hands or ground
+ var/unequip_sound
+ /// Pickup sound - played when picking something up off the floor.
+ var/pickup_sound = 'sound/items/pickup/device.ogg'
+ /// Drop sound - played when dropping something onto the floor.
+ var/drop_sound = 'sound/items/drop/device.ogg'
//* Storage *//
/// storage cost for volumetric storage
@@ -139,20 +154,6 @@
/// Icon overlay for ADD highlights when applicable.
var/addblends
- //? Sounds
- /// sound used when used in melee attacks. null for default for our damage tpye.
- var/attack_sound
- /// Used when thrown into a mob.
- var/mob_throw_hit_sound
- /// Sound used when equipping the item into a valid slot from hands or ground
- var/equip_sound
- /// Sound used when uneqiupping the item from a valid slot to hands or ground
- var/unequip_sound
- /// Pickup sound - played when picking something up off the floor.
- var/pickup_sound = 'sound/items/pickup/device.ogg'
- /// Drop sound - played when dropping something onto the floor.
- var/drop_sound = 'sound/items/drop/device.ogg'
-
/// Whether or not we are heavy. Used for some species to determine if they can two-hand it.
var/heavy = FALSE
@@ -642,7 +643,7 @@
if (!..())
return 0
- if(istype(src, /obj/item/melee/energy))
+ if(istype(src, /obj/item/melee/transforming))
return
//if we haven't made our blood_overlay already
diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm
index 97f760894863..a26bfdd618ba 100644
--- a/code/game/objects/items/contraband.dm
+++ b/code/game/objects/items/contraband.dm
@@ -108,12 +108,12 @@
/obj/item/grenade/flashbang/clusterbang,
/obj/item/grenade/flashbang/clusterbang,
/obj/item/grenade/spawnergrenade/spesscarp,
- /obj/item/melee/energy/sword/ionic_rapier,
+ /obj/item/melee/transforming/sword/ionic_rapier,
/obj/item/clothing/shoes/syndigaloshes,
/obj/item/storage/backpack/dufflebag/syndie,
/obj/item/binoculars,
/obj/item/storage/firstaid/combat,
- /obj/item/melee/energy/sword,
+ /obj/item/melee/transforming/sword,
/obj/item/melee/telebaton,
/obj/item/pen/reagent/paralysis,
/obj/item/pickaxe/diamonddrill,
@@ -215,7 +215,7 @@
/obj/item/grenade/flashbang/clusterbang,
/obj/item/grenade/flashbang/clusterbang,
/obj/item/grenade/spawnergrenade/spesscarp,
- /obj/item/melee/energy/sword,
+ /obj/item/melee/transforming/sword,
/obj/item/melee/telebaton,
/obj/item/pen/reagent/paralysis,
/obj/item/pickaxe/diamonddrill,
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 3c11d0611c8b..100eede062a6 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -261,7 +261,7 @@
/obj/item/cell/device/weapon,
/obj/item/material/butterfly,
/obj/item/material/knife,
- /obj/item/melee/energy/sword,
+ /obj/item/melee/transforming/sword,
/obj/item/shield/energy,
/obj/item/ammo_casing/,
/obj/item/ammo_magazine/,
diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm
index 6212bf3ec1dc..ce85e8a14d71 100644
--- a/code/game/objects/items/storage/lockbox.dm
+++ b/code/game/objects/items/storage/lockbox.dm
@@ -36,7 +36,7 @@
return
else
to_chat(user, "Access Denied")
- else if(istype(W, /obj/item/melee/energy/blade))
+ else if(istype(W, /obj/item/melee/transforming/blade))
if(emag_act(INFINITY, user, W, "The locker has been sliced open by [user] with an energy blade!", "You hear metal being sliced and sparks flying."))
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, src.loc)
diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm
index ee732cef7faf..dadf0ef18187 100644
--- a/code/game/objects/items/storage/secure.dm
+++ b/code/game/objects/items/storage/secure.dm
@@ -33,7 +33,7 @@
/obj/item/storage/secure/attackby(obj/item/W as obj, mob/user as mob)
if(locked)
- if (istype(W, /obj/item/melee/energy/blade) && emag_act(INFINITY, user, "You slice through the lock of \the [src]"))
+ if (istype(W, /obj/item/melee/transforming/blade) && emag_act(INFINITY, user, "You slice through the lock of \the [src]"))
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index ea34163b60e0..dff04f17d005 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -28,7 +28,7 @@
new /obj/item/plastique(src)
if("murder")
- new /obj/item/melee/energy/sword(src)
+ new /obj/item/melee/transforming/sword(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
new /obj/item/card/emag(src)
new /obj/item/clothing/shoes/syndigaloshes(src)
diff --git a/code/game/objects/items/tools/switchtool.dm b/code/game/objects/items/tools/switchtool.dm
index c6d9b2bd7545..80aaa6a0b513 100644
--- a/code/game/objects/items/tools/switchtool.dm
+++ b/code/game/objects/items/tools/switchtool.dm
@@ -344,7 +344,7 @@
/obj/item/multitool/holoswitch = SWITCHTOOL_MULTITOOL,
/obj/item/flashlight/holoswitch = SWITCHTOOL_LIGHT,
/obj/item/soap/holoswitch = SWITCHTOOL_SOAP,
- /obj/item/melee/energy/sword/holoswitch = SWITCHTOOL_SWORD,
+ /obj/item/melee/transforming/sword/holoswitch = SWITCHTOOL_SWORD,
/obj/item/shield/holoswitch = SWITCHTOOL_SHIELD
)
tool_functions = list(
@@ -484,7 +484,7 @@
desc = "This should not exist."
tool_speed = 0.9
-/obj/item/melee/energy/sword/holoswitch
+/obj/item/melee/transforming/sword/holoswitch
name = "hardlight blade"
desc = "This should not exist."
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index 57b801eb50f8..6ff9d0efa05a 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -11,7 +11,6 @@
tool_behaviour = TOOL_WELDER
//Amount of OUCH when it's thrown
- damage_force = 3.0
throw_force = 5.0
throw_speed = 1
throw_range = 5
@@ -41,6 +40,28 @@
drop_sound = 'sound/items/drop/weldingtool.ogg'
pickup_sound = 'sound/items/pickup/weldingtool.ogg'
+ //* Combat Stats *//
+ damage_force = 3
+ damage_tier = MELEE_TIER_MEDIUM
+
+ var/on_damage_flag = ARMOR_MELEE
+ var/on_damage_force = 15
+ var/on_damage_mode = NONE
+ var/on_damage_tier = MELEE_TIER_MEDIUM
+ var/on_damage_type = DAMAGE_TYPE_BURN
+ var/on_weight_class
+ var/on_weight_volume
+ var/on_throw_force
+
+ var/off_damage_flag
+ var/off_damage_force
+ var/off_damage_mode
+ var/off_damage_tier
+ var/off_damage_type
+ var/off_weight_class
+ var/off_weight_volume
+ var/off_throw_force
+
/obj/item/weldingtool/Initialize(mapload)
. = ..()
// var/random_fuel = min(rand(10,20),max_fuel)
@@ -250,9 +271,13 @@
else if(T)
T.visible_message("\The [src] turns on.")
playsound(loc, acti_sound, 50, 1)
- src.damage_force = 15
- src.damtype = "fire"
- src.set_weight_class(WEIGHT_CLASS_BULKY)
+ damage_force = on_damage_force
+ damage_type = on_damage_type
+ damage_tier = on_damage_tier
+ damage_mode = on_damage_mode
+ damage_flag = on_damage_flag
+ set_weight_class(isnull(on_weight_class)? on_weight_class : initial(w_class))
+ set_weight_volume(isnull(on_weight_volume)? on_weight_volume : initial(weight_volume))
src.attack_sound = 'sound/items/welder.ogg'
welding = 1
update_icon()
@@ -272,9 +297,13 @@
else if(T)
T.visible_message("\The [src] turns off.")
playsound(loc, deac_sound, 50, 1)
- src.damage_force = 3
- src.damtype = "brute"
- src.set_weight_class(initial(src.w_class))
+ damage_force = isnull(off_damage_force)? initial(damage_force) : off_damage_force
+ damage_type = isnull(off_damage_type)? initial(damage_type) : off_damage_type
+ damage_tier = isnull(off_damage_tier)? initial(damage_tier) : off_damage_tier
+ damage_mode = isnull(off_damage_mode)? initial(damage_mode) : off_damage_mode
+ damage_flag = isnull(off_damage_flag)? initial(damage_flag) : off_damage_flag
+ set_weight_class(isnull(off_weight_class)? off_weight_class : initial(w_class))
+ set_weight_volume(isnull(off_weight_volume)? off_weight_volume : initial(weight_volume))
src.welding = 0
src.attack_sound = initial(src.attack_sound)
update_icon()
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index 74171bd6d817..b9c37d98376d 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -289,8 +289,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/smokable/cigarette/attackby(obj/item/W as obj, mob/user as mob)
..()
- if(istype(W, /obj/item/melee/energy/sword))
- var/obj/item/melee/energy/sword/S = W
+ if(istype(W, /obj/item/melee/transforming/sword))
+ var/obj/item/melee/transforming/sword/S = W
if(S.active)
light("[user] swings their [W], barely missing their nose. They light their [name] in the process.")
@@ -454,7 +454,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
quench()
/obj/item/clothing/mask/smokable/pipe/attackby(obj/item/W as obj, mob/user as mob)
- if(istype(W, /obj/item/melee/energy/sword))
+ if(istype(W, /obj/item/melee/transforming/sword))
return
..()
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
index c6b974ea46a0..f0c39ec594b9 100644
--- a/code/game/objects/items/weapons/melee/misc.dm
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -236,93 +236,6 @@
new /mob/living/simple_mob/mechanical/cyber_horror(T)
return
-//Interestingly, a magic flame sword has a lot in common with the thermal cutter Tech and I made for Goblins. So I decided it should share some of that code.
-/obj/item/melee/ashlander
- name = "bone sword"
- desc = "A sharp sword crafted from knapped bone. In spite of its primitive appearance, it is still incredibly deadly."
- icon_state = "bonesword"
- attack_sound = 'sound/weapons/bladeslice.ogg'
- damage_force = 20
- throw_force = 10
- 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
-
-/obj/item/melee/ashlander/elder
- name = "elder bone sword"
- desc = "These swords are crafted from one solid piece of a gigantic bone. Carried by the Ashlander priesthood, these weapons are considered holy relics and are often preserved over the lives of their wielders."
- icon_state = "elderbonesword"
- var/active = 0
- var/flame_intensity = 2
- var/flame_color = "#FF9933"
- var/SA_bonus_damage = 25 // 50 total against demons and aberrations.
- var/SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
-
-/obj/item/melee/ashlander/elder/Initialize(mapload)
- . = ..()
- AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)
-
-/obj/item/melee/ashlander/elder/afterattack(atom/target, mob/user, clickchain_flags, list/params)
- if(isliving(target))
- var/mob/living/tm = target // targeted mob
- if(SA_vulnerability & tm.mob_class)
- tm.apply_damage(SA_bonus_damage) // fuck em
-
-/obj/item/melee/ashlander/elder/attack_self(mob/user)
- . = ..()
- if(.)
- return
- if(!active)
- activate()
- else if(active)
- deactivate()
-
-/obj/item/melee/ashlander/elder/update_icon()
- ..()
- if(active)
- icon_state = "[initial(icon_state)]_1"
- else
- icon_state = initial(icon_state)
-
- // Lights
- if(active && flame_intensity)
- set_light(flame_intensity, flame_intensity, flame_color)
- else
- set_light(0)
-
- var/mob/M = loc
- if(istype(M))
- M.update_inv_l_hand()
- M.update_inv_r_hand()
-
-/obj/item/melee/ashlander/elder/proc/activate(mob/living/user)
- to_chat(user, "You ignite the [src]'s sacred flame.")
- playsound(loc, 'sound/weapons/gun_flamethrower3.ogg', 50, 1)
- src.damage_force = 20
- src.damtype = "fire"
- src.set_weight_class(WEIGHT_CLASS_BULKY)
- src.attack_sound = 'sound/weapons/gun_flamethrower2.ogg'
- active = 1
- update_icon()
-
-/obj/item/melee/ashlander/elder/proc/deactivate(mob/living/user)
- to_chat(user, "You douse \the [src]'s sacred flame.")
- playsound(loc, 'sound/weapons/gun_flamethrower1.ogg', 50, 1)
- src.damage_force = 20
- src.damtype = "brute"
- src.set_weight_class(initial(src.w_class))
- src.attack_sound = initial(src.attack_sound)
- src.active = 0
- update_icon()
-
-/obj/item/melee/ashlander/elder/proc/isOn()
- return active
-
-/obj/item/melee/ashlander/elder/is_hot()
- return isOn()
-
/obj/item/melee/shiv
name = "shiv"
desc = "A crude improvised weapon. Although visually frightening, shivs are usually more effective for maiming than killing."
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/transforming.dm
similarity index 76%
rename from code/game/objects/items/weapons/melee/energy.dm
rename to code/game/objects/items/weapons/melee/transforming.dm
index 467de03f3614..2a4132756248 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/transforming.dm
@@ -1,12 +1,13 @@
-/obj/item/melee/energy
+/**
+ * general two-mode transforming weapons.
+ */
+/obj/item/melee/transforming
var/active = 0
var/active_force
var/active_throwforce
var/active_w_class
var/active_embed_chance = 0 //In the off chance one of these is supposed to embed, you can just tweak this var
icon = 'icons/obj/weapons.dmi'
- sharp = 0
- edge = 0
armor_penetration = 50
atom_flags = NOCONDUCT | NOBLOODY
var/lrange = 2
@@ -24,7 +25,28 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_melee.dmi',
)
-/obj/item/melee/energy/proc/activate(mob/living/user)
+ //* Combat Stats *//
+
+ var/on_damage_flag = ARMOR_MELEE
+ var/on_damage_force = 15
+ var/on_damage_mode = NONE
+ var/on_damage_tier = MELEE_TIER_MEDIUM
+ var/on_damage_type = DAMAGE_TYPE_BURN
+
+ var/off_damage_flag
+ var/off_damage_force
+ var/off_damage_mode
+ var/off_damage_tier
+ var/off_damage_type
+
+ //* SFX *//
+
+ /// activation sound
+ var/activation_sound = 'sound/weapons/saberon.ogg'
+ /// deactivation sound
+ var/deactivation_sound = 'sound/weapons/saberoff.ogg'
+
+/obj/item/melee/transforming/proc/activate(mob/living/user)
if(active)
return
active = 1
@@ -33,32 +55,40 @@
else
item_state = "[icon_state]_blade"
embed_chance = active_embed_chance
- damage_force = active_force
+ damage_force = on_damage_force
+ damage_type = on_damage_type
+ damage_tier = on_damage_tier
+ damage_mode = on_damage_mode
+ damage_flag = on_damage_flag
+ set_weight_class(isnull(on_weight_class)? on_weight_class : initial(w_class))
+ set_weight_volume(isnull(on_weight_volume)? on_weight_volume : initial(weight_volume))
throw_force = active_throwforce
- sharp = 1
- edge = 1
set_weight_class(active_w_class)
- playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
+ playsound(user, activation_sound, 50, 1)
update_icon()
set_light(lrange, lpower, lcolor)
to_chat(user, "Alt-click to recolor it.")
-/obj/item/melee/energy/proc/deactivate(mob/living/user)
+/obj/item/melee/transforming/proc/deactivate(mob/living/user)
if(!active)
return
- playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
+ playsound(user, deactivation_sound, 50, 1)
item_state = "[icon_state]"
active = 0
- embed_chance = initial(embed_chance)
- damage_force = initial(damage_force)
+ damage_force = isnull(off_damage_force)? initial(damage_force) : off_damage_force
+ damage_type = isnull(off_damage_type)? initial(damage_type) : off_damage_type
+ damage_tier = isnull(off_damage_tier)? initial(damage_tier) : off_damage_tier
+ damage_mode = isnull(off_damage_mode)? initial(damage_mode) : off_damage_mode
+ damage_flag = isnull(off_damage_flag)? initial(damage_flag) : off_damage_flag
+ set_weight_class(isnull(off_weight_class)? off_weight_class : initial(w_class))
+ set_weight_volume(isnull(off_weight_volume)? off_weight_volume : initial(weight_volume))
throw_force = initial(throw_force)
- sharp = initial(sharp)
- edge = initial(edge)
+ embed_chance = initial(embed_chance)
set_weight_class(initial(w_class))
update_icon()
set_light(0,0)
-/obj/item/melee/energy/proc/use_charge(var/cost)
+/obj/item/melee/transforming/proc/use_charge(var/cost)
if(active)
if(bcell)
if(bcell.checked_use(cost))
@@ -67,7 +97,7 @@
return 0
return null
-/obj/item/melee/energy/examine(mob/user, dist)
+/obj/item/melee/transforming/examine(mob/user, dist)
. = ..()
if(use_cell)
if(bcell)
@@ -75,7 +105,7 @@
if(!bcell)
. += "The blade does not have a power source installed."
-/obj/item/melee/energy/attack_self(mob/user)
+/obj/item/melee/transforming/attack_self(mob/user)
. = ..()
if(.)
return
@@ -101,23 +131,15 @@
H.update_inv_r_hand()
add_fingerprint(user)
- return
-
-/obj/item/melee/energy/suicide_act(mob/user)
- var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()]
- if(active)
- user.visible_message(pick("\The [user] is slitting [TU.his] stomach open with \the [src]! It looks like [TU.he] [TU.is] trying to commit seppuku.",\
- "\The [user] is falling on \the [src]! It looks like [TU.he] [TU.is] trying to commit suicide."))
- return (BRUTELOSS|FIRELOSS)
-/obj/item/melee/energy/attack_mob(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
+/obj/item/melee/transforming/attack_mob(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
. = ..()
if(active && use_cell)
if(!use_charge(hitcost))
deactivate(user)
visible_message("\The [src]'s blade flickers, before deactivating.")
-/obj/item/melee/energy/attackby(obj/item/W, mob/user)
+/obj/item/melee/transforming/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/multitool) && colorable && !active)
if(!rainbow)
rainbow = TRUE
@@ -145,10 +167,10 @@
return
return ..()
-/obj/item/melee/energy/get_cell(inducer)
+/obj/item/melee/transforming/get_cell(inducer)
return bcell
-/obj/item/melee/energy/update_icon()
+/obj/item/melee/transforming/update_icon()
. = ..()
var/mutable_appearance/blade_overlay = mutable_appearance(icon, "[icon_state]_blade")
blade_overlay.color = lcolor
@@ -165,7 +187,7 @@
H.update_inv_l_hand()
H.update_inv_r_hand()
-/obj/item/melee/energy/AltClick(mob/living/user)
+/obj/item/melee/transforming/AltClick(mob/living/user)
if(!colorable) //checks if is not colorable
return
if(!in_range(src, user)) //Basic checks to prevent abuse
@@ -187,7 +209,7 @@
/*
* Energy Axe
*/
-/obj/item/melee/energy/axe
+/obj/item/melee/transforming/axe
name = "energy axe"
desc = "An energised battle axe."
icon_state = "eaxe"
@@ -209,22 +231,22 @@
edge = 1
can_cleave = TRUE
-/obj/item/melee/energy/axe/activate(mob/living/user)
+/obj/item/melee/transforming/axe/activate(mob/living/user)
..()
damtype = SEARING
to_chat(user, "\The [src] is now energised.")
-/obj/item/melee/energy/axe/deactivate(mob/living/user)
+/obj/item/melee/transforming/axe/deactivate(mob/living/user)
..()
damtype = BRUTE
to_chat(user, "\The [src] is de-energised. It's just a regular axe now.")
-/obj/item/melee/energy/axe/suicide_act(mob/user)
+/obj/item/melee/transforming/axe/suicide_act(mob/user)
var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()]
visible_message("\The [user] swings \the [src] towards [TU.his] head! It looks like [TU.he] [TU.is] trying to commit suicide.")
return (BRUTELOSS|FIRELOSS)
-/obj/item/melee/energy/axe/charge
+/obj/item/melee/transforming/axe/charge
name = "charge axe"
desc = "An energised axe."
active_force = 35
@@ -233,14 +255,14 @@
use_cell = TRUE
hitcost = 120
-/obj/item/melee/energy/axe/charge/loaded/Initialize(mapload)
+/obj/item/melee/transforming/axe/charge/loaded/Initialize(mapload)
. = ..()
bcell = new/obj/item/cell/device/weapon(src)
/*
* Energy Sword
*/
-/obj/item/melee/energy/sword
+/obj/item/melee/transforming/sword
color
name = "energy sword"
desc = "May the damage_force be within you."
@@ -263,25 +285,25 @@
pickup_sound = 'sound/items/pickup/sword.ogg'
projectile_parry_chance = 65
-/obj/item/melee/energy/sword/dropped(mob/user, atom_flags, atom/newLoc)
+/obj/item/melee/transforming/sword/dropped(mob/user, atom_flags, atom/newLoc)
. = ..()
if(!istype(loc,/mob))
deactivate(user)
-/obj/item/melee/energy/sword/activate(mob/living/user)
+/obj/item/melee/transforming/sword/activate(mob/living/user)
if(!active)
to_chat(user, "\The [src] is now energised.")
..()
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-/obj/item/melee/energy/sword/deactivate(mob/living/user)
+/obj/item/melee/transforming/sword/deactivate(mob/living/user)
if(active)
to_chat(user, "\The [src] deactivates!")
..()
attack_verb = list()
-/obj/item/melee/energy/sword/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
+/obj/item/melee/transforming/sword/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
if(active && default_parry_check(user, attacker, damage_source) && prob(60))
user.visible_message("\The [user] parries [attack_text] with \the [src]!")
@@ -301,7 +323,7 @@
return 0
-/obj/item/melee/energy/sword/unique_parry_check(mob/user, mob/attacker, atom/damage_source)
+/obj/item/melee/transforming/sword/unique_parry_check(mob/user, mob/attacker, atom/damage_source)
if(user.incapacitated() || !istype(damage_source, /obj/projectile/))
return 0
@@ -311,23 +333,23 @@
return 1
-/obj/item/melee/energy/sword/attackby(obj/item/W, mob/living/user, params)
- if(istype(W, /obj/item/melee/energy/sword))
+/obj/item/melee/transforming/sword/attackby(obj/item/W, mob/living/user, params)
+ if(istype(W, /obj/item/melee/transforming/sword))
if(HAS_TRAIT(W, TRAIT_ITEM_NODROP) || HAS_TRAIT(src, TRAIT_ITEM_NODROP))
to_chat(user, "\the [HAS_TRAIT(src, TRAIT_ITEM_NODROP) ? src : W] is stuck to your hand, you can't attach it to \the [HAS_TRAIT(src, TRAIT_ITEM_NODROP) ? W : src]!")
return
- if(istype(W, /obj/item/melee/energy/sword/charge))
+ if(istype(W, /obj/item/melee/transforming/sword/charge))
to_chat(user,"These blades are incompatible, you can't attach them to each other!")
return
else
to_chat(user, "You combine the two energy swords, making a single supermassive blade! You're cool.")
- new /obj/item/melee/energy/sword/dualsaber(user.drop_location())
+ new /obj/item/melee/transforming/sword/dualsaber(user.drop_location())
qdel(W)
qdel(src)
else
return ..()
-/obj/item/melee/energy/sword/pirate
+/obj/item/melee/transforming/sword/pirate
name = "energy cutlass"
desc = "Arrrr matey."
icon_state = "cutlass"
@@ -335,7 +357,7 @@
colorable = TRUE
//Return of the King
-/obj/item/melee/energy/sword/dualsaber
+/obj/item/melee/transforming/sword/dualsaber
name = "double-bladed energy sword"
desc = "Handle with care."
icon_state = "dualsaber"
@@ -353,7 +375,7 @@
*Ionic Rapier
*/
-/obj/item/melee/energy/sword/ionic_rapier
+/obj/item/melee/transforming/sword/ionic_rapier
name = "ionic rapier"
desc = "Designed specifically for disrupting electronics at close range, it is extremely deadly against synthetics, but almost harmless to pure organic targets."
description_info = "This is a dangerous melee weapon that will deliver a moderately powerful electromagnetic pulse to whatever it strikes. \
@@ -373,7 +395,7 @@
lcolor = "#0000FF"
projectile_parry_chance = 30 // It's not specifically designed for cutting and slashing, but it can still, maybe, save your life.
-/obj/item/melee/energy/sword/ionic_rapier/afterattack(atom/target, mob/user, clickchain_flags, list/params)
+/obj/item/melee/transforming/sword/ionic_rapier/afterattack(atom/target, mob/user, clickchain_flags, list/params)
if(istype(target, /obj) && (clickchain_flags & CLICKCHAIN_HAS_PROXIMITY) && active)
// EMP stuff.
var/obj/O = target
@@ -382,7 +404,7 @@
user.setClickCooldown(user.get_attack_speed(src)) // A lot of objects don't set click delay.
return ..()
-/obj/item/melee/energy/sword/ionic_rapier/melee_mob_hit(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
+/obj/item/melee/transforming/sword/ionic_rapier/melee_mob_hit(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
. = ..()
var/mob/living/L = target
if(!istype(L))
@@ -400,7 +422,7 @@
L.taunt(user)
L.adjustFireLoss(damage_force * 6) // 30 Burn, for 50 total.
-/obj/item/melee/energy/sword/ionic_rapier/lance
+/obj/item/melee/transforming/sword/ionic_rapier/lance
name = "zero-point lance"
desc = "Designed specifically for disrupting electronics at relatively close range, however it is still capable of dealing some damage to living beings."
active_force = 20
@@ -411,7 +433,7 @@
* Charge blade. Uses a cell, and costs energy per strike.
*/
-/obj/item/melee/energy/sword/charge
+/obj/item/melee/transforming/sword/charge
name = "charge sword"
desc = "A small, handheld device which emits a high-energy 'blade'."
origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 3, TECH_ILLEGAL = 4)
@@ -422,25 +444,25 @@
use_cell = TRUE
hitcost = 75
-/obj/item/melee/energy/sword/charge/loaded/Initialize(mapload)
+/obj/item/melee/transforming/sword/charge/loaded/Initialize(mapload)
. = ..()
bcell = new/obj/item/cell/device/weapon(src)
-/obj/item/melee/energy/sword/charge/attackby(obj/item/W, mob/living/user, params)
- if(istype(W, /obj/item/melee/energy/sword/charge))
+/obj/item/melee/transforming/sword/charge/attackby(obj/item/W, mob/living/user, params)
+ if(istype(W, /obj/item/melee/transforming/sword/charge))
if(HAS_TRAIT(W, TRAIT_ITEM_NODROP) || HAS_TRAIT(src, TRAIT_ITEM_NODROP))
to_chat(user, "\the [HAS_TRAIT(src, TRAIT_ITEM_NODROP) ? src : W] is stuck to your hand, you can't attach it to \the [HAS_TRAIT(src, TRAIT_ITEM_NODROP) ? W : src]!")
return
else
to_chat(user, "You combine the two charge swords, making a single supermassive blade! You're cool.")
- new /obj/item/melee/energy/sword/charge/dualsaber(user.drop_location())
+ new /obj/item/melee/transforming/sword/charge/dualsaber(user.drop_location())
qdel(W)
qdel(src)
else
return ..()
//Charge Type Double Esword
-/obj/item/melee/energy/sword/charge/dualsaber
+/obj/item/melee/transforming/sword/charge/dualsaber
name = "double-bladed charge sword"
desc = "Make sure you bought batteries."
icon_state = "dualsaber"
@@ -458,7 +480,7 @@
//Energy Blade (ninja uses this)
//Can't be activated or deactivated, so no reason to be a subtype of energy
-/obj/item/melee/energy/blade
+/obj/item/melee/transforming/blade
name = "energy blade"
desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
icon_state = "blade"
@@ -479,7 +501,7 @@
projectile_parry_chance = 60
lcolor = "#00FF00"
-/obj/item/melee/energy/blade/Initialize(mapload)
+/obj/item/melee/transforming/blade/Initialize(mapload)
. = ..()
spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, src)
@@ -488,21 +510,21 @@
START_PROCESSING(SSobj, src)
set_light(lrange, lpower, lcolor)
-/obj/item/melee/energy/blade/Destroy()
+/obj/item/melee/transforming/blade/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/item/melee/energy/blade/attack_self(mob/user)
+/obj/item/melee/transforming/blade/attack_self(mob/user)
. = ..()
if(.)
return
qdel(src)
-/obj/item/melee/energy/blade/dropped(mob/user, atom_flags, atom/newLoc)
+/obj/item/melee/transforming/blade/dropped(mob/user, atom_flags, atom/newLoc)
. = ..()
qdel(src)
-/obj/item/melee/energy/blade/process(delta_time)
+/obj/item/melee/transforming/blade/process(delta_time)
if(!creator || loc != creator || !creator.is_holding(src))
// Tidy up a bit.
if(istype(loc,/mob/living))
@@ -517,7 +539,7 @@
host._handle_inventory_hud_remove(src)
qdel(src)
-/obj/item/melee/energy/blade/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
+/obj/item/melee/transforming/blade/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
if(default_parry_check(user, attacker, damage_source) && prob(60))
user.visible_message("\The [user] parries [attack_text] with \the [src]!")
@@ -537,7 +559,7 @@
return 0
-/obj/item/melee/energy/blade/unique_parry_check(mob/user, mob/attacker, atom/damage_source)
+/obj/item/melee/transforming/blade/unique_parry_check(mob/user, mob/attacker, atom/damage_source)
if(user.incapacitated() || !istype(damage_source, /obj/projectile/))
return 0
@@ -550,7 +572,7 @@
//Energy Spear
-/obj/item/melee/energy/spear
+/obj/item/melee/transforming/spear
name = "energy spear"
desc = "Concentrated energy forming a sharp tip at the end of a long rod."
icon_state = "espear"
@@ -569,7 +591,7 @@
colorable = TRUE
lcolor = "#800080"
-/obj/item/melee/energy/spear/activate(mob/living/user)
+/obj/item/melee/transforming/spear/activate(mob/living/user)
if(!active)
to_chat(user, "\The [src] is now energised.")
..()
@@ -577,14 +599,14 @@
AddComponent(/datum/component/jousting)
-/obj/item/melee/energy/spear/deactivate(mob/living/user)
+/obj/item/melee/transforming/spear/deactivate(mob/living/user)
if(active)
to_chat(user, "\The [src] deactivates!")
..()
attack_verb = list("whacked", "beat", "slapped", "thonked")
DelComponent(/datum/component/jousting)
-/obj/item/melee/energy/spear/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
+/obj/item/melee/transforming/spear/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
if(active && default_parry_check(user, attacker, damage_source) && prob(50))
user.visible_message("\The [user] parries [attack_text] with \the [src]!")
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
@@ -594,7 +616,7 @@
return 1
return 0
-/obj/item/melee/energy/hfmachete // ported from /vg/station - vgstation-coders/vgstation13#13913, fucked up by hatterhat
+/obj/item/melee/transforming/hfmachete // ported from /vg/station - vgstation-coders/vgstation13#13913, fucked up by hatterhat
name = "high-frequency machete"
desc = "A high-frequency broad blade used either as an implement or in combat like a short sword."
icon_state = "hfmachete0"
@@ -614,14 +636,14 @@
can_cleave = TRUE
embed_chance = 0 // let's not
-/obj/item/melee/energy/hfmachete/update_icon()
+/obj/item/melee/transforming/hfmachete/update_icon()
icon_state = "[base_state][active]"
-/obj/item/melee/energy/hfmachete/attack_self(mob/user)
+/obj/item/melee/transforming/hfmachete/attack_self(mob/user)
toggleActive(user)
add_fingerprint(user)
-/obj/item/melee/energy/hfmachete/proc/toggleActive(mob/user, var/togglestate = "")
+/obj/item/melee/transforming/hfmachete/proc/toggleActive(mob/user, var/togglestate = "")
switch(togglestate)
if("on")
active = 1
@@ -653,7 +675,7 @@
// user.lazy_unregister_event(/lazy_event/on_moved, src, PROC_REF(mob_moved))
update_icon()
-/obj/item/melee/energy/hfmachete/afterattack(atom/target, mob/user, clickchain_flags, list/params)
+/obj/item/melee/transforming/hfmachete/afterattack(atom/target, mob/user, clickchain_flags, list/params)
if(!(clickchain_flags & CLICKCHAIN_HAS_PROXIMITY))
return
..()
@@ -663,10 +685,10 @@
P.die_off()
/*
-/obj/item/melee/energy/hfmachete/dropped(mob/user, atom_flags, atom/newLoc)
+/obj/item/melee/transforming/hfmachete/dropped(mob/user, atom_flags, atom/newLoc)
user.lazy_unregister_event(/lazy_event/on_moved, src, PROC_REF(mob_moved))
-/obj/item/melee/energy/hfmachete/throw_at_old(atom/target, range, speed, thrower) // todo: get silicons to interpret this because >sleeps
+/obj/item/melee/transforming/hfmachete/throw_at_old(atom/target, range, speed, thrower) // todo: get silicons to interpret this because >sleeps
if(!usr)
return ..()
spawn()
@@ -685,29 +707,29 @@
// none of these are working properly in testing which is something you absolutely hate to see
/*
-/obj/item/melee/energy/hfmachete/throw_at_old(atom/target, range, speed, thrower)
+/obj/item/melee/transforming/hfmachete/throw_at_old(atom/target, range, speed, thrower)
playsound(src, get_sfx("machete_throw"), 30, 0)
. = ..()
-/obj/item/melee/energy/hfmachete/throw_impact(atom/hit_atom, speed)
+/obj/item/melee/transforming/hfmachete/throw_impact(atom/hit_atom, speed)
if(isturf(hit_atom))
for(var/mob/M in hit_atom)
playsound(M, get_sfx("machete_throw_hit"), 60, 0)
..()
-/obj/item/melee/energy/hfmachete/attack(mob/M, mob/living/user)
+/obj/item/melee/transforming/hfmachete/attack(mob/M, mob/living/user)
playsound(M, get_sfx("machete_hit"), 50, 0)
..()
*/
/*
-/obj/item/melee/energy/hfmachete/proc/mob_moved(atom/movable/mover)
+/obj/item/melee/transforming/hfmachete/proc/mob_moved(atom/movable/mover)
if(iscarbon(mover) && active)
for(var/obj/effect/plantsegment/P in range(mover,0))
qdel(P)
-/obj/item/melee/energy/hfmachete/attackby(obj/item/W, mob/living/user)
+/obj/item/melee/transforming/hfmachete/attackby(obj/item/W, mob/living/user)
..()
- if(istype(W, /obj/item/melee/energy/hfmachete))
+ if(istype(W, /obj/item/melee/transforming/hfmachete))
to_chat(user, "You combine the two [W] together, making a single scissor-bladed weapon! You feel fucking invincible!")
qdel(W)
W = null
@@ -717,13 +739,13 @@
// blust one day lads.
*/
-/obj/item/melee/energy/sword/imperial
+/obj/item/melee/transforming/sword/imperial
name = "energy gladius"
desc = "A broad, short energy blade. You'll be glad to have this in a fight."
icon_state = "sword0"
icon = 'icons/obj/weapons_vr.dmi'
item_icons = list(SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_melee.dmi', SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_melee.dmi')
-/obj/item/melee/energy/sword/imperial/activate(mob/living/user)
+/obj/item/melee/transforming/sword/imperial/activate(mob/living/user)
..()
icon_state = "sword1"
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 85d27e1f4e04..0bb5a1c99cee 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -164,14 +164,9 @@
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!
- var/damtype = "brute"
// todo: /obj/item level, /obj/projectile level, how to deal with armor?
var/armor_penetration = 0
var/show_messages
diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm
index a173fa671a69..132a10e86a2f 100644
--- a/code/game/objects/random/mapping.dm
+++ b/code/game/objects/random/mapping.dm
@@ -405,9 +405,9 @@
// /obj/item/archaeological_find
//),
prob(1);list(
- /obj/item/melee/energy/sword,
- /obj/item/melee/energy/sword,
- /obj/item/melee/energy/sword,
+ /obj/item/melee/transforming/sword,
+ /obj/item/melee/transforming/sword,
+ /obj/item/melee/transforming/sword,
/obj/item/shield/energy,
/obj/item/shield/energy,
/obj/structure/closet/crate/science
diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm
index f4aad4afb1de..c4a86ccac997 100644
--- a/code/game/objects/random/misc.dm
+++ b/code/game/objects/random/misc.dm
@@ -811,7 +811,7 @@
prob(8);/obj/item/gun/energy/gun/eluger,
prob(8);/obj/item/gun/energy/xray,
prob(8);/obj/item/gun/ballistic/automatic/c20r,
- prob(8);/obj/item/melee/energy/sword,
+ prob(8);/obj/item/melee/transforming/sword,
prob(8);/obj/item/gun/ballistic/derringer,
prob(8);/obj/item/gun/ballistic/konigin,
prob(8);/obj/item/gun/ballistic/revolver/lemat,
@@ -835,7 +835,7 @@
prob(4);/obj/item/gun/ballistic/deagle,
prob(4);/obj/item/gun/ballistic/deagle/taj,
prob(4);/obj/item/material/knife/tacknife/combatknife,
- prob(4);/obj/item/melee/energy/sword,
+ prob(4);/obj/item/melee/transforming/sword,
prob(2);/obj/item/gun/ballistic/automatic/mini_uzi,
prob(2);/obj/item/gun/ballistic/automatic/mini_uzi/taj,
prob(4);/obj/item/gun/ballistic/automatic/wt274,
diff --git a/code/game/objects/structures/crates_lockers/__closet.dm b/code/game/objects/structures/crates_lockers/__closet.dm
index 2ff7861ae679..ebb767013e53 100644
--- a/code/game/objects/structures/crates_lockers/__closet.dm
+++ b/code/game/objects/structures/crates_lockers/__closet.dm
@@ -312,7 +312,7 @@
return
if(!user.attempt_insert_item_for_installation(I, opened? loc : src))
return
- else if(istype(I, /obj/item/melee/energy/blade))
+ else if(istype(I, /obj/item/melee/transforming/blade))
if(emag_act(INFINITY, user, "The locker has been sliced open by [user] with \an [I]!", "You hear metal being sliced and sparks flying."))
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, loc)
diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
index ed1c5f42e035..6aaf4ced8e7b 100644
--- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm
+++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
@@ -57,7 +57,7 @@
starts_with = list(
/obj/item/clothing/suit/armor/tdome/red = 3,
- /obj/item/melee/energy/sword = 3,
+ /obj/item/melee/transforming/sword = 3,
/obj/item/gun/energy/laser = 3,
/obj/item/melee/baton = 3,
/obj/item/storage/box/flashbangs = 3,
@@ -71,7 +71,7 @@
starts_with = list(
/obj/item/clothing/suit/armor/tdome/green = 3,
- /obj/item/melee/energy/sword = 3,
+ /obj/item/melee/transforming/sword = 3,
/obj/item/gun/energy/laser = 3,
/obj/item/melee/baton = 3,
/obj/item/storage/box/flashbangs = 3,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
index 24ea0ce03cfe..0c104ca23898 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
@@ -50,7 +50,7 @@
update_icon()
else
to_chat(user, "Access Denied")
- else if(istype(W, /obj/item/melee/energy/blade))
+ else if(istype(W, /obj/item/melee/transforming/blade))
if(emag_act(INFINITY, user, "The locker has been sliced open by [user] with \an [W]!", "You hear metal being sliced and sparks flying."))
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, loc)
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 8c70b3be3e93..900d08e5ac70 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -213,7 +213,7 @@
/obj/structure/closet/crate/secure/attackby(obj/item/W as obj, mob/user as mob)
if(is_type_in_list(W, list(/obj/item/packageWrap, /obj/item/stack/cable_coil, /obj/item/radio/electropack, /obj/item/tool/wirecutters)))
return ..()
- if(istype(W, /obj/item/melee/energy/blade))
+ if(istype(W, /obj/item/melee/transforming/blade))
emag_act(INFINITY, user)
if(!opened)
src.togglelock(user)
diff --git a/code/game/turfs/simulated/wall/defense.dm b/code/game/turfs/simulated/wall/defense.dm
index 8811811f9492..a3bfa91eea36 100644
--- a/code/game/turfs/simulated/wall/defense.dm
+++ b/code/game/turfs/simulated/wall/defense.dm
@@ -6,9 +6,9 @@
// todo: /atom/movable/proc/throw_impact_attack(atom/target)
if(isitem(AM))
var/obj/item/I = AM
- inflict_atom_damage(I.throw_force * TT.get_damage_multiplier(src), I.damage_tier, I.damage_flag, I.damage_mode, ATTACK_TYPE_THROWN, AM)
+ inflict_atom_damage(TT.get_damage_force(src), TT.get_damage_tier(src), I.damage_flag, I.damage_mode, ATTACK_TYPE_THROWN, AM)
else
- inflict_atom_damage(AM.throw_force * TT.get_damage_multiplier(src), MELEE_TIER_LIGHT, ARMOR_MELEE, null, ATTACK_TYPE_THROWN, AM)
+ inflict_atom_damage(TT.get_damage_force(src), TT.get_damage_tier(src), ARMOR_MELEE, null, ATTACK_TYPE_THROWN, AM)
/turf/simulated/wall/unarmed_act(mob/attacker, datum/unarmed_attack/style, target_zone, mult)
// todo: this should just be style.attack(attacker, src)
diff --git a/code/game/turfs/simulated/wall/wall_attacks.dm b/code/game/turfs/simulated/wall/wall_attacks.dm
index fcd2707cdfda..2272dc5f6a23 100644
--- a/code/game/turfs/simulated/wall/wall_attacks.dm
+++ b/code/game/turfs/simulated/wall/wall_attacks.dm
@@ -170,8 +170,8 @@
thermitemelt(user)
return
- else if( istype(I, /obj/item/melee/energy/blade) )
- var/obj/item/melee/energy/blade/EB = I
+ else if( istype(I, /obj/item/melee/transforming/blade) )
+ var/obj/item/melee/transforming/blade/EB = I
EB.spark_system.start()
to_chat(user, "You slash \the [src] with \the [EB]; the thermite ignites!")
@@ -222,7 +222,7 @@
dismantle_verb = "cutting"
dismantle_sound = I.tool_sound
// cut_delay *= 0.7 // Tools themselves now can shorten the time it takes.
- else if(istype(I,/obj/item/melee/energy/blade))
+ else if(istype(I,/obj/item/melee/transforming/blade))
dismantle_sound = /datum/soundbyte/grouped/sparks
dismantle_verb = "slicing"
cut_delay *= 0.5
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index b5b07d730e7e..179977a164b7 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1659,7 +1659,7 @@
if(!check_rights(R_FUN,0))
removed_paths += dirty_path
continue
- else if(ispath(path, /obj/item/melee/energy/blade))//Not an item one should be able to spawn./N
+ else if(ispath(path, /obj/item/melee/transforming/blade))//Not an item one should be able to spawn./N
if(!check_rights(R_FUN,0))
removed_paths += dirty_path
continue
diff --git a/code/modules/awaymissions/loot_vr.dm b/code/modules/awaymissions/loot_vr.dm
index c78b87871325..9eda2aa13205 100644
--- a/code/modules/awaymissions/loot_vr.dm
+++ b/code/modules/awaymissions/loot_vr.dm
@@ -128,7 +128,7 @@
prob(10);/obj/item/melee/baton,\
prob(10);/obj/item/melee/telebaton,\
prob(10);/obj/item/melee/classic_baton,\
- prob(10);/obj/item/melee/energy/sword,\
+ prob(10);/obj/item/melee/transforming/sword,\
prob(9);/obj/item/gun/ballistic/automatic/wt550/lethal,\
prob(9);/obj/item/gun/ballistic/automatic/pdw,\
prob(9);/obj/item/gun/ballistic/derringer,\
@@ -145,7 +145,7 @@
prob(8);/obj/item/gun/energy/xray,\
prob(8);/obj/item/gun/ballistic/automatic/c20r,\
prob(8);/obj/item/gun/ballistic/automatic/stg,\
- prob(8);/obj/item/melee/energy/sword,\
+ prob(8);/obj/item/melee/transforming/sword,\
/* prob(8);/obj/item/gun/ballistic/automatic/m41a,\ */
prob(7);/obj/item/gun/energy/captain,\
prob(7);/obj/item/gun/energy/sniperrifle,\
diff --git a/code/modules/cargo/supplypacks/contraband.dm b/code/modules/cargo/supplypacks/contraband.dm
index ca97a98b13b6..37d3ce3fd554 100644
--- a/code/modules/cargo/supplypacks/contraband.dm
+++ b/code/modules/cargo/supplypacks/contraband.dm
@@ -89,7 +89,7 @@
name = "sapper's kit"
/obj/item/storage/box/cargo_null_entry_kit/sapper/legacy_spawn_contents()
- new /obj/item/melee/energy/sword/ionic_rapier(src)
+ new /obj/item/melee/transforming/sword/ionic_rapier(src)
new /obj/item/storage/box/syndie_kit/space(src)
new /obj/item/storage/box/syndie_kit/demolitions(src)
new /obj/item/multitool/ai_detector(src)
diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm
index bf61251514e8..052f4cdce556 100644
--- a/code/modules/clothing/spacesuits/alien.dm
+++ b/code/modules/clothing/spacesuits/alien.dm
@@ -33,7 +33,7 @@
w_class = WEIGHT_CLASS_NORMAL
atom_flags = PHORONGUARD
clothing_flags = CLOTHING_THICK_MATERIAL | CLOTHING_INJECTION_PORT
- allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs,/obj/item/tank)
+ allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs,/obj/item/tank)
armor_type = /datum/armor/vox/space/armored
siemens_coefficient = 0.2
heat_protection_cover = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index 51f0fdf74159..d9ee348414c4 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -11,7 +11,7 @@
icon_state = "syndicate"
desc = "A crimson spacesuit sporting clean lines and durable plating. Robust, reliable, and slightly suspicious."
w_class = WEIGHT_CLASS_NORMAL
- allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs,/obj/item/tank/emergency/oxygen)
+ allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs,/obj/item/tank/emergency/oxygen)
armor_type = /datum/armor/agent/space
siemens_coefficient = 0.6
diff --git a/code/modules/clothing/spacesuits/void/merc.dm b/code/modules/clothing/spacesuits/void/merc.dm
index 8b22e75f756e..e2572851d64b 100644
--- a/code/modules/clothing/spacesuits/void/merc.dm
+++ b/code/modules/clothing/spacesuits/void/merc.dm
@@ -20,7 +20,7 @@
weight = ITEM_WEIGHT_VOIDSUIT
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/merc/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs)
+ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
/obj/item/clothing/head/helmet/space/void/merc/fire
@@ -38,7 +38,7 @@
desc = "A blackened suit that has had many of its protective plates coated in or replaced with high-grade thermal insulation, to protect against incineration. Property of Gorlex Marauders."
armor_type = /datum/armor/merc/space/ghostrider
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs,/obj/item/material/twohanded/fireaxe,/obj/item/flamethrower)
+ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs,/obj/item/material/twohanded/fireaxe,/obj/item/flamethrower)
siemens_coefficient = 0.7
//Soviet Void Suit
@@ -91,7 +91,7 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_voidsuit", SLOT_ID_LEFT_HAND = "syndie_voidsuit")
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/merc/space/clown
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs)
+ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
//Four below avalible through cargo
@@ -111,7 +111,7 @@
desc = "One of the few combat-grade suits avalible in the frontier, and the poster-child of Hephaestus Industries. Comes equipped with a wrist-bound oxygen timer."
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/station/secsuit
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs)
+ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
@@ -130,7 +130,7 @@
desc = "A standard Icarus line suit that has been repourposed to protect from heavier biohazards."
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/exploration/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs)
+ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
@@ -149,7 +149,7 @@
desc = "Favoured suit of deep-space engineers, comfortable and comparable to suits avalible to Nanotrasen Engineers. Comes equipped with a wrist-bound oxygen timer."
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/engineering/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs)
+ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
@@ -168,7 +168,7 @@
desc = "Cheaper version of the main Icarus line, often marketed to Frontier settlements. Perfect for Expeditions."
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/exploration/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs)
+ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
@@ -191,7 +191,7 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_voidsuit", SLOT_ID_LEFT_HAND = "syndie_voidsuit")
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/merc/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs)
+ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
@@ -202,6 +202,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_voidsuit", SLOT_ID_LEFT_HAND = "syndie_voidsuit")
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/merc/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs)
+ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
diff --git a/code/modules/clothing/spacesuits/void/xeno/tajara.dm b/code/modules/clothing/spacesuits/void/xeno/tajara.dm
index 44e08971eed1..14b99f0a273e 100644
--- a/code/modules/clothing/spacesuits/void/xeno/tajara.dm
+++ b/code/modules/clothing/spacesuits/void/xeno/tajara.dm
@@ -15,7 +15,7 @@
/obj/item/ammo_magazine,
/obj/item/ammo_casing,
/obj/item/melee/baton,
- /obj/item/melee/energy/sword,
+ /obj/item/melee/transforming/sword,
/obj/item/handcuffs
)
species_restricted = list(SPECIES_TAJ)
@@ -46,7 +46,7 @@
/obj/item/ammo_magazine,
/obj/item/ammo_casing,
/obj/item/melee/baton,
- /obj/item/melee/energy/sword,
+ /obj/item/melee/transforming/sword,
/obj/item/handcuffs
)
species_restricted = list(SPECIES_TAJ)
diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm
index 278dcd11f92f..8cf538b12557 100644
--- a/code/modules/clothing/under/accessories/holster.dm
+++ b/code/modules/clothing/under/accessories/holster.dm
@@ -159,7 +159,7 @@
desc = "A handsome synthetic leather scabbard with matching belt."
icon_state = "holster_machete"
concealed_holster = 0
- can_hold = list(/obj/item/material/knife/machete, /obj/item/melee/energy/hfmachete, /obj/item/reagent_containers/spray, /obj/item/soap,
+ can_hold = list(/obj/item/material/knife/machete, /obj/item/melee/transforming/hfmachete, /obj/item/reagent_containers/spray, /obj/item/soap,
/obj/item/c_tube, /obj/item/bikehorn)
cant_hold = list(/obj/item/material/knife/machete/armblade)
sound_in = 'sound/effects/holster/sheathin.ogg'
diff --git a/code/modules/examine/descriptions/weapons.dm b/code/modules/examine/descriptions/weapons.dm
index 5f381d332ec0..3af5d2dc68b4 100644
--- a/code/modules/examine/descriptions/weapons.dm
+++ b/code/modules/examine/descriptions/weapons.dm
@@ -83,7 +83,7 @@
set to 'harm', you will inflict damage when using it, regardless if it is on or not. Each stun reduces the baton's charge, which can be replenished by \
putting it inside a weapon recharger."
-/obj/item/melee/energy/sword
+/obj/item/melee/transforming/sword
description_antag = "The energy sword is a very strong melee weapon, capable of severing limbs easily, if they are targeted. It can also has a chance \
to block projectiles and melee attacks while it is on and being held. The sword can be toggled on or off by using it in your hand. While it is off, \
it can be concealed in your pocket or bag."
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 6dcd35967de5..b388b81fce2d 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -328,7 +328,7 @@ proc/check_panel(mob/M)
return
GLOBAL_LIST_INIT(non_fakeattack_weapons, list(/obj/item/gun/ballistic, /obj/item/ammo_magazine/s357,\
- /obj/item/gun/energy/crossbow, /obj/item/melee/energy/sword,\
+ /obj/item/gun/energy/crossbow, /obj/item/melee/transforming/sword,\
/obj/item/storage/box/syndicate, /obj/item/storage/box/emps,\
/obj/item/cartridge/syndicate, /obj/item/clothing/under/chameleon,\
/obj/item/clothing/shoes/syndigaloshes, /obj/item/card/id/syndicate,\
diff --git a/code/modules/hardsuits/modules/combat.dm b/code/modules/hardsuits/modules/combat.dm
index 43f3f4d4efa7..a58973bc7e8d 100644
--- a/code/modules/hardsuits/modules/combat.dm
+++ b/code/modules/hardsuits/modules/combat.dm
@@ -201,7 +201,7 @@
/obj/item/hardsuit_module/mounted/energy_blade/process(delta_time)
if(holder && holder.wearer)
- if(!(locate(/obj/item/melee/energy/blade) in holder.wearer))
+ if(!(locate(/obj/item/melee/transforming/blade) in holder.wearer))
deactivate()
return 0
@@ -218,7 +218,7 @@
deactivate()
return
- var/obj/item/melee/energy/blade/blade = new(M)
+ var/obj/item/melee/transforming/blade/blade = new(M)
blade.creator = M
M.put_in_hands(blade)
@@ -231,7 +231,7 @@
if(!M)
return
- for(var/obj/item/melee/energy/blade/blade in M.contents)
+ for(var/obj/item/melee/transforming/blade/blade in M.contents)
qdel(blade)
/obj/item/hardsuit_module/fabricator
diff --git a/code/modules/hardsuits/suits/merc.dm b/code/modules/hardsuits/suits/merc.dm
index ce1877f6d356..93044c0401d8 100644
--- a/code/modules/hardsuits/suits/merc.dm
+++ b/code/modules/hardsuits/suits/merc.dm
@@ -31,7 +31,7 @@
/obj/item/ammo_magazine,
/obj/item/ammo_casing,
/obj/item/melee/baton,
- /obj/item/melee/energy/sword,
+ /obj/item/melee/transforming/sword,
/obj/item/handcuffs,
/obj/item/bluespace_radio,
)
diff --git a/code/modules/loot/packs/weapons.dm b/code/modules/loot/packs/weapons.dm
index 2443fa9c5f6c..b93b062850c4 100644
--- a/code/modules/loot/packs/weapons.dm
+++ b/code/modules/loot/packs/weapons.dm
@@ -3,7 +3,7 @@
/datum/prototype/struct/loot_pack/weapons/melee1
some = list(
- /obj/item/melee/energy/sword,
+ /obj/item/melee/transforming/sword,
/obj/item/shield/energy,
/obj/item/melee/baton,
/obj/item/melee/chainofcommand,
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon-defense.dm
similarity index 100%
rename from code/modules/mob/living/carbon/carbon_defense.dm
rename to code/modules/mob/living/carbon/carbon-defense.dm
diff --git a/code/modules/mob/living/defense.dm b/code/modules/mob/living/living-defense.dm
similarity index 96%
rename from code/modules/mob/living/defense.dm
rename to code/modules/mob/living/living-defense.dm
index 8843ef0a39c6..6be6787dc9d5 100644
--- a/code/modules/mob/living/defense.dm
+++ b/code/modules/mob/living/living-defense.dm
@@ -41,41 +41,6 @@
log_world("## DEBUG: Armor when [src] was attacked was [armor].")
return armor
-/*
- //Old armor code here.
- if(armour_pen >= 100)
- return 0 //might as well just skip the processing
-
- var/armor = legacy_mob_armor(def_zone, attack_flag)
- var/absorb = 0
-
- //Roll armour
- if(prob(armor))
- absorb += 1
- if(prob(armor))
- absorb += 1
-
- //Roll penetration
- if(prob(armour_pen))
- absorb -= 1
- if(prob(armour_pen))
- absorb -= 1
-
- if(absorb >= 2)
- if(absorb_text)
- show_message("[absorb_text]")
- else
- show_message("Your armor absorbs the blow!")
- return 2
- if(absorb == 1)
- if(absorb_text)
- show_message("[soften_text]",4)
- else
- show_message("Your armor softens the blow!")
- return 1
- return 0
-*/
-
//Certain pieces of armor actually absorb flat amounts of damage from income attacks
/mob/living/proc/get_armor_soak(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0)
var/soaked = legacy_mob_soak(def_zone, attack_flag)
diff --git a/code/modules/mob/living/mobility.dm b/code/modules/mob/living/living-mobility.dm
similarity index 97%
rename from code/modules/mob/living/mobility.dm
rename to code/modules/mob/living/living-mobility.dm
index 9f0697f85618..0ba6e1da1673 100644
--- a/code/modules/mob/living/mobility.dm
+++ b/code/modules/mob/living/living-mobility.dm
@@ -1,3 +1,6 @@
+//* This file is explicitly licensed under the MIT license. *//
+//* Copyright (c) 2024 silicons *//
+
/mob/living/update_mobility(blocked, forced)
// this proc looks mildly heretical and pyramid of doomy
// for micro-optimization purposes.
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station/misc.dm b/code/modules/mob/living/silicon/robot/robot_modules/station/misc.dm
index 1d21b94abe8a..53aa5faf35b3 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/station/misc.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/station/misc.dm
@@ -37,7 +37,7 @@
/obj/item/robot_module/robot/standard/handle_special_module_init(mob/living/silicon/robot/R)
. = ..()
- src.emag = new /obj/item/melee/energy/sword(src)
+ src.emag = new /obj/item/melee/transforming/sword(src)
/obj/item/robot_module/robot/quad/basic
name = "Standard Quadruped module"
@@ -59,4 +59,4 @@
. = ..()
// These get a larger water synth.
synths_by_kind[MATSYN_WATER]:max_energy = 1000
- src.emag = new /obj/item/melee/energy/sword(src)
+ src.emag = new /obj/item/melee/transforming/sword(src)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/swarm.dm b/code/modules/mob/living/silicon/robot/robot_modules/swarm.dm
index 543a007c2d6d..a1b7b5fd6fff 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/swarm.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/swarm.dm
@@ -27,4 +27,4 @@
/obj/item/robot_module/drone/swarm/melee/get_modules()
. = ..()
- . |= /obj/item/melee/energy/sword/ionic_rapier/lance
+ . |= /obj/item/melee/transforming/sword/ionic_rapier/lance
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm
index 02c593c5337c..a87fce098bdd 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm
@@ -35,7 +35,7 @@
. = ..()
. |= list(
/obj/item/pinpointer/shuttle/merc,
- /obj/item/melee/energy/sword
+ /obj/item/melee/transforming/sword
)
/obj/item/robot_module/robot/syndicate/handle_special_module_init(mob/living/silicon/robot/R)
@@ -90,7 +90,7 @@
/obj/item/multitool/ai_detector,
/obj/item/pickaxe/plasmacutter,
/obj/item/rcd/electric/mounted/borg/lesser, // Can't eat rwalls to prevent AI core cheese.
- /obj/item/melee/energy/sword/ionic_rapier,
+ /obj/item/melee/transforming/sword/ionic_rapier,
// FBP repair.
/obj/item/robotanalyzer,
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm
index bfac17fedee4..e1effc0ec9e9 100644
--- a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm
@@ -161,7 +161,7 @@
attack_edge = 1
attacktext = list("slashed")
- loot_list = list(/obj/item/melee/energy/sword = 100, /obj/item/shield/energy = 100)
+ loot_list = list(/obj/item/melee/transforming/sword = 100, /obj/item/shield/energy = 100)
// They have a shield, so they try to block
/mob/living/simple_mob/humanoid/merc/melee/sword/attackby(var/obj/item/O as obj, var/mob/user as mob)
@@ -683,7 +683,7 @@
ai_holder_type = /datum/ai_holder/polaris/simple_mob/melee/evasive
corpse = /obj/spawner/corpse/vox/boarder_m
- loot_list = list(/obj/item/melee/energy/sword = 100)
+ loot_list = list(/obj/item/melee/transforming/sword = 100)
// They're good with the swords? I dunno. I like the idea they can deflect.
/mob/living/simple_mob/humanoid/merc/voxpirate/boarder/attackby(var/obj/item/O, var/mob/user)
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm
index d7716b6f4471..4ffd12f485c4 100644
--- a/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm
@@ -122,7 +122,7 @@
attack_sound = 'sound/weapons/blade1.ogg'
- loot_list = list(/obj/item/melee/energy/sword/pirate = 100)
+ loot_list = list(/obj/item/melee/transforming/sword/pirate = 100)
corpse = /obj/spawner/corpse/pirate/melee_energy
@@ -134,7 +134,7 @@
icon_living = "piratemelee-las-armor"
movement_cooldown = 4
armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
- loot_list = list(/obj/item/melee/energy/sword/pirate = 100, /obj/item/clothing/accessory/armor/armorplate/stab = 100)
+ loot_list = list(/obj/item/melee/transforming/sword/pirate = 100, /obj/item/clothing/accessory/armor/armorplate/stab = 100)
corpse = /obj/spawner/corpse/pirate/melee_energy_armor
@@ -352,7 +352,7 @@
armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
- loot_list = list(/obj/item/melee/energy/sword/pirate = 100, /obj/item/clothing/suit/armor/riot/alt = 100)
+ loot_list = list(/obj/item/melee/transforming/sword/pirate = 100, /obj/item/clothing/suit/armor/riot/alt = 100)
corpse = /obj/spawner/corpse/pirate/mate
@@ -526,13 +526,13 @@
icon_state = "old-piratemelee-las"
icon_living = "old-piratemelee-las"
icon_dead = "old-piratemelee_dead"
- loot_list = list(/obj/item/melee/energy/sword/pirate = 100)
+ loot_list = list(/obj/item/melee/transforming/sword/pirate = 100)
//Armored Variant
/mob/living/simple_mob/humanoid/pirate/las/armored/old
icon_state = "old-piratemelee-las-armor"
icon_living = "old-piratemelee-las-armor"
- loot_list = list(/obj/item/melee/energy/sword/pirate = 100, /obj/item/clothing/suit/armor/material/makeshift = 100)
+ loot_list = list(/obj/item/melee/transforming/sword/pirate = 100, /obj/item/clothing/suit/armor/material/makeshift = 100)
//Shield Pirate
/mob/living/simple_mob/humanoid/pirate/shield/old
@@ -653,7 +653,7 @@
armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
- loot_list = list(/obj/item/melee/energy/sword/pirate = 100, /obj/item/clothing/suit/pirate = 100)
+ loot_list = list(/obj/item/melee/transforming/sword/pirate = 100, /obj/item/clothing/suit/pirate = 100)
///////////////////////////////
diff --git a/code/modules/mob/health.dm b/code/modules/mob/mob-health.dm
similarity index 100%
rename from code/modules/mob/health.dm
rename to code/modules/mob/mob-health.dm
diff --git a/code/modules/mob/life.dm b/code/modules/mob/mob-life.dm
similarity index 100%
rename from code/modules/mob/life.dm
rename to code/modules/mob/mob-life.dm
diff --git a/code/modules/mob/mobility.dm b/code/modules/mob/mob-mobility.dm
similarity index 96%
rename from code/modules/mob/mobility.dm
rename to code/modules/mob/mob-mobility.dm
index ccc009cc439e..3e89eb8eb3ff 100644
--- a/code/modules/mob/mobility.dm
+++ b/code/modules/mob/mob-mobility.dm
@@ -1,3 +1,6 @@
+//* This file is explicitly licensed under the MIT license. *//
+//* Copyright (c) 2024 silicons *//
+
//! Mobility: The ability of mobs to perform actions.
//? We primarily use flags and a proc to differentiate this
//? However, the eventual transition to traits will be done at some point.
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 9f0a45944492..bed89dbca36b 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -205,7 +205,7 @@
name = "kinetic force"
icon_state = null
damage = 30
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
damage_flag = ARMOR_BOMB
range = 4
// log_override = TRUE
@@ -216,7 +216,7 @@
/obj/projectile/kinetic/premium
damage = 40
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
range = 5
/obj/projectile/kinetic/Destroy()
diff --git a/code/modules/projectiles/guns/energy/particle.dm b/code/modules/projectiles/guns/energy/particle.dm
index 910bedde7903..23374389afca 100644
--- a/code/modules/projectiles/guns/energy/particle.dm
+++ b/code/modules/projectiles/guns/energy/particle.dm
@@ -174,7 +174,7 @@
icon = 'icons/obj/projectiles_vr.dmi'
icon_state = "particle"
damage = 40
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_ENERGY
embed_chance = 0
diff --git a/code/modules/projectiles/guns/projectile/boltaction.dm b/code/modules/projectiles/guns/projectile/boltaction.dm
index e19910e122dd..5126fa7915c7 100644
--- a/code/modules/projectiles/guns/projectile/boltaction.dm
+++ b/code/modules/projectiles/guns/projectile/boltaction.dm
@@ -49,7 +49,7 @@
// Stole hacky terrible code from doublebarrel shotgun. -Spades
/obj/item/gun/ballistic/shotgun/pump/rifle/ceremonial/attackby(var/obj/item/A as obj, mob/user as mob)
- if(istype(A, /obj/item/surgical/circular_saw) || istype(A, /obj/item/melee/energy) || istype(A, /obj/item/pickaxe/plasmacutter) && w_class != WEIGHT_CLASS_NORMAL)
+ if(istype(A, /obj/item/surgical/circular_saw) || istype(A, /obj/item/melee/transforming) || istype(A, /obj/item/pickaxe/plasmacutter) && w_class != WEIGHT_CLASS_NORMAL)
to_chat(user, "You begin to shorten the barrel and stock of \the [src].")
if(loaded.len)
afterattack(user, user)
@@ -89,7 +89,7 @@
holy = TRUE
/obj/item/gun/ballistic/shotgun/pump/rifle/lever/attackby(var/obj/item/A as obj, mob/user as mob)
- if(istype(A, /obj/item/surgical/circular_saw) || istype(A, /obj/item/melee/energy) || istype(A, /obj/item/pickaxe/plasmacutter) && w_class != WEIGHT_CLASS_NORMAL)
+ if(istype(A, /obj/item/surgical/circular_saw) || istype(A, /obj/item/melee/transforming) || istype(A, /obj/item/pickaxe/plasmacutter) && w_class != WEIGHT_CLASS_NORMAL)
to_chat(user, "You begin to shorten the barrel and stock of \the [src].")
if(loaded.len)
afterattack(user, user)
@@ -133,7 +133,7 @@
holy = TRUE
/obj/item/gun/ballistic/shotgun/pump/rifle/lever/vintage/attackby(var/obj/item/A as obj, mob/user as mob)
- if(istype(A, /obj/item/surgical/circular_saw) || istype(A, /obj/item/melee/energy) || istype(A, /obj/item/pickaxe/plasmacutter) && w_class != WEIGHT_CLASS_NORMAL)
+ if(istype(A, /obj/item/surgical/circular_saw) || istype(A, /obj/item/melee/transforming) || istype(A, /obj/item/pickaxe/plasmacutter) && w_class != WEIGHT_CLASS_NORMAL)
to_chat(user, "You begin to shorten the barrel and stock of \the [src].")
if(loaded.len)
afterattack(user, user)
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 0e21977cc57a..b3410a351a9d 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -186,7 +186,7 @@
//this is largely hacky and bad :( -Pete
/obj/item/gun/ballistic/shotgun/doublebarrel/attackby(var/obj/item/A as obj, mob/user as mob)
- if(istype(A, /obj/item/surgical/circular_saw) || istype(A, /obj/item/melee/energy) || istype(A, /obj/item/pickaxe/plasmacutter))
+ if(istype(A, /obj/item/surgical/circular_saw) || istype(A, /obj/item/melee/transforming) || istype(A, /obj/item/pickaxe/plasmacutter))
to_chat(user, "You begin to shorten the barrel of \the [src].")
if(loaded.len)
var/burstsetting = burst
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 37d219c36bde..bac385a3780b 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -108,7 +108,7 @@
/// damage tier - goes hand in hand with [damage_armor]
var/damage_tier = BULLET_TIER_DEFAULT
/// todo: legacy - BRUTE, BURN, TOX, OXY, CLONE, HALLOSS, ELECTROCUTE, BIOACID are the only things that should be in here
- var/damage_type = BRUTE
+ var/damage_type = DAMAGE_TYPE_BRUTE
/// armor flag for damage - goes hand in hand with [damage_tier]
var/damage_flag = ARMOR_BULLET
/// damage mode - see [code/__DEFINES/combat/damage.dm]
diff --git a/code/modules/projectiles/projectile/animate.dm b/code/modules/projectiles/projectile/animate.dm
index 2052f40c4240..91a5c339a471 100644
--- a/code/modules/projectiles/projectile/animate.dm
+++ b/code/modules/projectiles/projectile/animate.dm
@@ -2,7 +2,7 @@
name = "bolt of animation"
icon_state = "ice_1"
damage = 0
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
nodamage = 1
damage_flag = ARMOR_ENERGY
light_range = 2
diff --git a/code/modules/projectiles/projectile/arc.dm b/code/modules/projectiles/projectile/arc.dm
index ba2b2be7fadb..3475725627d2 100644
--- a/code/modules/projectiles/projectile/arc.dm
+++ b/code/modules/projectiles/projectile/arc.dm
@@ -122,7 +122,7 @@
name = "energy missile"
icon_state = "force_missile"
damage = 15
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
/obj/projectile/arc/blue_energy/on_impact(turf/T)
for(var/mob/living/L in T)
diff --git a/code/modules/projectiles/projectile/beam/beams.dm b/code/modules/projectiles/projectile/beam/beams.dm
index be6dbe5b48ba..6e95f09e1ba6 100644
--- a/code/modules/projectiles/projectile/beam/beams.dm
+++ b/code/modules/projectiles/projectile/beam/beams.dm
@@ -4,7 +4,7 @@
fire_sound = 'sound/weapons/weaponsounds_laserstrong.ogg'
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GLASS | ATOM_PASS_GRILLE
damage = 40
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_LASER
eyeblur = 4
var/frequency = 1
@@ -23,7 +23,7 @@
name = "laser"
icon_state = "laser"
damage = 0
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_LASER
eyeblur = 2
impact_sounds = null
@@ -153,7 +153,7 @@
damage = 0
eyeblur = 0
no_attack_log = 1
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_LASER
combustion = FALSE
@@ -218,7 +218,7 @@
nodamage = 1
taser_effect = 1
agony = 40
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
light_color = "#FFFFFF"
impact_sounds = null
@@ -246,7 +246,7 @@
nodamage = 1
taser_effect = 1
agony = 30
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
light_color = "#FFFFFF"
combustion = FALSE
@@ -292,7 +292,7 @@
/obj/projectile/beam/shock
name = "shock beam"
icon_state = "lightning"
- damage_type = ELECTROCUTE
+ damage_type = DAMAGE_TYPE_ELECTROCUTE
muzzle_type = /obj/effect/projectile/muzzle/lightning
tracer_type = /obj/effect/projectile/tracer/lightning
@@ -318,7 +318,7 @@
name = "point defense salvo"
icon_state = "laser"
damage = 15
- damage_type = ELECTROCUTE //You should be safe inside a voidsuit
+ damage_type = DAMAGE_TYPE_ELECTROCUTE //You should be safe inside a voidsuit
sharp = FALSE //"Wide" spectrum beam
light_color = "#A9980A"
diff --git a/code/modules/projectiles/projectile/beam/beams_vr.dm b/code/modules/projectiles/projectile/beam/beams_vr.dm
index 7e2e9e04484c..65e067c3af66 100644
--- a/code/modules/projectiles/projectile/beam/beams_vr.dm
+++ b/code/modules/projectiles/projectile/beam/beams_vr.dm
@@ -4,7 +4,7 @@
nodamage = 1
taser_effect = 1
agony = 100 //One shot stuns for the time being until adjustments are fully made.
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
light_color = "#00CECE"
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
@@ -19,7 +19,7 @@
icon_state = "xray"
nodamage = 1
agony = 5
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
light_color = "#00CC33"
muzzle_type = /obj/effect/projectile/muzzle/xray
@@ -48,7 +48,7 @@
damage = 0 //stops it damaging walls
nodamage = TRUE
no_attack_log = TRUE
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_LASER
light_color = "#80F5FF"
diff --git a/code/modules/projectiles/projectile/blob.dm b/code/modules/projectiles/projectile/blob.dm
index 6b643c160f2b..2adcd0b8d554 100644
--- a/code/modules/projectiles/projectile/blob.dm
+++ b/code/modules/projectiles/projectile/blob.dm
@@ -3,7 +3,7 @@
icon_state = "declone"
damage = 3
armor_penetration = 40
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
damage_flag = ARMOR_MELEE
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_BLOB
fire_sound = 'sound/effects/slime_squish.ogg'
@@ -43,7 +43,7 @@
reagents.add_reagent(reagent, reagent_vol)
/obj/projectile/energy/blob/toxic
- damage_type = TOX
+ damage_type = DAMAGE_TYPE_TOX
damage_flag = ARMOR_BIO
my_chems = list("amatoxin")
@@ -51,7 +51,7 @@
splatter = TRUE
/obj/projectile/energy/blob/acid
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_BIO
my_chems = list("sacid", "mold")
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index e14c5a103822..1bea2d3e23e0 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -3,7 +3,7 @@
icon_state = "bullet"
fire_sound = 'sound/weapons/weaponsounds_rifleshot.ogg'
damage = 60
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
nodamage = 0
damage_flag = ARMOR_BULLET
embed_chance = 20 //Modified in the actual embed process, but this should keep embed chance about the same
@@ -340,12 +340,12 @@
/obj/projectile/bullet/suffocationbullet//How does this even work?
name = "co bullet"
damage = 20
- damage_type = OXY
+ damage_type = DAMAGE_TYPE_OXY
/obj/projectile/bullet/cyanideround
name = "poison bullet"
damage = 40
- damage_type = TOX
+ damage_type = DAMAGE_TYPE_TOX
/obj/projectile/bullet/cyanideround/jezzail
name = "toxic penetrator shard"
@@ -353,7 +353,7 @@
armor_penetration = 20
agony = 5
embed_chance = 1
- damage_type = TOX
+ damage_type = DAMAGE_TYPE_TOX
/obj/projectile/bullet/burstbullet
name = "exploding bullet"
@@ -465,7 +465,7 @@
name = "incendiary bullet"
icon_state = "bullet_alt"
damage = 15
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
incendiary = 1
flammability = 2
@@ -473,7 +473,7 @@
name = "dragonsbreath pellet"
icon_state = "bullet_alt"
damage = 10
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
incendiary = 1
flammability = 2
@@ -500,7 +500,7 @@
name = "12.7mm phoron slug"
icon_state = "bullet_alt"
damage = 60
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
incendiary = 1
flammability = 4
armor_penetration = 40
@@ -517,7 +517,7 @@
icon_state = "bullet_alt"
damage = 40
armor_penetration = 30
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
incendiary = 1
flammability = 4
penetrating = 1
@@ -531,7 +531,7 @@
/obj/projectile/bullet/pistol/cap // Just the primer, such as a cap gun.
name = "cap"
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
fire_sound = 'sound/effects/snap.ogg'
damage = 0
nodamage = 1
@@ -548,7 +548,7 @@
/obj/projectile/bullet/blank
name = "blank"
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
fire_sound = 'sound/weapons/weaponsounds_rifleshot.ogg' // Blanks still make loud noises.
damage = 0
nodamage = 1
diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm
index 866989306a42..b98c9fc7d740 100644
--- a/code/modules/projectiles/projectile/change.dm
+++ b/code/modules/projectiles/projectile/change.dm
@@ -2,7 +2,7 @@
name = "bolt of change"
icon_state = "ice_1"
damage = 0
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
nodamage = 1
damage_flag = ARMOR_ENERGY
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index 3479abf411f9..e36f1c0f1df9 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -2,7 +2,7 @@
name = "energy"
icon_state = "spark"
damage = 0
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_ENERGY
var/flash_strength = 10
@@ -92,7 +92,7 @@
icon_state = "declone"
fire_sound = 'sound/weapons/pulse3.ogg'
nodamage = 1
- damage_type = CLONE
+ damage_type = DAMAGE_TYPE_CLONE
irradiate = 40
light_range = 2
light_power = 0.5
@@ -104,7 +104,7 @@
name = "dart"
icon_state = "toxin"
damage = 5
- damage_type = TOX
+ damage_type = DAMAGE_TYPE_TOX
agony = 120
damage_flag = ARMOR_ENERGY
@@ -114,7 +114,7 @@
name = "bolt"
icon_state = "cbbolt"
damage = 10
- damage_type = TOX
+ damage_type = DAMAGE_TYPE_TOX
agony = 40
stutter = 10
@@ -126,7 +126,7 @@
name = "acidic spit"
icon_state = "neurotoxin"
damage = 30
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
agony = 10
damage_flag = ARMOR_BIO
armor_penetration = 25 // It's acid
@@ -137,7 +137,7 @@
name = "neurotoxic spit"
icon_state = "neurotoxin"
damage = 5
- damage_type = BIOACID
+ damage_type = DAMAGE_TYPE_BIOACID
agony = 80
damage_flag = ARMOR_BIO
armor_penetration = 25 // It's acid-based
@@ -148,7 +148,7 @@
name = "neurotoxic spit"
icon_state = "neurotoxin"
damage = 20
- damage_type = BIOACID
+ damage_type = DAMAGE_TYPE_BIOACID
agony = 20
damage_flag = ARMOR_BIO
armor_penetration = 25 // It's acid-based
@@ -158,7 +158,7 @@
icon_state = "energy"
fire_sound = 'sound/effects/stealthoff.ogg'
damage = 20
- damage_type = TOX
+ damage_type = DAMAGE_TYPE_TOX
irradiate = 20
light_range = 2
light_power = 0.5
@@ -174,7 +174,7 @@
range = 4
damage = 5
agony = 55
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
vacuum_traversal = 0 //Projectile disappears in empty space
/obj/projectile/energy/plasmastun/proc/bang(var/mob/living/carbon/M)
@@ -213,7 +213,7 @@
damage = 5
armor_penetration = 75
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GLASS | ATOM_PASS_GRILLE
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_ENERGY
light_color = "#0000FF"
diff --git a/code/modules/projectiles/projectile/hook.dm b/code/modules/projectiles/projectile/hook.dm
index 987beff181ee..fec1351cdd1e 100644
--- a/code/modules/projectiles/projectile/hook.dm
+++ b/code/modules/projectiles/projectile/hook.dm
@@ -10,7 +10,7 @@
damage = 5
speed = 2
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_ENERGY
armor_penetration = 15
@@ -44,7 +44,7 @@
agony = 20
if(INTENT_GRAB)
damage_flag = ARMOR_MELEE
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
if(INTENT_DISARM)
damage_flag = ARMOR_MELEE
if(prob(30)) // A chance for a successful hit to either knock someone down, or cause minor disorientation.
@@ -54,7 +54,7 @@
eyeblur = 3
if(INTENT_HELP)
silenced = 1
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
..() // Does the regular launching stuff.
diff --git a/code/modules/projectiles/projectile/magnetic.dm b/code/modules/projectiles/projectile/magnetic.dm
index e1728daf1685..15ff9c3fd0b1 100644
--- a/code/modules/projectiles/projectile/magnetic.dm
+++ b/code/modules/projectiles/projectile/magnetic.dm
@@ -34,7 +34,7 @@
weaken = 0
stun = 0
damage = 30
- damage_type = SEARING
+ damage_type = DAMAGE_TYPE_SEARING
embed_chance = 0
/obj/projectile/bullet/magnetic/heated/weak
diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm
index 41dbc2937b83..ab7060e41731 100644
--- a/code/modules/projectiles/projectile/reusable.dm
+++ b/code/modules/projectiles/projectile/reusable.dm
@@ -118,5 +118,5 @@
name = "riot dart"
desc = "A flexible projectile made out of hardened orange foam with a red plastic tip."
damage = 10
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
ammo_type = /obj/item/ammo_casing/foam/riot
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 918337188c10..0a00924f9366 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -3,7 +3,7 @@
icon_state = "ion"
fire_sound = 'sound/weapons/Laser.ogg'
damage = 0
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
nodamage = 1
damage_flag = ARMOR_ENERGY
light_range = 2
@@ -50,7 +50,7 @@
icon_state = "ice_2"
fire_sound = 'sound/weapons/pulse3.ogg'
damage = 0
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GLASS | ATOM_PASS_GRILLE
nodamage = 1
damage_flag = ARMOR_ENERGY // It actually checks heat/cold protection.
@@ -97,7 +97,7 @@
icon = 'icons/obj/meteor.dmi'
icon_state = "smallf"
damage = 0
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
nodamage = 1
damage_flag = ARMOR_BULLET
@@ -116,7 +116,7 @@
/obj/projectile/meteor/slug
name = "meteor"
damage = 25
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
nodamage = 0
/obj/projectile/energy/floramut
@@ -124,7 +124,7 @@
icon_state = "energy"
fire_sound = 'sound/effects/stealthoff.ogg'
damage = 0
- damage_type = TOX
+ damage_type = DAMAGE_TYPE_TOX
nodamage = 1
damage_flag = ARMOR_ENERGY
light_range = 2
@@ -171,7 +171,7 @@
icon_state = "energy2"
fire_sound = 'sound/effects/stealthoff.ogg'
damage = 0
- damage_type = TOX
+ damage_type = DAMAGE_TYPE_TOX
nodamage = 1
damage_flag = ARMOR_ENERGY
var/singleton/plantgene/gene = null
@@ -181,7 +181,7 @@
icon_state = "energy2"
fire_sound = 'sound/effects/stealthoff.ogg'
damage = 0
- damage_type = TOX
+ damage_type = DAMAGE_TYPE_TOX
nodamage = 1
damage_flag = ARMOR_ENERGY
light_range = 2
@@ -216,7 +216,7 @@
damage = 1 // stop trying to murderbone with a fake gun dumbass!!!
embed_chance = 0 // nope
nodamage = 1
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
muzzle_type = /obj/effect/projectile/muzzle/bullet
/obj/projectile/bola
@@ -224,7 +224,7 @@
icon_state = "bola"
damage = 5
embed_chance = 0 //Nada.
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
muzzle_type = null
combustion = FALSE
@@ -243,7 +243,7 @@
icon_state = "bola"
damage = 10
embed_chance = 0 //Nada.
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
muzzle_type = null
combustion = FALSE
@@ -262,7 +262,7 @@
fire_sound = 'sound/weapons/gauss_shoot.ogg'
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GRILLE
damage = 70
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_LASER
light_range = 4
light_power = 3
@@ -343,7 +343,7 @@
/obj/projectile/bullet/honker/lethal
damage = 20
nodamage = FALSE
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
/obj/projectile/bullet/honker/lethal/Initialize(mapload)
. = ..()
@@ -358,19 +358,19 @@
//Bio-Organic
/obj/projectile/bullet/organic
damage = 10
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
damage_flag = ARMOR_BULLET
impact_sounds = 'sound/effects/splat.ogg'
icon_state = "organic"
/obj/projectile/bullet/organic/wax
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
color = "#E6E685"
icon_state = "organic"
/obj/projectile/bullet/organic/stinger
damage = 15
- damage_type = TOX
+ damage_type = DAMAGE_TYPE_TOX
impact_sounds = 'sound/weapons/bladeslice.ogg'
icon_state = "SpearFlight"
@@ -379,7 +379,7 @@
name ="plasma bolt"
icon_state= "fuel-tritium"
damage = 50
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_ENERGY
light_range = 4
light_power = 3
diff --git a/code/modules/projectiles/unsorted/magic.dm b/code/modules/projectiles/unsorted/magic.dm
index 52ed8b77d14c..772d92bda42d 100644
--- a/code/modules/projectiles/unsorted/magic.dm
+++ b/code/modules/projectiles/unsorted/magic.dm
@@ -2,7 +2,7 @@
name = "bolt of nothing"
icon_state = "energy"
damage = 0
- damage_type = OXY
+ damage_type = DAMAGE_TYPE_OXY
nodamage = 1
armor_penetration = 100
var/magic = TRUE
@@ -25,7 +25,7 @@
name = "bolt of resurrection"
icon_state = "ion"
damage = 0
- damage_type = OXY
+ damage_type = DAMAGE_TYPE_OXY
nodamage = 1
/obj/projectile/magic/resurrection/on_hit(mob/living/carbon/target)
@@ -44,7 +44,7 @@
name = "bolt of teleportation"
icon_state = "bluespace"
damage = 0
- damage_type = OXY
+ damage_type = DAMAGE_TYPE_OXY
nodamage = 1
var/inner_tele_radius = 0
var/outer_tele_radius = 6
@@ -72,7 +72,7 @@
name = "bolt of door creation"
icon_state = "energy"
damage = 0
- damage_type = OXY
+ damage_type = DAMAGE_TYPE_OXY
nodamage = 1
var/list/door_types = list(/obj/structure/simple_door/wood, /obj/structure/simple_door/iron, /obj/structure/simple_door/silver, /obj/structure/simple_door/gold, /obj/structure/simple_door/uranium, /obj/structure/simple_door/sandstone, /obj/structure/simple_door/phoron, /obj/structure/simple_door/diamond)
@@ -101,7 +101,7 @@
name = "bolt of change"
icon_state = "ice_1"
damage = 0
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
nodamage = 1
/obj/projectile/magic/change/on_hit(atom/change)
@@ -250,7 +250,7 @@
name = "bolt of animation"
icon_state = "red_1"
damage = 0
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
nodamage = 1
/obj/projectile/magic/animate/on_hit(atom/target, blocked = FALSE)
@@ -295,7 +295,7 @@
name = "blade energy"
icon_state = "lavastaff"
damage = 15
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
sharp = TRUE
magic = TRUE
@@ -312,7 +312,7 @@
name = "arcane bolt"
icon_state = "arcane_barrage"
damage = 20
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
nodamage = 0
armor_penetration = 0
magic = TRUE
@@ -415,7 +415,7 @@
name = "lightning bolt"
icon_state = "tesla_projectile" //Better sprites are REALLY needed and appreciated!~
damage = 15
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
nodamage = 0
magic = TRUE
@@ -448,7 +448,7 @@
name = "bolt of fireball"
icon_state = "fireball"
damage = 10
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
nodamage = 0
//explosion values
@@ -518,7 +518,7 @@
name = "enchanted card"
desc = "A piece of paper enchanted to give it extreme durability and stiffness, along with a very hot burn to anyone unfortunate enough to get hit by a charged one."
icon_state = "spellcard"
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage = 2
/obj/projectile/magic/spellcard/book
@@ -526,7 +526,7 @@
name = "enchanted page"
desc = "A piece of paper enchanted to give it extreme durability and stiffness, along with a very hot burn to anyone unfortunate enough to get hit by a charged one."
icon_state = "spellcard"
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage = 12
magic = TRUE
diff --git a/code/modules/research/designs/weapons.dm b/code/modules/research/designs/weapons.dm
index 603af9163040..c5d3ba4c6e6a 100644
--- a/code/modules/research/designs/weapons.dm
+++ b/code/modules/research/designs/weapons.dm
@@ -332,14 +332,14 @@
id = "chargesword"
req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 4, TECH_ARCANE = 1)
materials_base = list(MAT_PLASTEEL = 3500, MAT_GLASS = 1000, MAT_LEAD = 2250, MAT_METALHYDROGEN = 500)
- build_path = /obj/item/melee/energy/sword/charge
+ build_path = /obj/item/melee/transforming/sword/charge
/datum/design/science/weapon/melee/eaxe
design_name = "Energy Axe"
id = "chargeaxe"
req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5, TECH_ENGINEERING = 4, TECH_ILLEGAL = 4)
materials_base = list(MAT_PLASTEEL = 3500, MAT_OSMIUM = 2000, MAT_LEAD = 2000, MAT_METALHYDROGEN = 500)
- build_path = /obj/item/melee/energy/axe/charge
+ build_path = /obj/item/melee/transforming/axe/charge
/datum/design/science/weapon/grenade
abstract_type = /datum/design/science/weapon/grenade
diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm
index 55b3c517a8da..a253b0ea9404 100644
--- a/code/modules/surgery/generic.dm
+++ b/code/modules/surgery/generic.dm
@@ -76,7 +76,7 @@
/obj/item/surgical/scalpel/laser3 = 95, \
/obj/item/surgical/scalpel/laser2 = 85, \
/obj/item/surgical/scalpel/laser1 = 75, \
- /obj/item/melee/energy/sword = 5
+ /obj/item/melee/transforming/sword = 5
)
priority = 2
req_open = 0
diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm b/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm
index c7ee2819ed9c..cae2fb8c80fd 100644
--- a/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm
+++ b/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm
@@ -87,7 +87,7 @@
icon_state = "omnilaser"
nodamage = 1
agony = 5
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
light_color = "#00CC33"
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
diff --git a/code/modules/vore/fluffstuff/guns/pummeler.dm b/code/modules/vore/fluffstuff/guns/pummeler.dm
index 932e1dccae58..afce4f2043f2 100644
--- a/code/modules/vore/fluffstuff/guns/pummeler.dm
+++ b/code/modules/vore/fluffstuff/guns/pummeler.dm
@@ -30,7 +30,7 @@
name = "sonic blast"
icon_state = "sound"
damage = 5
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
damage_flag = ARMOR_MELEE
embed_chance = 0
vacuum_traversal = 0
diff --git a/code/modules/vore/fluffstuff/guns/sickshot.dm b/code/modules/vore/fluffstuff/guns/sickshot.dm
index 1fdbb998dab9..9e789759b3e7 100644
--- a/code/modules/vore/fluffstuff/guns/sickshot.dm
+++ b/code/modules/vore/fluffstuff/guns/sickshot.dm
@@ -28,7 +28,7 @@
icon_state = "sound"
damage = 5
armor_penetration = 30
- damage_type = BURN
+ damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_MELEE
embed_chance = 0
vacuum_traversal = 0
diff --git a/code/modules/xenoarcheaology/artifacts/artifact.dm b/code/modules/xenoarcheaology/artifacts/artifact.dm
index b29df3796257..0eb6ff1fab3c 100644
--- a/code/modules/xenoarcheaology/artifacts/artifact.dm
+++ b/code/modules/xenoarcheaology/artifacts/artifact.dm
@@ -223,7 +223,7 @@
if(secondary_effect && secondary_effect.trigger == TRIGGER_TOXIN && prob(25))
secondary_effect.ToggleActivate(0)
else if(istype(W,/obj/item/melee/baton) && W:status ||\
- istype(W,/obj/item/melee/energy) ||\
+ istype(W,/obj/item/melee/transforming) ||\
istype(W,/obj/item/melee/cultblade) ||\
istype(W,/obj/item/card/emag) ||\
istype(W,/obj/item/multitool))
diff --git a/maps/away_missions/140x140/zoo.dmm b/maps/away_missions/140x140/zoo.dmm
index 21cd0d63ed61..ceae326a7445 100644
--- a/maps/away_missions/140x140/zoo.dmm
+++ b/maps/away_missions/140x140/zoo.dmm
@@ -73,7 +73,7 @@
/obj/item/stolenpackage,
/obj/item/plastique,
/obj/item/plastique,
-/obj/item/melee/energy/sword/pirate,
+/obj/item/melee/transforming/sword/pirate,
/turf/space,
/area/awaymission/zoo)
"aj" = (
diff --git a/maps/away_missions/archive/spacebattle.dmm b/maps/away_missions/archive/spacebattle.dmm
index f30e70a32413..c82f30f6788e 100644
--- a/maps/away_missions/archive/spacebattle.dmm
+++ b/maps/away_missions/archive/spacebattle.dmm
@@ -271,7 +271,7 @@
/area/awaymission/spacebattle/syndicate3)
"bw" = (
/obj/structure/table/reinforced,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/turf/simulated/floor,
/area/awaymission/spacebattle/syndicate1)
"bx" = (
@@ -930,7 +930,7 @@
/area/awaymission/spacebattle/cruiser)
"fa" = (
/obj/spawner/corpse/syndicatesoldier,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/obj/effect/debris/cleanable/blood,
/turf/simulated/floor,
/area/awaymission/spacebattle/cruiser)
diff --git a/maps/away_missions/archive/stationCollision.dmm b/maps/away_missions/archive/stationCollision.dmm
index c6d6e8660a04..46d9598cb98b 100644
--- a/maps/away_missions/archive/stationCollision.dmm
+++ b/maps/away_missions/archive/stationCollision.dmm
@@ -2791,7 +2791,7 @@
/turf/simulated/floor,
/area/awaymission/arrivalblock)
"kN" = (
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/obj/item/clothing/shoes/syndigaloshes,
/obj/item/clothing/under/syndicate,
/obj/effect/decal/remains/human{
diff --git a/maps/rift/levels/rift-11-orbital.dmm b/maps/rift/levels/rift-11-orbital.dmm
index 1b88d57ae0f6..e95fe85f0706 100644
--- a/maps/rift/levels/rift-11-orbital.dmm
+++ b/maps/rift/levels/rift-11-orbital.dmm
@@ -6222,7 +6222,7 @@
/obj/item/clothing/suit/armor/tdome/red,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/melee/baton/loaded,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/turf/unsimulated/floor/dark,
/area/tdome/tdome1)
"tj" = (
@@ -6381,7 +6381,7 @@
/obj/structure/table/rack,
/obj/item/clothing/under/color/green,
/obj/item/clothing/shoes/brown,
-/obj/item/melee/energy/axe,
+/obj/item/melee/transforming/axe,
/turf/unsimulated/floor/dark,
/area/tdome/tdome1)
"vT" = (
@@ -6504,7 +6504,7 @@
/obj/item/clothing/suit/armor/tdome/green,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/melee/baton/loaded,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/turf/unsimulated/floor/dark,
/area/tdome/tdome1)
"xw" = (
@@ -9358,7 +9358,7 @@
/obj/structure/table/rack,
/obj/item/clothing/under/color/red,
/obj/item/clothing/shoes/brown,
-/obj/item/melee/energy/axe,
+/obj/item/melee/transforming/axe,
/turf/unsimulated/floor/dark,
/area/tdome/tdome1)
"Uk" = (
diff --git a/maps/sectors/piratebase_192/levels/piratebase_192.dmm b/maps/sectors/piratebase_192/levels/piratebase_192.dmm
index adb8f29930a7..278c6a0d7c55 100644
--- a/maps/sectors/piratebase_192/levels/piratebase_192.dmm
+++ b/maps/sectors/piratebase_192/levels/piratebase_192.dmm
@@ -5314,14 +5314,14 @@
/area/piratebase/captain)
"Wc" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/melee/energy/sword/pirate{
+/obj/item/melee/transforming/sword/pirate{
pixel_x = 5
},
-/obj/item/melee/energy/sword/pirate{
+/obj/item/melee/transforming/sword/pirate{
pixel_x = 5;
pixel_y = 5
},
-/obj/item/melee/energy/sword/pirate{
+/obj/item/melee/transforming/sword/pirate{
pixel_x = 5;
pixel_y = 10
},
diff --git a/maps/sectors/tradeport_140/levels/tradeport_140.dmm b/maps/sectors/tradeport_140/levels/tradeport_140.dmm
index 487df665ba8e..64569648019f 100644
--- a/maps/sectors/tradeport_140/levels/tradeport_140.dmm
+++ b/maps/sectors/tradeport_140/levels/tradeport_140.dmm
@@ -471,7 +471,7 @@
req_access = list(160)
},
/obj/structure/table/marble,
-/obj/item/melee/energy/hfmachete,
+/obj/item/melee/transforming/hfmachete,
/turf/simulated/floor/carpet/bcarpet,
/area/tradeport/cyndishow)
"bU" = (
diff --git a/maps/sectors/tradeport_192/levels/tradeport_192.dmm b/maps/sectors/tradeport_192/levels/tradeport_192.dmm
index 0fb7c51fbd46..e3b8dd721ce3 100644
--- a/maps/sectors/tradeport_192/levels/tradeport_192.dmm
+++ b/maps/sectors/tradeport_192/levels/tradeport_192.dmm
@@ -3061,7 +3061,7 @@
req_access = list(160)
},
/obj/structure/table/marble,
-/obj/item/melee/energy/hfmachete,
+/obj/item/melee/transforming/hfmachete,
/turf/simulated/floor/carpet/bcarpet,
/area/tradeport/cyndishow)
"kD" = (
diff --git a/maps/templates/admin/dhael_centcom.dmm b/maps/templates/admin/dhael_centcom.dmm
index e7cc4bbbc509..72a092761f76 100644
--- a/maps/templates/admin/dhael_centcom.dmm
+++ b/maps/templates/admin/dhael_centcom.dmm
@@ -235,11 +235,11 @@
/obj/item/shield/energy,
/obj/item/shield/energy,
/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/window/reinforced{
dir = 1
@@ -10694,11 +10694,11 @@
/obj/item/shield/energy,
/obj/item/shield/energy,
/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
/turf/unsimulated/floor{
icon_state = "dark"
},
@@ -11332,7 +11332,7 @@
/obj/structure/table/rack,
/obj/item/clothing/under/color/red,
/obj/item/clothing/shoes/brown,
-/obj/item/melee/energy/axe,
+/obj/item/melee/transforming/axe,
/turf/unsimulated/floor{
icon_state = "dark"
},
@@ -12059,7 +12059,7 @@
/obj/structure/table/rack,
/obj/item/clothing/under/color/green,
/obj/item/clothing/shoes/brown,
-/obj/item/melee/energy/axe,
+/obj/item/melee/transforming/axe,
/turf/unsimulated/floor{
icon_state = "dark"
},
@@ -12076,7 +12076,7 @@
/obj/item/clothing/suit/armor/tdome/green,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/melee/baton/loaded,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/turf/unsimulated/floor{
icon_state = "dark"
},
@@ -13315,7 +13315,7 @@
/obj/item/clothing/suit/armor/tdome/red,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/melee/baton/loaded,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/turf/unsimulated/floor{
icon_state = "dark"
},
diff --git a/maps/templates/admin/ert_base.dmm b/maps/templates/admin/ert_base.dmm
index 9c11eca30bff..31920ac56dc6 100644
--- a/maps/templates/admin/ert_base.dmm
+++ b/maps/templates/admin/ert_base.dmm
@@ -1357,11 +1357,11 @@
/area/shuttle/specops/centcom)
"cL" = (
/obj/structure/table/rack/steel,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
/obj/item/shield/energy,
/obj/item/shield/energy,
/obj/item/shield/energy,
diff --git a/maps/templates/admin/kk_mercship.dmm b/maps/templates/admin/kk_mercship.dmm
index 1a4d79112a8b..3b4c70df4e1d 100644
--- a/maps/templates/admin/kk_mercship.dmm
+++ b/maps/templates/admin/kk_mercship.dmm
@@ -9351,12 +9351,12 @@
/obj/item/shield/energy,
/obj/item/shield/energy,
/obj/item/shield/energy,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
/obj/structure/table/steel_reinforced,
/obj/machinery/atmospherics/component/unary/vent_scrubber/on{
dir = 4
diff --git a/maps/templates/admin/mercbase.dmm b/maps/templates/admin/mercbase.dmm
index 259bf3732a0f..5c5dad357b2b 100644
--- a/maps/templates/admin/mercbase.dmm
+++ b/maps/templates/admin/mercbase.dmm
@@ -495,12 +495,12 @@
/obj/item/shield/energy,
/obj/item/shield/energy,
/obj/item/shield/energy,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
/obj/machinery/recharger/wallcharger{
pixel_x = 5;
pixel_y = 32
diff --git a/maps/templates/admin/skipjack.dmm b/maps/templates/admin/skipjack.dmm
index caad2f925597..70f2adb9cc74 100644
--- a/maps/templates/admin/skipjack.dmm
+++ b/maps/templates/admin/skipjack.dmm
@@ -1099,7 +1099,7 @@
/area/shuttle/skipjack)
"cK" = (
/obj/structure/table/rack,
-/obj/item/melee/energy/sword/pirate,
+/obj/item/melee/transforming/sword/pirate,
/obj/item/clothing/suit/space/pirate,
/obj/item/clothing/suit/space/pirate,
/obj/item/tank/oxygen,
diff --git a/maps/templates/admin/thunderdome.dmm b/maps/templates/admin/thunderdome.dmm
index 31f85fdaa411..5c54815abb5e 100644
--- a/maps/templates/admin/thunderdome.dmm
+++ b/maps/templates/admin/thunderdome.dmm
@@ -26,7 +26,7 @@
/obj/structure/table/rack,
/obj/item/clothing/under/color/red,
/obj/item/clothing/shoes/brown,
-/obj/item/melee/energy/axe,
+/obj/item/melee/transforming/axe,
/turf/unsimulated/floor{
icon_state = "dark";
dir = 5
@@ -43,7 +43,7 @@
/obj/structure/table/rack,
/obj/item/clothing/under/color/green,
/obj/item/clothing/shoes/brown,
-/obj/item/melee/energy/axe,
+/obj/item/melee/transforming/axe,
/turf/unsimulated/floor{
icon_state = "dark";
dir = 5
@@ -77,7 +77,7 @@
/obj/item/clothing/suit/armor/tdome/red,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/melee/baton/loaded,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/turf/unsimulated/floor{
icon_state = "dark";
dir = 5
@@ -128,7 +128,7 @@
/obj/item/clothing/suit/armor/tdome/green,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/melee/baton/loaded,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/turf/unsimulated/floor{
icon_state = "dark";
dir = 5
diff --git a/maps/templates/shuttles/overmaps/generic/cruiser.dmm b/maps/templates/shuttles/overmaps/generic/cruiser.dmm
index a2748bc9d959..83b6bc394d31 100644
--- a/maps/templates/shuttles/overmaps/generic/cruiser.dmm
+++ b/maps/templates/shuttles/overmaps/generic/cruiser.dmm
@@ -5404,11 +5404,11 @@
/obj/item/melee/baton/loaded,
/obj/item/melee/baton/loaded,
/obj/item/melee/baton/loaded,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
/obj/item/shield/energy,
/obj/item/shield/energy,
/obj/item/shield/energy,
diff --git a/maps/templates/shuttles/overmaps/generic/shelter_6.dmm b/maps/templates/shuttles/overmaps/generic/shelter_6.dmm
index 27cf67800277..4cdea015dbea 100644
--- a/maps/templates/shuttles/overmaps/generic/shelter_6.dmm
+++ b/maps/templates/shuttles/overmaps/generic/shelter_6.dmm
@@ -65,11 +65,11 @@
/obj/item/material/knife/machete,
/obj/item/material/knife/machete,
/obj/item/material/knife/machete,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
/obj/item/shield/energy,
/obj/item/shield/energy,
/obj/item/shield/energy,
diff --git a/maps/triumph/levels/flagship.dmm b/maps/triumph/levels/flagship.dmm
index 5e119575cd62..8c7d4e9b1542 100644
--- a/maps/triumph/levels/flagship.dmm
+++ b/maps/triumph/levels/flagship.dmm
@@ -1390,7 +1390,7 @@
/obj/structure/table/rack,
/obj/item/clothing/under/color/red,
/obj/item/clothing/shoes/brown,
-/obj/item/melee/energy/axe,
+/obj/item/melee/transforming/axe,
/turf/unsimulated/floor{
icon_state = "dark"
},
@@ -1848,11 +1848,11 @@
/obj/item/shield/energy,
/obj/item/shield/energy,
/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/window/reinforced{
dir = 1
@@ -4351,11 +4351,11 @@
/obj/item/shield/energy,
/obj/item/shield/energy,
/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
+/obj/item/melee/transforming/sword,
/turf/unsimulated/floor{
icon_state = "dark"
},
@@ -7450,7 +7450,7 @@
/obj/item/clothing/suit/armor/tdome/red,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/melee/baton/loaded,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/turf/unsimulated/floor{
icon_state = "dark"
},
@@ -8089,7 +8089,7 @@
/obj/structure/table/rack,
/obj/item/clothing/under/color/green,
/obj/item/clothing/shoes/brown,
-/obj/item/melee/energy/axe,
+/obj/item/melee/transforming/axe,
/turf/unsimulated/floor{
icon_state = "dark"
},
@@ -10693,7 +10693,7 @@
/obj/item/clothing/suit/armor/tdome/green,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/melee/baton/loaded,
-/obj/item/melee/energy/sword,
+/obj/item/melee/transforming/sword,
/turf/unsimulated/floor{
icon_state = "dark"
},
From b71eef4df92fc985ed1912ee269a944a0d46d342 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Fri, 5 Jul 2024 19:57:01 +0000
Subject: [PATCH 3/6] sigh
---
code/game/objects/objs.dm | 2 -
.../computers/modular_computer/damage.dm | 6 +-
.../guns/energy/kinetic_accelerator.dm | 10 +-
.../projectiles/guns/energy/particle.dm | 4 +-
.../projectiles/guns/energy/sizegun_vr.dm | 2 +-
.../projectiles/guns/launcher/crossbow.dm | 6 +-
.../projectiles/guns/launcher/syringe_gun.dm | 4 +-
.../projectiles/guns/projectile/dartgun.dm | 2 +-
.../projectiles/guns/projectile/revolver.dm | 4 +-
.../projectiles/guns/projectile/shotgun.dm | 6 +-
code/modules/projectiles/guns/vox.dm | 20 +--
code/modules/projectiles/projectile.dm | 24 ++--
.../modules/projectiles/projectile/animate.dm | 2 +-
code/modules/projectiles/projectile/arc.dm | 2 +-
.../projectiles/projectile/beam/beams.dm | 38 +++---
.../projectiles/projectile/beam/beams_vr.dm | 2 +-
.../projectiles/projectile/beam/blaster.dm | 4 +-
code/modules/projectiles/projectile/blob.dm | 2 +-
.../modules/projectiles/projectile/bullets.dm | 120 +++++++++---------
.../projectiles/projectile/bullets_vr.dm | 11 +-
code/modules/projectiles/projectile/change.dm | 2 +-
code/modules/projectiles/projectile/energy.dm | 30 ++---
.../projectiles/projectile/explosive.dm | 4 +-
code/modules/projectiles/projectile/force.dm | 2 +-
code/modules/projectiles/projectile/hook.dm | 4 +-
.../projectiles/projectile/magnetic.dm | 22 ++--
.../modules/projectiles/projectile/pellets.dm | 21 ++-
.../projectiles/projectile/reusable.dm | 14 +-
.../modules/projectiles/projectile/scatter.dm | 26 ++--
.../modules/projectiles/projectile/special.dm | 43 +++----
code/modules/projectiles/projectile/trace.dm | 2 +-
code/modules/projectiles/unsorted/magic.dm | 36 +++---
.../guns/cell_loaded/revolver_cells.dm | 3 +-
33 files changed, 240 insertions(+), 240 deletions(-)
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 0bb5a1c99cee..8765f89678ae 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -167,8 +167,6 @@
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!
- // todo: /obj/item level, /obj/projectile level, how to deal with armor?
- var/armor_penetration = 0
var/show_messages
var/preserve_item = 0 //whether this object is preserved when its owner goes into cryo-storage, gateway, etc
var/can_speak = 0 //For MMIs and admin trickery. If an object has a brainmob in its contents, set this to 1 to allow it to speak.
diff --git a/code/modules/modular_computers/computers/modular_computer/damage.dm b/code/modules/modular_computers/computers/modular_computer/damage.dm
index 64d34486891a..f43c4725a1e5 100644
--- a/code/modules/modular_computers/computers/modular_computer/damage.dm
+++ b/code/modules/modular_computers/computers/modular_computer/damage.dm
@@ -54,9 +54,9 @@
/obj/item/modular_computer/bullet_act(obj/projectile/Proj)
. = ..()
switch(Proj.damage_type)
- if(BRUTE)
+ if(DAMAGE_TYPE_BRUTE)
take_damage_legacy(Proj.damage, Proj.damage / 2)
- if(HALLOSS)
+ if(DAMAGE_TYPE_HALLOSS, DAMAGE_TYPE_ELECTROCUTE)
take_damage_legacy(Proj.damage, Proj.damage / 3, 0)
- if(BURN)
+ if(DAMAGE_TYPE_BURN, DAMAGE_TYPE_BIOACID)
take_damage_legacy(Proj.damage, Proj.damage / 1.5)
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index bed89dbca36b..632acfaba0f2 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -204,7 +204,7 @@
/obj/projectile/kinetic
name = "kinetic force"
icon_state = null
- damage = 30
+ damage_force = 30
damage_type = DAMAGE_TYPE_BRUTE
damage_flag = ARMOR_BOMB
range = 4
@@ -215,7 +215,7 @@
var/obj/item/gun/energy/kinetic_accelerator/kinetic_gun
/obj/projectile/kinetic/premium
- damage = 40
+ damage_force = 40
damage_type = DAMAGE_TYPE_BRUTE
range = 5
@@ -230,14 +230,14 @@
M.projectile_prehit(src, target, kinetic_gun)
if(!pressure_decrease_active && !lavaland_environment_check(get_turf(src)))
name = "weakened [name]"
- damage = damage * pressure_decrease
+ damage_force = damage * pressure_decrease
pressure_decrease_active = TRUE
return ..()
/obj/projectile/kinetic/projectile_attack_mob(mob/living/target_mob, distance, miss_modifier)
if(!pressure_decrease_active && !lavaland_environment_check(get_turf(src)))
name = "weakened [name]"
- damage = damage * pressure_decrease
+ damage_force = damage * pressure_decrease
pressure_decrease_active = TRUE
return ..()
@@ -252,7 +252,7 @@
/obj/projectile/kinetic/proc/strike_thing(atom/target)
if(!pressure_decrease_active && !lavaland_environment_check(get_turf(src)))
name = "weakened [name]"
- damage = damage * pressure_decrease
+ damage_force = damage * pressure_decrease
pressure_decrease_active = TRUE
var/turf/target_turf = get_turf(target)
if(!target_turf)
diff --git a/code/modules/projectiles/guns/energy/particle.dm b/code/modules/projectiles/guns/energy/particle.dm
index 23374389afca..751d9fc9c769 100644
--- a/code/modules/projectiles/guns/energy/particle.dm
+++ b/code/modules/projectiles/guns/energy/particle.dm
@@ -173,7 +173,7 @@
name = "antimatter pellet"
icon = 'icons/obj/projectiles_vr.dmi'
icon_state = "particle"
- damage = 40
+ damage_force = 40
damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_ENERGY
embed_chance = 0
@@ -181,7 +181,7 @@
/obj/projectile/bullet/particle/heavy
name = "antimatter slug"
icon_state = "particle-heavy"
- damage = 80 // same as a laser cannon
+ damage_force = 80 // same as a laser cannon
armor_penetration = 25 //it explodes on the surface of things, so less armor pen than the laser cannon
light_range = 3
light_power = 1
diff --git a/code/modules/projectiles/guns/energy/sizegun_vr.dm b/code/modules/projectiles/guns/energy/sizegun_vr.dm
index a96008be2e08..794db3f2d740 100644
--- a/code/modules/projectiles/guns/energy/sizegun_vr.dm
+++ b/code/modules/projectiles/guns/energy/sizegun_vr.dm
@@ -65,7 +65,7 @@
name = "size beam"
icon_state = "xray"
nodamage = 1
- damage = 0
+ damage_force = 0
damage_flag = ARMOR_LASER
var/set_size = 1 //Let's default to 100%
diff --git a/code/modules/projectiles/guns/launcher/crossbow.dm b/code/modules/projectiles/guns/launcher/crossbow.dm
index 6738cc275a10..08b9880bb975 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_PIERCE
/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_PIERCE
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 3542155b7d5c..2de999f02c5e 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 = NONE
name = initial(name)
update_icon()
diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm
index fa3f25d45563..07880e89bab8 100644
--- a/code/modules/projectiles/guns/projectile/dartgun.dm
+++ b/code/modules/projectiles/guns/projectile/dartgun.dm
@@ -1,7 +1,7 @@
/obj/projectile/bullet/chemdart
name = "dart"
icon_state = "dart"
- damage = 5
+ damage_force = 5
var/reagent_amount = 15
range = 15 //shorter range
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index accf92724242..04369a0b74e9 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -58,8 +58,8 @@
caliber = ".38"
ammo_type = /obj/item/ammo_casing/a38
damage_force = 15
- sharp = 1
- edge = 1
+ damage_tier = MELEE_TIER_MEDIUM
+ 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 b3410a351a9d..bd925019e469 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -313,11 +313,13 @@
ammo_type = /obj/item/ammo_casing/a12g/silver
max_shells = 1
w_class = WEIGHT_CLASS_BULKY
+
damage_force = 25
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
+ damage_tier = MELEE_TIER_MEDIUM
+
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_OCCULT = 1)
- sharp = 1
- edge = 1
holy = TRUE
/obj/item/gun/ballistic/shotgun/underslung
diff --git a/code/modules/projectiles/guns/vox.dm b/code/modules/projectiles/guns/vox.dm
index 53f3c262bc7a..84c9f3b444fa 100644
--- a/code/modules/projectiles/guns/vox.dm
+++ b/code/modules/projectiles/guns/vox.dm
@@ -78,7 +78,7 @@
nodamage = 1
taser_effect = 1
agony = 55
- damage_type = HALLOSS
+ damage_type = DAMAGE_TYPE_HALLOSS
light_color = "#8837A3"
muzzle_type = /obj/effect/projectile/muzzle/darkmatterstun
@@ -89,9 +89,9 @@
name = "dark matter bolt"
icon_state = "darkb"
fire_sound = 'sound/weapons/eLuger.ogg'
- damage = 35
+ damage_force = 35
armor_penetration = 35
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
damage_flag = ARMOR_ENERGY
light_color = "#8837A3"
@@ -105,9 +105,9 @@
name = "dark matter pellet"
icon_state = "dark_pellet"
fire_sound = 'sound/weapons/eLuger.ogg'
- damage = 20
+ damage_force = 20
armor_penetration = 35
- damage_type = BRUTE
+ damage_type = DAMAGE_TYPE_BRUTE
damage_flag = ARMOR_ENERGY
light_color = "#8837A3"
@@ -138,10 +138,12 @@
name = "sonic pulse"
icon_state = "sound"
fire_sound = 'sound/effects/basscannon.ogg'
- damage = 5
- armor_penetration = 30
- damage_type = BRUTE
+
+ damage_force = 5
+ damage_type = DAMAGE_TYPE_BRUTE
damage_flag = ARMOR_MELEE
+ damage_tier = MELEE_TIER_HEAVY
+
embed_chance = 0
vacuum_traversal = 0
@@ -149,7 +151,7 @@
agony = 50
/obj/projectile/sonic/strong
- damage = 45
+ damage_force = 45
/obj/projectile/sonic/strong/on_hit(var/atom/movable/target, var/blocked = 0)
if(ismob(target))
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index bac385a3780b..d4aaa6ffd40a 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -13,6 +13,18 @@
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
depth_level = INFINITY // nothing should be passing over us from depth
+ //* Damage - Default handling *//
+ /// damage amount
+ var/damage_force = 10
+ /// damage tier - goes hand in hand with [damage_armor]
+ var/damage_tier = BULLET_TIER_DEFAULT
+ /// damage type to inflict; any [DAMAGE_TYPE_*] enum is valid
+ var/damage_type = DAMAGE_TYPE_BRUTE
+ /// armor flag for damage - goes hand in hand with [damage_tier]
+ var/damage_flag = ARMOR_BULLET
+ /// damage mode - see [code/__DEFINES/combat/damage.dm]
+ var/damage_mode = NONE
+
////TG PROJECTILE SYTSEM
//Projectile stuff
var/range = 50
@@ -102,18 +114,6 @@
var/force_max_submunition_spread = FALSE // Do we just force the maximum?
var/spread_submunition_damage = FALSE // Do we assign damage to our sub projectiles based on our main projectile damage?
- //? Damage - default handling
- /// damage amount
- var/damage = 10
- /// damage tier - goes hand in hand with [damage_armor]
- var/damage_tier = BULLET_TIER_DEFAULT
- /// todo: legacy - BRUTE, BURN, TOX, OXY, CLONE, HALLOSS, ELECTROCUTE, BIOACID are the only things that should be in here
- var/damage_type = DAMAGE_TYPE_BRUTE
- /// armor flag for damage - goes hand in hand with [damage_tier]
- var/damage_flag = ARMOR_BULLET
- /// damage mode - see [code/__DEFINES/combat/damage.dm]
- var/damage_mode = NONE
-
var/SA_bonus_damage = 0 // Some bullets inflict extra damage on simple animals.
var/SA_vulnerability = null // What kind of simple animal the above bonus damage should be applied to. Set to null to apply to all SAs.
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
diff --git a/code/modules/projectiles/projectile/animate.dm b/code/modules/projectiles/projectile/animate.dm
index 91a5c339a471..885253b8cf7a 100644
--- a/code/modules/projectiles/projectile/animate.dm
+++ b/code/modules/projectiles/projectile/animate.dm
@@ -1,7 +1,7 @@
/obj/projectile/animate
name = "bolt of animation"
icon_state = "ice_1"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_BURN
nodamage = 1
damage_flag = ARMOR_ENERGY
diff --git a/code/modules/projectiles/projectile/arc.dm b/code/modules/projectiles/projectile/arc.dm
index 3475725627d2..2a48f2028df0 100644
--- a/code/modules/projectiles/projectile/arc.dm
+++ b/code/modules/projectiles/projectile/arc.dm
@@ -121,7 +121,7 @@
/obj/projectile/arc/blue_energy
name = "energy missile"
icon_state = "force_missile"
- damage = 15
+ damage_force = 15
damage_type = DAMAGE_TYPE_BURN
/obj/projectile/arc/blue_energy/on_impact(turf/T)
diff --git a/code/modules/projectiles/projectile/beam/beams.dm b/code/modules/projectiles/projectile/beam/beams.dm
index 6e95f09e1ba6..165e6cc5a23e 100644
--- a/code/modules/projectiles/projectile/beam/beams.dm
+++ b/code/modules/projectiles/projectile/beam/beams.dm
@@ -3,7 +3,7 @@
icon_state = "laser"
fire_sound = 'sound/weapons/weaponsounds_laserstrong.ogg'
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GLASS | ATOM_PASS_GRILLE
- damage = 40
+ damage_force = 40
damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_LASER
eyeblur = 4
@@ -22,7 +22,7 @@
/obj/projectile/beam/practice
name = "laser"
icon_state = "laser"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_LASER
eyeblur = 2
@@ -32,20 +32,20 @@
name = "weak laser"
icon_state = "laser"
fire_sound = 'sound/weapons/weaponsounds_laserweak.ogg'
- damage = 15
+ damage_force = 15
/obj/projectile/beam/smalllaser
- damage = 25
+ damage_force = 25
fire_sound = 'sound/weapons/weaponsounds_laserweak.ogg'
/obj/projectile/beam/burstlaser
- damage = 30
+ damage_force = 30
fire_sound = 'sound/weapons/weaponsounds_lasermid.ogg'
armor_penetration = 10
/obj/projectile/beam/midlaser
- damage = 40
+ damage_force = 40
fire_sound = 'sound/weapons/weaponsounds_lasermid.ogg'
armor_penetration = 10
@@ -53,7 +53,7 @@
name = "heavy laser"
icon_state = "heavylaser"
fire_sound = 'sound/weapons/weaponsounds_laserstrong.ogg'
- damage = 60
+ damage_force = 60
armor_penetration = 30
light_range = 3
light_power = 1
@@ -75,7 +75,7 @@
impact_type = /obj/effect/projectile/impact/emitter
/obj/projectile/beam/heavylaser/cannon
- damage = 80
+ damage_force = 80
armor_penetration = 50
light_color = "#FF0D00"
@@ -83,7 +83,7 @@
name = "xray beam"
icon_state = "xray"
fire_sound = 'sound/weapons/eluger.ogg'
- damage = 25
+ damage_force = 25
armor_penetration = 50
light_color = "#00CC33"
@@ -95,7 +95,7 @@
name = "gamma beam"
icon_state = "xray"
fire_sound = 'sound/weapons/eluger.ogg'
- damage = 10
+ damage_force = 10
armor_penetration = 90
irradiate = 20
light_color = "#00CC33"
@@ -108,7 +108,7 @@
name = "cyan beam"
icon_state = "cyan"
fire_sound = 'sound/weapons/weaponsounds_alienlaser.ogg'
- damage = 40
+ damage_force = 40
light_color = "#00C6FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
@@ -119,7 +119,7 @@
name = "pulse"
icon_state = "u_laser"
fire_sound='sound/weapons/gauss_shoot.ogg' // Needs a more meaty sound than what pulse.ogg currently is; this will be a placeholder for now.
- damage = 100 //Badmin toy, don't care
+ damage_force = 100 //Badmin toy, don't care
armor_penetration = 100
light_color = "#0066FF"
@@ -133,14 +133,14 @@
..()
/obj/projectile/beam/pulse/shotgun
- damage = 50
+ damage_force = 50
armor_penetration = 25
/obj/projectile/beam/emitter
name = "emitter beam"
icon_state = "emitter"
fire_sound = 'sound/weapons/emitter.ogg'
- damage = 0 // The actual damage is computed in /code/modules/power/singularity/emitter.dm
+ damage_force = 0 // The actual damage is computed in /code/modules/power/singularity/emitter.dm
light_color = "#00CC33"
excavation_amount = 70 // 3 shots to mine a turf
@@ -150,7 +150,7 @@
/obj/projectile/beam/lasertag
name = "lasertag beam"
- damage = 0
+ damage_force = 0
eyeblur = 0
no_attack_log = 1
damage_type = DAMAGE_TYPE_BURN
@@ -203,7 +203,7 @@
name = "sniper beam"
icon_state = "xray"
fire_sound = 'sound/weapons/gauss_shoot.ogg'
- damage = 60
+ damage_force = 60
armor_penetration = 10
light_color = "#00CC33"
@@ -298,7 +298,7 @@
tracer_type = /obj/effect/projectile/tracer/lightning
impact_type = /obj/effect/projectile/impact/lightning
- damage = 30
+ damage_force = 30
agony = 15
eyeblur = 2
@@ -307,7 +307,7 @@
icon_state = "emitter"
fire_sound = 'sound/weapons/weaponsounds_laserweak.ogg'
light_color = "#00CC33"
- damage = 1 //mining tool
+ damage_force = 1 //mining tool
excavation_amount = 1000 // 1 shot to dig a standard rock turf. Made for mining. Should be able to consistently one hit rocks now
muzzle_type = /obj/effect/projectile/muzzle/emitter
@@ -317,7 +317,7 @@
/obj/projectile/beam/pointdefense
name = "point defense salvo"
icon_state = "laser"
- damage = 15
+ damage_force = 15
damage_type = DAMAGE_TYPE_ELECTROCUTE //You should be safe inside a voidsuit
sharp = FALSE //"Wide" spectrum beam
light_color = "#A9980A"
diff --git a/code/modules/projectiles/projectile/beam/beams_vr.dm b/code/modules/projectiles/projectile/beam/beams_vr.dm
index 65e067c3af66..d32c8b08dae6 100644
--- a/code/modules/projectiles/projectile/beam/beams_vr.dm
+++ b/code/modules/projectiles/projectile/beam/beams_vr.dm
@@ -45,7 +45,7 @@
/obj/projectile/beam/medigun
name = "healing beam"
icon_state = "healbeam"
- damage = 0 //stops it damaging walls
+ damage_force = 0 //stops it damaging walls
nodamage = TRUE
no_attack_log = TRUE
damage_type = DAMAGE_TYPE_BURN
diff --git a/code/modules/projectiles/projectile/beam/blaster.dm b/code/modules/projectiles/projectile/beam/blaster.dm
index cf6cc0b71c7c..38e8e9609c2f 100644
--- a/code/modules/projectiles/projectile/beam/blaster.dm
+++ b/code/modules/projectiles/projectile/beam/blaster.dm
@@ -1,9 +1,9 @@
/obj/projectile/beam/blaster
hitscan = FALSE
icon_state = "laser"
- damage = 20
+ damage_force = 20
damage_type = BURN
damage_flag = ARMOR_LASER
/obj/projectile/beam/blaster/pellet
- damage = 15
+ damage_force = 15
diff --git a/code/modules/projectiles/projectile/blob.dm b/code/modules/projectiles/projectile/blob.dm
index 2adcd0b8d554..3c291a4672e4 100644
--- a/code/modules/projectiles/projectile/blob.dm
+++ b/code/modules/projectiles/projectile/blob.dm
@@ -1,7 +1,7 @@
/obj/projectile/energy/blob //Not super strong.
name = "spore"
icon_state = "declone"
- damage = 3
+ damage_force = 3
armor_penetration = 40
damage_type = DAMAGE_TYPE_BRUTE
damage_flag = ARMOR_MELEE
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index 1bea2d3e23e0..adb939b1a26d 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -2,7 +2,7 @@
name = "bullet"
icon_state = "bullet"
fire_sound = 'sound/weapons/weaponsounds_rifleshot.ogg'
- damage = 60
+ damage_force = 60
damage_type = DAMAGE_TYPE_BRUTE
nodamage = 0
damage_flag = ARMOR_BULLET
@@ -70,28 +70,28 @@
/obj/projectile/bullet/pistol // 9mm pistols and most SMGs. Sacrifice power for capacity.
fire_sound = 'sound/weapons/weaponsounds_smallpistolshot.ogg'
- damage = 20
+ damage_force = 20
/obj/projectile/bullet/pistol/lap //Light Armor Piercing
- damage = 20
+ damage_force = 20
armor_penetration = 10
/obj/projectile/bullet/pistol/ap
- damage = 15
+ damage_force = 15
armor_penetration = 30
/obj/projectile/bullet/pistol/hp
- damage = 25
+ damage_force = 25
armor_penetration = -50
/obj/projectile/bullet/pistol/hunter
- damage = 15
+ damage_force = 15
SA_bonus_damage = 25 // 40 total against animals
SA_vulnerability = MOB_CLASS_ANIMAL
embed_chance = -1
/obj/projectile/bullet/pistol/silver
- damage = 15
+ damage_force = 15
SA_bonus_damage = 25 // 40 total against demons
SA_vulnerability = MOB_CLASS_DEMONIC
embed_chance = -1
@@ -99,24 +99,24 @@
/obj/projectile/bullet/pistol/medium // .45 (and maybe .40 if it ever gets added) caliber security pistols. Balance between capacity and power.
fire_sound = 'sound/weapons/weaponsounds_pistolshot.ogg' // Snappier sound.
- damage = 25
+ damage_force = 25
/obj/projectile/bullet/pistol/medium/ap
- damage = 20
+ damage_force = 20
armor_penetration = 15
/obj/projectile/bullet/pistol/medium/hp
- damage = 30
+ damage_force = 30
armor_penetration = -50
/obj/projectile/bullet/pistol/medium/hunter
- damage = 15
+ damage_force = 15
SA_bonus_damage = 45 // 60 total against animals
SA_vulnerability = MOB_CLASS_ANIMAL
embed_chance = -1
/obj/projectile/bullet/pistol/medium/silver
- damage = 15
+ damage_force = 15
SA_bonus_damage = 45 // 60 total against demons
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
embed_chance = -1
@@ -125,7 +125,7 @@
/obj/projectile/bullet/pistol/medium/ap/suppressor // adminspawn only
name = "suppressor bullet" // this guy is Important and also Hates You
fire_sound = 'sound/weapons/doompistol.ogg' // converted from .wavs extracted from doom 2
- damage = 10 // high rof kinda fucked up lets be real
+ damage_force = 10 // high rof kinda fucked up lets be real
agony = 10 // brute easily heals, agony not so much
armor_penetration = 30 // reduces shield blockchance
accuracy = -20 // he do miss actually
@@ -137,11 +137,11 @@
/obj/projectile/bullet/pistol/strong // .357 and .44 caliber stuff. High power pistols like the Mateba or Desert Eagle. Sacrifice capacity for power.
fire_sound = 'sound/weapons/weaponsounds_heavypistolshot.ogg'
- damage = 60
+ damage_force = 60
/obj/projectile/bullet/pistol/strong/silver //Because all Demons need to die
fire_sound = 'sound/weapons/weaponsounds_heavypistolshot.ogg'
- damage = 40
+ damage_force = 40
SA_bonus_damage = 80 // 120 total against demons
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
embed_chance = -1
@@ -149,7 +149,7 @@
/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 = 10
+ damage_force = 10
agony = 60
embed_chance = 0
sharp = 0
@@ -157,7 +157,7 @@
/obj/projectile/bullet/pistol/rubber // "Rubber" bullets for all other pistols.
name = "rubber bullet"
- damage = 5
+ damage_force = 5
agony = 40
embed_chance = 0
sharp = 0
@@ -166,7 +166,7 @@
/obj/projectile/bullet/pistol/spin // Special weak ammo for Service Spin mode.
fire_sound = 'sound/weapons/weaponsounds_smallpistolshot.ogg'
- damage = 5
+ damage_force = 5
SA_bonus_damage = 10 // 15 total against demons
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
holy = TRUE
@@ -176,12 +176,12 @@
/obj/projectile/bullet/shotgun
name = "slug"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
- damage = 50
+ damage_force = 50
armor_penetration = 15
/obj/projectile/bullet/shotgun/beanbag //because beanbags are not bullets
name = "beanbag"
- damage = 20
+ damage_force = 20
agony = 60
embed_chance = 0
sharp = 0
@@ -192,20 +192,20 @@
/obj/projectile/bullet/pellet/shotgun
name = "shrapnel"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
- damage = 13
+ damage_force = 13
pellets = 6
range_step = 1
spread_step = 10
/obj/projectile/bullet/pellet/shotgun_improvised
name = "shrapnel"
- damage = 1
+ damage_force = 1
pellets = 10
range_step = 1
spread_step = 10
/obj/projectile/bullet/pellet/shotgun/flak
- damage = 2 //The main weapon using these fires four at a time, usually with different destinations. Usually.
+ damage_force = 2 //The main weapon using these fires four at a time, usually with different destinations. Usually.
range_step = 2
spread_step = 30
armor_penetration = 10
@@ -214,7 +214,7 @@
/obj/projectile/bullet/pellet/shotgun/silver
name = "shrapnel"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
- damage = 10
+ damage_force = 10
SA_bonus_damage = 16 // Potential 156 Damage against demons at point blank.
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
embed_chance = -1
@@ -226,7 +226,7 @@
/obj/projectile/bullet/shotgun/stake
name = "stake"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
- damage = 50
+ damage_force = 50
armor_penetration = 15
SA_bonus_damage = 16 // Potential 156 Damage against demons at point blank.
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
@@ -236,7 +236,7 @@
/obj/projectile/bullet/shotgun/ion
name = "ion slug"
fire_sound = 'sound/weapons/gunshot/gunshot_tech_huge.ogg'
- damage = 15
+ damage_force = 15
embed_chance = 0
sharp = 0
damage_flag = ARMOR_MELEE
@@ -251,7 +251,7 @@
//Frag shot
/obj/projectile/bullet/shotgun/frag12
name ="frag12 slug"
- damage = 25
+ damage_force = 25
/obj/projectile/bullet/shotgun/frag12/on_hit(atom/target, blocked = FALSE)
..()
@@ -267,68 +267,68 @@
/obj/projectile/bullet/rifle/a762
fire_sound = 'sound/weapons/weaponsounds_heavyrifleshot.ogg'
- damage = 35
+ damage_force = 35
/obj/projectile/bullet/rifle/a762/sniper // Hitscan specifically for sniper ammo; to be implimented at a later date, probably for the SVD. -Ace
fire_sound = 'sound/weapons/weaponsounds_heavyrifleshot.ogg'
hitscan = 1 //so the ammo isn't useless as a sniper weapon
/obj/projectile/bullet/rifle/a762/ap
- damage = 30
+ damage_force = 30
armor_penetration = 50 // At 30 or more armor, this will do more damage than standard rounds.
/obj/projectile/bullet/rifle/a762/ap/silver
- damage = 30
+ damage_force = 30
armor_penetration = 50 // At 30 or more armor, this will do more damage than standard rounds.
SA_bonus_damage = 30 // 60 total against demons
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
holy = TRUE
/obj/projectile/bullet/rifle/a762/hp
- damage = 40
+ damage_force = 40
armor_penetration = -50
penetrating = 0
/obj/projectile/bullet/rifle/a762/hunter // Optimized for killing simple animals and not people, because Balance(tm)
- damage = 25
+ damage_force = 25
SA_bonus_damage = 45 // 70 total on animals.
SA_vulnerability = MOB_CLASS_ANIMAL
embed_chance = -1
/obj/projectile/bullet/rifle/a762/sniperhunter
- damage = 25
+ damage_force = 25
SA_bonus_damage = 45 // 70 total on animals.
SA_vulnerability = MOB_CLASS_ANIMAL
embed_chance = -1
speed = 0.4
/obj/projectile/bullet/rifle/a762/silver // Hunting Demons with bolt action rifles.
- damage = 20
+ damage_force = 20
SA_bonus_damage = 50 // 70 total on animals.
SA_vulnerability = MOB_CLASS_DEMONIC
holy = TRUE
/obj/projectile/bullet/rifle/a556
fire_sound = 'sound/weapons/weaponsounds_rifleshot.ogg'
- damage = 25
+ damage_force = 25
/obj/projectile/bullet/rifle/a556/ap
- damage = 20
+ damage_force = 20
armor_penetration = 50 // At 40 or more armor, this will do more damage than standard rounds.
/obj/projectile/bullet/rifle/a556/hp
- damage = 35
+ damage_force = 35
armor_penetration = -50
penetrating = 0
/obj/projectile/bullet/rifle/a556/hunter
- damage = 15
+ damage_force = 15
SA_bonus_damage = 35 // 50 total on animals.
SA_vulnerability = MOB_CLASS_ANIMAL
/obj/projectile/bullet/rifle/a127 // 14.5×114mm is bigger than a .50 BMG round.
fire_sound = 'sound/weapons/Gunshot_cannon.ogg' // This is literally an anti-tank rifle caliber. It better sound like a fucking cannon.
- damage = 80
+ damage_force = 80
stun = 3
weaken = 3
penetrating = 5
@@ -339,17 +339,17 @@
/obj/projectile/bullet/suffocationbullet//How does this even work?
name = "co bullet"
- damage = 20
+ damage_force = 20
damage_type = DAMAGE_TYPE_OXY
/obj/projectile/bullet/cyanideround
name = "poison bullet"
- damage = 40
+ damage_force = 40
damage_type = DAMAGE_TYPE_TOX
/obj/projectile/bullet/cyanideround/jezzail
name = "toxic penetrator shard"
- damage = 25
+ damage_force = 25
armor_penetration = 20
agony = 5
embed_chance = 1
@@ -358,7 +358,7 @@
/obj/projectile/bullet/burstbullet
name = "exploding bullet"
fire_sound = 'sound/soundbytes/effects/explosion/explosion1.ogg'
- damage = 20
+ damage_force = 20
embed_chance = 0
edge = 1
@@ -370,7 +370,7 @@
/obj/projectile/bullet/burstbullet/service
name = "charge bullet"
fire_sound = 'sound/soundbytes/effects/explosion/explosion1.ogg'
- damage = 20
+ damage_force = 20
embed_chance = 0
edge = 1
SA_bonus_damage = 40 // 60 total damage against demons.
@@ -386,25 +386,25 @@
/obj/projectile/bullet/musket // Big Slow and bad against armor.
fire_sound = 'sound/weapons/weaponsounds_heavypistolshot.ogg'
- damage = 60
+ damage_force = 60
speed = 1.2
armor_penetration = -50
/obj/projectile/bullet/musket/silver // What its a classic
- damage = 25
+ damage_force = 25
SA_bonus_damage = 75
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
embed_chance = -1
holy = TRUE
/obj/projectile/bullet/pellet/blunderbuss //More Damage at close range greater falloff
- damage = 10
+ damage_force = 10
pellets = 8
range_step = 0.5 //Very quick falloff
spread_step = 30
/obj/projectile/bullet/pellet/blunderbuss/silver
- damage = 5
+ damage_force = 5
SA_bonus_damage = 15
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
embed_chance = -1
@@ -414,17 +414,17 @@
/obj/projectile/bullet/heavy_shotgun
name = "heavy slug"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
- damage = 60
+ damage_force = 60
armor_penetration = 25
/obj/projectile/bullet/pellet/heavy_shotgun //I want this to use similar calcuations to blunderbuss shot for falloff.
- damage = 3 //Fires five pellets at a time.
+ damage_force = 3 //Fires five pellets at a time.
range_step = 0.75
spread_step = 30
armor_penetration = 10
/obj/projectile/bullet/pellet/heavy_shotgun/silver
- damage = 3
+ damage_force = 3
SA_bonus_damage = 3
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
holy = TRUE
@@ -464,7 +464,7 @@
/obj/projectile/bullet/incendiary
name = "incendiary bullet"
icon_state = "bullet_alt"
- damage = 15
+ damage_force = 15
damage_type = DAMAGE_TYPE_BURN
incendiary = 1
flammability = 2
@@ -472,7 +472,7 @@
/obj/projectile/bullet/incendiary/shotgun
name = "dragonsbreath pellet"
icon_state = "bullet_alt"
- damage = 10
+ damage_force = 10
damage_type = DAMAGE_TYPE_BURN
incendiary = 1
flammability = 2
@@ -481,7 +481,7 @@
name = "ball of fire"
desc = "Don't stand in the fire."
icon_state = "fireball"
- damage = 10
+ damage_force = 10
embed_chance = 0
//incendiary = 2 //The Trail of Fire doesn't work.
flammability = 4
@@ -493,13 +493,13 @@
flammability = 2
/obj/projectile/bullet/incendiary/flamethrower/large
- damage = 15
+ damage_force = 15
range = 6
/obj/projectile/bullet/incendiary/caseless
name = "12.7mm phoron slug"
icon_state = "bullet_alt"
- damage = 60
+ damage_force = 60
damage_type = DAMAGE_TYPE_BRUTE
incendiary = 1
flammability = 4
@@ -515,7 +515,7 @@
/obj/projectile/bullet/incendiary/phoronshrap
name = "phoron shrapnel slug"
icon_state = "bullet_alt"
- damage = 40
+ damage_force = 40
armor_penetration = 30
damage_type = DAMAGE_TYPE_BRUTE
incendiary = 1
@@ -527,13 +527,13 @@
/* Practice rounds and blanks */
/obj/projectile/bullet/practice
- damage = 5
+ damage_force = 5
/obj/projectile/bullet/pistol/cap // Just the primer, such as a cap gun.
name = "cap"
damage_type = DAMAGE_TYPE_HALLOSS
fire_sound = 'sound/effects/snap.ogg'
- damage = 0
+ damage_force = 0
nodamage = 1
embed_chance = 0
sharp = 0
@@ -550,7 +550,7 @@
name = "blank"
damage_type = DAMAGE_TYPE_HALLOSS
fire_sound = 'sound/weapons/weaponsounds_rifleshot.ogg' // Blanks still make loud noises.
- damage = 0
+ damage_force = 0
nodamage = 1
embed_chance = 0
sharp = 0
diff --git a/code/modules/projectiles/projectile/bullets_vr.dm b/code/modules/projectiles/projectile/bullets_vr.dm
index 257cb4aef5e1..cdbe0080b0d9 100644
--- a/code/modules/projectiles/projectile/bullets_vr.dm
+++ b/code/modules/projectiles/projectile/bullets_vr.dm
@@ -1,14 +1,15 @@
-/obj/projectile/bullet/pistol/rubber/strong //"rubber" bullets for revolvers and matebas
- damage = 10
+//"rubber" bullets for revolvers and matebas
+/obj/projectile/bullet/pistol/rubber/strong
+ damage_force = 10
agony = 60
embed_chance = 0
- sharp = 0
+ damage_mode = NONE
damage_flag = ARMOR_MELEE
/obj/projectile/energy/flash/strong
name = "chemical shell"
icon_state = "bullet"
- damage = 10
+ damage_force = 10
range = 15 //if the shell hasn't hit anything after travelling this far it just explodes.
flash_strength = 15
brightness = 15
@@ -16,6 +17,6 @@
/obj/projectile/energy/electrode/stunshot/strong
name = "stunshot"
icon_state = "bullet"
- damage = 10
+ damage_force = 10
taser_effect = 1
agony = 100
diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm
index b98c9fc7d740..68361c55ef99 100644
--- a/code/modules/projectiles/projectile/change.dm
+++ b/code/modules/projectiles/projectile/change.dm
@@ -1,7 +1,7 @@
/obj/projectile/change
name = "bolt of change"
icon_state = "ice_1"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_BURN
nodamage = 1
damage_flag = ARMOR_ENERGY
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index e36f1c0f1df9..64460da97c70 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -1,7 +1,7 @@
/obj/projectile/energy
name = "energy"
icon_state = "spark"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_ENERGY
var/flash_strength = 10
@@ -11,7 +11,7 @@
name = "chemical shell"
icon_state = "bullet"
fire_sound = 'sound/weapons/gunshot_pathetic.ogg'
- damage = 5
+ damage_force = 5
range = 15 //if the shell hasn't hit anything after travelling this far it just explodes.
var/flash_range = 0
var/brightness = 7
@@ -49,7 +49,7 @@
//No longer blinds, and flash strength has been greatly lowered but now set's on fire.
/obj/projectile/energy/flash/flare
fire_sound = 'sound/weapons/grenade_launcher.ogg'
- damage = 20
+ damage_force = 20
flash_range = 1
brightness = 15
flash_strength = 10
@@ -80,7 +80,7 @@
/obj/projectile/energy/electrode/stunshot
name = "stunshot"
- damage = 5
+ damage_force = 5
agony = 80
/obj/projectile/energy/electrode/goldenbolt // MIGHTY GOLDEN BOLT
@@ -103,7 +103,7 @@
/obj/projectile/energy/dart
name = "dart"
icon_state = "toxin"
- damage = 5
+ damage_force = 5
damage_type = DAMAGE_TYPE_TOX
agony = 120
damage_flag = ARMOR_ENERGY
@@ -113,19 +113,19 @@
/obj/projectile/energy/bolt
name = "bolt"
icon_state = "cbbolt"
- damage = 10
+ damage_force = 10
damage_type = DAMAGE_TYPE_TOX
agony = 40
stutter = 10
/obj/projectile/energy/bolt/large
name = "largebolt"
- damage = 20
+ damage_force = 20
/obj/projectile/energy/acid //Slightly up-gunned (Read: The thing does agony and checks bio resist) variant of the simple alien mob's projectile, for queens and sentinels.
name = "acidic spit"
icon_state = "neurotoxin"
- damage = 30
+ damage_force = 30
damage_type = DAMAGE_TYPE_BURN
agony = 10
damage_flag = ARMOR_BIO
@@ -136,7 +136,7 @@
/obj/projectile/energy/neurotoxin
name = "neurotoxic spit"
icon_state = "neurotoxin"
- damage = 5
+ damage_force = 5
damage_type = DAMAGE_TYPE_BIOACID
agony = 80
damage_flag = ARMOR_BIO
@@ -147,7 +147,7 @@
/obj/projectile/energy/neurotoxin/toxic //New alien mob projectile to match the player-variant's projectiles.
name = "neurotoxic spit"
icon_state = "neurotoxin"
- damage = 20
+ damage_force = 20
damage_type = DAMAGE_TYPE_BIOACID
agony = 20
damage_flag = ARMOR_BIO
@@ -157,7 +157,7 @@
name = "phoron bolt"
icon_state = "energy"
fire_sound = 'sound/effects/stealthoff.ogg'
- damage = 20
+ damage_force = 20
damage_type = DAMAGE_TYPE_TOX
irradiate = 20
light_range = 2
@@ -172,7 +172,7 @@
fire_sound = 'sound/weapons/blaster.ogg'
armor_penetration = 10
range = 4
- damage = 5
+ damage_force = 5
agony = 55
damage_type = DAMAGE_TYPE_BURN
vacuum_traversal = 0 //Projectile disappears in empty space
@@ -210,7 +210,7 @@
name = "suppressive pellet"
icon_state = "blue_pellet"
fire_sound = 'sound/weapons/Laser.ogg'
- damage = 5
+ damage_force = 5
armor_penetration = 75
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GLASS | ATOM_PASS_GRILLE
damage_type = DAMAGE_TYPE_BURN
@@ -224,7 +224,7 @@
name = "phase wave"
icon_state = "phase"
range = 25
- damage = 5
+ damage_force = 5
SA_bonus_damage = 45 // 50 total on animals
SA_vulnerability = MOB_CLASS_ANIMAL
@@ -238,5 +238,5 @@
/obj/projectile/energy/phase/heavy/cannon
range = 30
- damage = 15
+ damage_force = 15
SA_bonus_damage = 60 // 75 total on animals
diff --git a/code/modules/projectiles/projectile/explosive.dm b/code/modules/projectiles/projectile/explosive.dm
index 05d9d1786811..05608f0a6e1a 100644
--- a/code/modules/projectiles/projectile/explosive.dm
+++ b/code/modules/projectiles/projectile/explosive.dm
@@ -5,7 +5,7 @@
desc = "Boom"
icon = 'icons/obj/grenade.dmi'
icon_state = "missile"
- damage = 30 //Meaty whack. *Chuckles*
+ damage_force = 30 //Meaty whack. *Chuckles*
movable_flags = MOVABLE_NO_THROW_SPIN | MOVABLE_NO_THROW_DAMAGE_SCALING | MOVABLE_NO_THROW_SPEED_SCALING
/obj/projectile/bullet/srmrocket/on_hit(atom/target, blocked=0)
@@ -18,7 +18,7 @@
/obj/projectile/bullet/srmrocket/weak //Used in the jury rigged one.
- damage = 10
+ damage_force = 10
/obj/projectile/bullet/srmrocket/weak/on_hit(atom/target, blocked=0)
..()
diff --git a/code/modules/projectiles/projectile/force.dm b/code/modules/projectiles/projectile/force.dm
index a95cefff5633..5d632171eed8 100644
--- a/code/modules/projectiles/projectile/force.dm
+++ b/code/modules/projectiles/projectile/force.dm
@@ -2,7 +2,7 @@
name = "force bolt"
icon = 'icons/obj/projectiles.dmi'
icon_state = "ice_1"
- damage = 20
+ damage_force = 20
damage_flag = ARMOR_ENERGY
combustion = FALSE
diff --git a/code/modules/projectiles/projectile/hook.dm b/code/modules/projectiles/projectile/hook.dm
index fec1351cdd1e..4abbc8fc1718 100644
--- a/code/modules/projectiles/projectile/hook.dm
+++ b/code/modules/projectiles/projectile/hook.dm
@@ -8,7 +8,7 @@
var/beam_state = "b_beam"
- damage = 5
+ damage_force = 5
speed = 2
damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_ENERGY
@@ -187,4 +187,4 @@
name = "green orb"
icon_state = "green_laser"
beam_state = "n_beam"
- damage = 3
+ damage_force = 3
diff --git a/code/modules/projectiles/projectile/magnetic.dm b/code/modules/projectiles/projectile/magnetic.dm
index 15ff9c3fd0b1..ae29a07f84d8 100644
--- a/code/modules/projectiles/projectile/magnetic.dm
+++ b/code/modules/projectiles/projectile/magnetic.dm
@@ -3,7 +3,7 @@
name = "rod"
icon_state = "rod"
fire_sound = 'sound/weapons/railgun.ogg'
- damage = 65
+ damage_force = 65
stun = 1
weaken = 1
penetrating = 5
@@ -12,14 +12,14 @@
/obj/projectile/bullet/magnetic/slug
name = "slug"
icon_state = "gauss_silenced"
- damage = 75
+ damage_force = 75
armor_penetration = 90
/obj/projectile/bullet/magnetic/flechette
name = "flechette"
icon_state = "flechette"
fire_sound = 'sound/weapons/rapidslice.ogg'
- damage = 20
+ damage_force = 20
armor_penetration = 100
/obj/projectile/bullet/magnetic/flechette/hunting
@@ -33,13 +33,13 @@
icon_state = "gauss"
weaken = 0
stun = 0
- damage = 30
+ damage_force = 30
damage_type = DAMAGE_TYPE_SEARING
embed_chance = 0
/obj/projectile/bullet/magnetic/heated/weak
icon_state = "gauss_silenced"
- damage = 15
+ damage_force = 15
agony = 5
embed_chance = 0
armor_penetration = 50
@@ -47,7 +47,7 @@
/obj/projectile/bullet/magnetic/fuelrod
name = "fuel rod"
icon_state = "fuel-deuterium"
- damage = 70 //it's a fusion fuel rod propelled faster than sound, it should hurt.
+ damage_force = 70 //it's a fusion fuel rod propelled faster than sound, it should hurt.
stun = 1
weaken = 0
agony = 50
@@ -99,7 +99,7 @@
/obj/projectile/bullet/magnetic/fuelrod/tritium
icon_state = "fuel-tritium"
- damage = 100 //Much harder to get than tritium - needs mhydrogen
+ damage_force = 100 //Much harder to get than tritium - needs mhydrogen
flammability = -1
armor_penetration = 50
penetrating = 3
@@ -107,7 +107,7 @@
/obj/projectile/bullet/magnetic/fuelrod/phoron
name = "blazing fuel rod"
icon_state = "fuel-phoron"
- damage = 65 //leaves a trail of fire, irradiates and is much easier to get than the other two, so less damage is fine
+ damage_force = 65 //leaves a trail of fire, irradiates and is much easier to get than the other two, so less damage is fine
incendiary = 2
flammability = 2
armor_penetration = 60
@@ -118,7 +118,7 @@
/obj/projectile/bullet/magnetic/fuelrod/supermatter
name = "painfully incandescent fuel rod"
icon_state = "fuel-supermatter"
- damage = 15 //it qdels things
+ damage_force = 15 //it qdels things
incendiary = 2
flammability = 4
weaken = 2
@@ -143,7 +143,7 @@
/obj/projectile/bullet/magnetic/bore
name = "phorogenic blast"
icon_state = "purpleemitter"
- damage = 20
+ damage_force = 20
incendiary = 1
armor_penetration = 20
penetrating = 0
@@ -168,7 +168,7 @@
/obj/projectile/bullet/magnetic/bore/powerful
name = "energetic phorogenic blast"
icon_state = "purpleemitter"
- damage = 30
+ damage_force = 30
incendiary = 2
armor_penetration = 20
penetrating = 0
diff --git a/code/modules/projectiles/projectile/pellets.dm b/code/modules/projectiles/projectile/pellets.dm
index 61e9b45cda0c..fb80b3d2506b 100644
--- a/code/modules/projectiles/projectile/pellets.dm
+++ b/code/modules/projectiles/projectile/pellets.dm
@@ -2,7 +2,7 @@
//For projectiles that actually represent clouds of projectiles
/obj/projectile/bullet/pellet
name = "shrapnel" //'shrapnel' sounds more dangerous (i.e. cooler) than 'pellet'
- damage = 20
+ damage_force = 20
//icon_state = "bullet" //TODO: would be nice to have it's own icon state
var/pellets = 4 //number of pellets
var/range_step = 2 //projectile will lose a fragment each time it travels this distance. Can be a non-integer.
@@ -57,7 +57,7 @@
//Explosive grenade projectile, borrowed from fragmentation grenade code.
/obj/projectile/bullet/pellet/fragment
- damage = 10
+ damage_force = 10
armor_penetration = 30
range_step = 2 //projectiles lose a fragment each time they travel this distance. Can be a non-integer.
@@ -69,29 +69,28 @@
muzzle_type = null
/obj/projectile/bullet/pellet/fragment/strong
- damage = 15
+ damage_force = 15
armor_penetration = 20
/obj/projectile/bullet/pellet/fragment/weak
- damage = 4
+ damage_force = 4
armor_penetration = 40
/obj/projectile/bullet/pellet/fragment/rubber
name = "stingball shrapnel"
- damage = 3
+ damage_force = 3
agony = 8
- sharp = FALSE
- edge = FALSE
+ damage_mode = NONE
damage_flag = ARMOR_MELEE
/obj/projectile/bullet/pellet/fragment/rubber/strong
- damage = 8
+ damage_force = 8
agony = 16
// Tank rupture fragments
/obj/projectile/bullet/pellet/fragment/tank
name = "metal fragment"
- damage = 9 //Big chunks flying off.
+ damage_force = 9 //Big chunks flying off.
range_step = 2 //controls damage falloff with distance. projectiles lose a "pellet" each time they travel this distance. Can be a non-integer.
base_spread = 0 //causes it to be treated as a shrapnel explosion instead of cone
@@ -106,13 +105,13 @@
/obj/projectile/bullet/pellet/fragment/tank/small
name = "small metal fragment"
- damage = 6
+ damage_force = 6
armor_penetration = 5
pellets = 5
/obj/projectile/bullet/pellet/fragment/tank/big
name = "large metal fragment"
- damage = 17
+ damage_force = 17
armor_penetration = 10
range_step = 5 //controls damage falloff with distance. projectiles lose a "pellet" each time they travel this distance. Can be a non-integer.
pellets = 1
diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm
index ab7060e41731..35e31bd15b71 100644
--- a/code/modules/projectiles/projectile/reusable.dm
+++ b/code/modules/projectiles/projectile/reusable.dm
@@ -57,7 +57,7 @@
/obj/projectile/bullet/reusable/arrow
name = "wooden arrow"
desc = "Woosh!"
- damage = 15
+ damage_force = 15
icon_state = "arrow"
ammo_type = /obj/item/ammo_casing/arrow/wood
//broken_type = /obj/item/trash/broken_arrow
@@ -66,20 +66,20 @@
/obj/projectile/bullet/reusable/arrow/bone
name = "bone arrow"
desc = "Arrow made of bone and sinew."
- damage = 15
+ damage_force = 15
icon_state = "arrow"
ammo_type = /obj/item/ammo_casing/arrow/bone
/obj/projectile/bullet/reusable/arrow/ash
name = "ashen arrow"
desc = "Fire harderned arrow."
- damage = 25
+ damage_force = 25
ammo_type = /obj/item/ammo_casing/arrow/ash
/obj/projectile/bullet/reusable/arrow/bone_ap //AP for ashwalkers
name = "hardened bone arrow"
desc = "Arrow made of bone and sinew."
- damage = 35
+ damage_force = 35
armor_penetration = 10
ammo_type = /obj/item/ammo_casing/arrow/bone_ap
@@ -93,7 +93,7 @@
/obj/projectile/bullet/reusable/plunger
name = "plunger"
desc = "It's a plunger, for plunging."
- damage = 15
+ damage_force = 15
icon_state = "plunger"
ammo_type = /obj/item/ammo_casing/arrow/plunger
@@ -110,13 +110,13 @@
/obj/projectile/bullet/reusable/foam
name = "foam dart"
desc = "A soft projectile made out of orange foam with a blue plastic tip."
- damage = 0
+ damage_force = 0
ammo_type = /obj/item/ammo_casing/foam
embed_chance = 0 // nope
/obj/projectile/bullet/reusable/foam/riot
name = "riot dart"
desc = "A flexible projectile made out of hardened orange foam with a red plastic tip."
- damage = 10
+ damage_force = 10
damage_type = DAMAGE_TYPE_HALLOSS
ammo_type = /obj/item/ammo_casing/foam/riot
diff --git a/code/modules/projectiles/projectile/scatter.dm b/code/modules/projectiles/projectile/scatter.dm
index 075891889c47..ba9a64b1ac18 100644
--- a/code/modules/projectiles/projectile/scatter.dm
+++ b/code/modules/projectiles/projectile/scatter.dm
@@ -10,7 +10,7 @@
use_submunitions = TRUE
- damage = 8
+ damage_force = 8
spread_submunition_damage = TRUE
only_submunitions = TRUE
range = 0 // Immediately deletes itself after firing, as its only job is to fire other projectiles.
@@ -24,7 +24,7 @@
//Spread Shot
/obj/projectile/scatter/heavy_shotgun
- damage = 15
+ damage_force = 15
submunition_spread_max = 100
submunition_spread_min = 30
@@ -34,7 +34,7 @@
)
/obj/projectile/scatter/heavy_shotgun/accurized
- damage = 15
+ damage_force = 15
submunition_spread_max = 30
submunition_spread_min = 10
@@ -44,7 +44,7 @@
)
/obj/projectile/scatter/heavy_shotgun/silver
- damage = 15
+ damage_force = 15
submunition_spread_max = 30
submunition_spread_min = 10
@@ -71,21 +71,21 @@
)
/obj/projectile/scatter/laser/weak
- damage = 15
+ damage_force = 15
submunitions = list(
/obj/projectile/beam/weaklaser = 3
)
/obj/projectile/scatter/laser/pulse //Badmin only.
- damage = 100
+ damage_force = 100
armor_penetration = 100
submunitions = list(
/obj/projectile/beam/pulse = 3
)
/obj/projectile/scatter/gamma
- damage = 10
+ damage_force = 10
submunition_spread_max = 60
submunition_spread_min = 30
submunitions = list(
@@ -93,14 +93,14 @@
)
/obj/projectile/scatter/laser/heavylaser
- damage = 60
+ damage_force = 60
armor_penetration = 30
submunitions = list(
/obj/projectile/beam/heavylaser = 1 //nope
)
/obj/projectile/scatter/laser/heavylaser/cannon
- damage = 80
+ damage_force = 80
armor_penetration = 50
submunitions = list(
/obj/projectile/beam/heavylaser/cannon = 1 //haha no
@@ -129,7 +129,7 @@
agony = 55
/obj/projectile/scatter/ion
- damage = 0
+ damage_force = 0
submunition_spread_max = 60
submunition_constant_spread = TRUE
@@ -139,7 +139,7 @@
)
/obj/projectile/scatter/excavation
- damage = 2 //mining tool
+ damage_force = 2 //mining tool
submunition_spread_max = 80
submunition_spread_min = 40
fire_sound = 'sound/weapons/weaponsounds_laserweak.ogg'
@@ -148,7 +148,7 @@
)
/obj/projectile/scatter/shock
- damage = 25
+ damage_force = 25
submunition_spread_max = 80
submunition_spread_min = 20
submunitions = list(
@@ -165,7 +165,7 @@
agony = 5
/obj/projectile/scatter/phase
- damage = 5
+ damage_force = 5
submunition_spread_max = 70
submunition_spread_min = 30
submunitions = list(
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 0a00924f9366..79f5fe637173 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -2,7 +2,7 @@
name = "ion bolt"
icon_state = "ion"
fire_sound = 'sound/weapons/Laser.ogg'
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_BURN
nodamage = 1
damage_flag = ARMOR_ENERGY
@@ -36,10 +36,9 @@
/obj/projectile/bullet/gyro
name ="explosive bolt"
icon_state= "bolter"
- damage = 50
+ damage_force = 50
damage_flag = ARMOR_BULLET
- sharp = 1
- edge = 1
+ damage_mode = DAMAGE_MODE_PIERCE
/obj/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0)
explosion(target, -1, 0, 2)
@@ -49,7 +48,7 @@
name = "freeze beam"
icon_state = "ice_2"
fire_sound = 'sound/weapons/pulse3.ogg'
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_BURN
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GLASS | ATOM_PASS_GRILLE
nodamage = 1
@@ -96,7 +95,7 @@
name = "meteor"
icon = 'icons/obj/meteor.dmi'
icon_state = "smallf"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_BRUTE
nodamage = 1
damage_flag = ARMOR_BULLET
@@ -115,7 +114,7 @@
/obj/projectile/meteor/slug
name = "meteor"
- damage = 25
+ damage_force = 25
damage_type = DAMAGE_TYPE_BRUTE
nodamage = 0
@@ -123,7 +122,7 @@
name = "alpha somatoray"
icon_state = "energy"
fire_sound = 'sound/effects/stealthoff.ogg'
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_TOX
nodamage = 1
damage_flag = ARMOR_ENERGY
@@ -170,7 +169,7 @@
name = "gamma somatoray"
icon_state = "energy2"
fire_sound = 'sound/effects/stealthoff.ogg'
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_TOX
nodamage = 1
damage_flag = ARMOR_ENERGY
@@ -180,7 +179,7 @@
name = "beta somatoray"
icon_state = "energy2"
fire_sound = 'sound/effects/stealthoff.ogg'
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_TOX
nodamage = 1
damage_flag = ARMOR_ENERGY
@@ -213,7 +212,7 @@
/obj/projectile/chameleon
name = "bullet"
icon_state = "bullet"
- damage = 1 // stop trying to murderbone with a fake gun dumbass!!!
+ damage_force = 1 // stop trying to murderbone with a fake gun dumbass!!!
embed_chance = 0 // nope
nodamage = 1
damage_type = DAMAGE_TYPE_HALLOSS
@@ -222,7 +221,7 @@
/obj/projectile/bola
name = "bola"
icon_state = "bola"
- damage = 5
+ damage_force = 5
embed_chance = 0 //Nada.
damage_type = DAMAGE_TYPE_HALLOSS
muzzle_type = null
@@ -241,7 +240,7 @@
/obj/projectile/webball
name = "ball of web"
icon_state = "bola"
- damage = 10
+ damage_force = 10
embed_chance = 0 //Nada.
damage_type = DAMAGE_TYPE_BRUTE
muzzle_type = null
@@ -261,7 +260,7 @@
icon_state = "energy"
fire_sound = 'sound/weapons/gauss_shoot.ogg'
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GRILLE
- damage = 70
+ damage_force = 70
damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_LASER
light_range = 4
@@ -329,7 +328,7 @@
..()
/obj/projectile/bullet/honker
- damage = 0
+ damage_force = 0
nodamage = TRUE
impact_sounds = 'sound/items/bikehorn.ogg'
icon = 'icons/obj/items.dmi'
@@ -341,7 +340,7 @@
SpinAnimation()
/obj/projectile/bullet/honker/lethal
- damage = 20
+ damage_force = 20
nodamage = FALSE
damage_type = DAMAGE_TYPE_BRUTE
@@ -350,14 +349,14 @@
SpinAnimation()
/obj/projectile/bullet/honker/lethal/light
- damage = 10
+ damage_force = 10
/obj/projectile/bullet/honker/lethal/heavy
- damage = 40
+ damage_force = 40
//Bio-Organic
/obj/projectile/bullet/organic
- damage = 10
+ damage_force = 10
damage_type = DAMAGE_TYPE_BRUTE
damage_flag = ARMOR_BULLET
impact_sounds = 'sound/effects/splat.ogg'
@@ -369,7 +368,7 @@
icon_state = "organic"
/obj/projectile/bullet/organic/stinger
- damage = 15
+ damage_force = 15
damage_type = DAMAGE_TYPE_TOX
impact_sounds = 'sound/weapons/bladeslice.ogg'
icon_state = "SpearFlight"
@@ -378,7 +377,7 @@
/obj/projectile/plasma
name ="plasma bolt"
icon_state= "fuel-tritium"
- damage = 50
+ damage_force = 50
damage_type = DAMAGE_TYPE_BURN
damage_flag = ARMOR_ENERGY
light_range = 4
@@ -400,7 +399,7 @@
/obj/projectile/plasma/hot
name ="heavy plasma bolt"
- damage = 75
+ damage_force = 75
light_range = 5
light_power = 4
light_color = "#00ccff"
diff --git a/code/modules/projectiles/projectile/trace.dm b/code/modules/projectiles/projectile/trace.dm
index c7433c1e2053..2d8a27903b90 100644
--- a/code/modules/projectiles/projectile/trace.dm
+++ b/code/modules/projectiles/projectile/trace.dm
@@ -21,7 +21,7 @@
invisibility = 101 //Nope! Can't see me!
hitscan = TRUE
nodamage = TRUE
- damage = 0
+ damage_force = 0
has_tracer = FALSE
var/list/hit = list()
diff --git a/code/modules/projectiles/unsorted/magic.dm b/code/modules/projectiles/unsorted/magic.dm
index 772d92bda42d..aa966db9dd38 100644
--- a/code/modules/projectiles/unsorted/magic.dm
+++ b/code/modules/projectiles/unsorted/magic.dm
@@ -1,7 +1,7 @@
/obj/projectile/magic
name = "bolt of nothing"
icon_state = "energy"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_OXY
nodamage = 1
armor_penetration = 100
@@ -24,7 +24,7 @@
/obj/projectile/magic/resurrection
name = "bolt of resurrection"
icon_state = "ion"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_OXY
nodamage = 1
@@ -43,7 +43,7 @@
/obj/projectile/magic/teleport
name = "bolt of teleportation"
icon_state = "bluespace"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_OXY
nodamage = 1
var/inner_tele_radius = 0
@@ -71,7 +71,7 @@
/obj/projectile/magic/door
name = "bolt of door creation"
icon_state = "energy"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_OXY
nodamage = 1
var/list/door_types = list(/obj/structure/simple_door/wood, /obj/structure/simple_door/iron, /obj/structure/simple_door/silver, /obj/structure/simple_door/gold, /obj/structure/simple_door/uranium, /obj/structure/simple_door/sandstone, /obj/structure/simple_door/phoron, /obj/structure/simple_door/diamond)
@@ -100,7 +100,7 @@
/obj/projectile/magic/change
name = "bolt of change"
icon_state = "ice_1"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_BURN
nodamage = 1
@@ -249,7 +249,7 @@
/obj/projectile/magic/animate
name = "bolt of animation"
icon_state = "red_1"
- damage = 0
+ damage_force = 0
damage_type = DAMAGE_TYPE_BURN
nodamage = 1
@@ -294,9 +294,9 @@
/obj/projectile/magic/spellblade
name = "blade energy"
icon_state = "lavastaff"
- damage = 15
+ damage_force = 15
damage_type = DAMAGE_TYPE_BURN
- sharp = TRUE
+ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_SHRED
magic = TRUE
/obj/projectile/magic/spellblade/on_hit(target, var/mob/living/L)
@@ -311,7 +311,7 @@
/obj/projectile/magic/arcane_barrage
name = "arcane bolt"
icon_state = "arcane_barrage"
- damage = 20
+ damage_force = 20
damage_type = DAMAGE_TYPE_BURN
nodamage = 0
armor_penetration = 0
@@ -400,7 +400,7 @@
/obj/projectile/magic/aoe
name = "Area Bolt"
desc = "What the fuck does this do?!"
- damage = 0
+ damage_force = 0
var/proxdet = TRUE
/obj/projectile/magic/aoe/Range()
@@ -414,7 +414,7 @@
/obj/projectile/magic/aoe/lightning
name = "lightning bolt"
icon_state = "tesla_projectile" //Better sprites are REALLY needed and appreciated!~
- damage = 15
+ damage_force = 15
damage_type = DAMAGE_TYPE_BURN
nodamage = 0
magic = TRUE
@@ -447,7 +447,7 @@
/obj/projectile/magic/aoe/fireball
name = "bolt of fireball"
icon_state = "fireball"
- damage = 10
+ damage_force = 10
damage_type = DAMAGE_TYPE_BRUTE
nodamage = 0
@@ -519,7 +519,7 @@
desc = "A piece of paper enchanted to give it extreme durability and stiffness, along with a very hot burn to anyone unfortunate enough to get hit by a charged one."
icon_state = "spellcard"
damage_type = DAMAGE_TYPE_BURN
- damage = 2
+ damage_force = 2
/obj/projectile/magic/spellcard/book
nodamage = FALSE
@@ -527,11 +527,11 @@
desc = "A piece of paper enchanted to give it extreme durability and stiffness, along with a very hot burn to anyone unfortunate enough to get hit by a charged one."
icon_state = "spellcard"
damage_type = DAMAGE_TYPE_BURN
- damage = 12
+ damage_force = 12
magic = TRUE
/obj/projectile/magic/spellcard/book/spark
- damage = 4
+ damage_force = 4
var/fire_stacks = 4
/obj/projectile/magic/spellcard/book/spark/on_hit(atom/target, blocked = FALSE)
@@ -547,17 +547,17 @@
M.IgniteMob()
return
else
- damage = 20 //If we are a simplemob we deal 5x damage
+ damage_force = 20 //If we are a simplemob we deal 5x damage
/obj/projectile/magic/spellcard/book/shock
- damage = 0
+ damage_force = 0
stutter = 5
agony = 20
stun = 10
/* //Still need help on healing procs.
/obj/projectile/magic/spellcard/book/heal
- damage = 0
+ damage_force = 0
nodamage = TRUE
/obj/projectile/magic/spellcard/book/heal/on_hit(atom/target, blocked = FALSE)
diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm b/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm
index cae2fb8c80fd..3ccaa93b53a3 100644
--- a/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm
+++ b/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm
@@ -64,8 +64,9 @@
nodamage = 1
agony = 5
embed_chance = 0
- sharp = 0
damage_flag = ARMOR_MELEE
+ damage_force = 0
+ damage_mode = NONE
/obj/projectile/bullet/stripper/on_hit(var/atom/stripped)
if(ishuman(stripped))
From 82de3a3746e55fa004b597684142c308693b71ec Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Fri, 5 Jul 2024 20:10:13 +0000
Subject: [PATCH 4/6] wounds
---
citadel.dme | 1 +
code/__DEFINES/mobs/wounds.dm | 7 +++
.../mechanical/hivebot/ranged_damage.dm | 7 +--
.../mechanical/mecha/adv_dark_gygax.dm | 3 +-
.../subtypes/mechanical/mecha/odysseus.dm | 2 +-
code/modules/organs/external/external.dm | 24 +++++-----
code/modules/organs/external/wound.dm | 45 ++++++++++---------
.../organs/external/wounds/amputation.dm | 4 +-
code/modules/organs/external/wounds/brute.dm | 18 ++++----
code/modules/organs/external/wounds/burn.dm | 2 +-
10 files changed, 63 insertions(+), 50 deletions(-)
create mode 100644 code/__DEFINES/mobs/wounds.dm
diff --git a/citadel.dme b/citadel.dme
index 7bf894b3e8c5..7d736f192748 100644
--- a/citadel.dme
+++ b/citadel.dme
@@ -262,6 +262,7 @@
#include "code\__DEFINES\mobs\silicon_privileges.dm"
#include "code\__DEFINES\mobs\sprite_accessories.dm"
#include "code\__DEFINES\mobs\stat.dm"
+#include "code\__DEFINES\mobs\wounds.dm"
#include "code\__DEFINES\objects\objects.dm"
#include "code\__DEFINES\objects\type_generation.dm"
#include "code\__DEFINES\overmaps\misc.dm"
diff --git a/code/__DEFINES/mobs/wounds.dm b/code/__DEFINES/mobs/wounds.dm
new file mode 100644
index 000000000000..7466aa01dbd1
--- /dev/null
+++ b/code/__DEFINES/mobs/wounds.dm
@@ -0,0 +1,7 @@
+//* Wound types *//
+
+#define WOUND_TYPE_CUT "cut"
+#define WOUND_TYPE_PIERCE "pierce"
+#define WOUND_TYPE_BRUISE "bruise"
+#define WOUND_TYPE_BURN "burn"
+#define WOUND_TYPE_OTHER "other"
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm
index 0f3ce3a23194..a70972801d1f 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm
@@ -125,7 +125,9 @@
/obj/projectile/arc/blue_energy
name = "energy missile"
icon_state = "force_missile"
- damage = 15 // A bit stronger since arcing projectiles are much easier to avoid than traditional ones.
+ damage_force = 25
+ damage_flag = ARMOR_LASER
+ damage_tier = LASER_TIER_HIGH
damage_type = BURN
// Very long ranged hivebot that rains down hell.
@@ -239,9 +241,8 @@
catalogue_data = list(/datum/category_item/catalogue/technology/drone/hivebot/suppressor)
-
/obj/projectile/beam/smalllaser/hivebot
- damage = 25
+ damage_force = 25
agony = 20
muzzle_type = /obj/effect/projectile/muzzle/lightning
tracer_type = /obj/effect/projectile/tracer/lightning
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm
index 78d3e27ba788..a4c90fac0807 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm
@@ -121,9 +121,10 @@
/obj/projectile/energy/homing_bolt
name = "homing bolt"
icon_state = "force_missile"
- damage = 20
+ damage_force = 20
damage_type = BURN
damage_flag = ARMOR_LASER
+ damage_tier = LASER_TIER_MEDIUM
/obj/projectile/energy/homing_bolt/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/odysseus.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/odysseus.dm
index bc6b49659e4c..72f8f012cb27 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/odysseus.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/odysseus.dm
@@ -64,7 +64,7 @@
/obj/projectile/fake_syringe
name = "syringe"
icon_state = "syringe"
- damage = 5 // Getting hit with a launched syringe probably hurts, and makes it at least slightly relevant against synthetics.
+ damage_force = 5
var/piercing = FALSE // If true, ignores thick material.
/obj/projectile/fake_syringe/on_hit(atom/target, blocked = 0, def_zone = null)
diff --git a/code/modules/organs/external/external.dm b/code/modules/organs/external/external.dm
index 4b7282d15d9b..8de05fea9d9f 100644
--- a/code/modules/organs/external/external.dm
+++ b/code/modules/organs/external/external.dm
@@ -394,11 +394,11 @@
if(can_inflict_brute >= brute)
if(can_cut)
if(sharp && !edge)
- create_wound( PIERCE, brute )
+ create_wound( WOUND_TYPE_PIERCE, brute )
else
- create_wound( CUT, brute )
+ create_wound( WOUND_TYPE_CUT, brute )
else
- create_wound( BRUISE, brute )
+ create_wound( WOUND_TYPE_BRUISE, brute )
else if(!(damage_mode & DAMAGE_MODE_NO_OVERFLOW))
var/overflow_brute = brute - can_inflict_brute
// keep allowing it, but, diminishing returns
@@ -408,24 +408,24 @@
overflow_brute -= damage_anyways_brute
if(can_cut)
if(sharp && !edge)
- create_wound( PIERCE, damage_anyways_brute )
+ create_wound( WOUND_TYPE_PIERCE, damage_anyways_brute )
else
- create_wound( CUT, damage_anyways_brute )
+ create_wound( WOUND_TYPE_CUT, damage_anyways_brute )
else
- create_wound( BRUISE, damage_anyways_brute )
+ create_wound( WOUND_TYPE_BRUISE, damage_anyways_brute )
// rest goes into shock
owner.shock_stage += overflow_brute * 0.33
if(burn)
var/can_inflict_burn = max(0, max_damage - burn_dam)
if(can_inflict_burn >= burn)
- create_wound( BURN, burn )
+ create_wound( WOUND_TYPE_BURN, burn )
else
var/overflow_burn = burn - can_inflict_burn
var/damage_anyways_burn = !(damage_mode & DAMAGE_MODE_NO_OVERFLOW) && ( \
overflow_burn * min(1, 1 / ((max(burn_dam, max_damage) + damage_softcap_intensifier) / (damage_softcap_intensifier + max_damage))) \
)
overflow_burn -= damage_anyways_burn
- create_wound(BURN, damage_anyways_burn + can_inflict_burn)
+ create_wound(WOUND_TYPE_BURN, damage_anyways_burn + can_inflict_burn)
// rest goes into shock
owner.shock_stage += overflow_burn * 0.33
@@ -500,7 +500,7 @@
break
// heal brute damage
- if(W.damage_type == BURN)
+ if(W.wound_type == BURN)
burn = W.heal_damage(burn)
else
brute = W.heal_damage(brute)
@@ -845,7 +845,7 @@ Note that amputating the affected organ does in fact remove the infection from t
//update damage counts
for(var/datum/wound/W as anything in wounds)
if(!W.internal) //so IB doesn't count towards crit/paincrit
- if(W.damage_type == BURN)
+ if(W.wound_type == BURN)
burn_dam += W.damage
else
brute_dam += W.damage
@@ -1266,7 +1266,7 @@ Note that amputating the affected organ does in fact remove the infection from t
if(!owner || loc != owner)
return
if(owner.species.species_flags & IS_SLIME)
- create_wound( CUT, 15 ) //fixes proms being bugged into paincrit;instead whatever would embed now just takes a chunk out
+ create_wound( WOUND_TYPE_CUT, 15 ) //fixes proms being bugged into paincrit;instead whatever would embed now just takes a chunk out
src.visible_message("[owner] has been seriously wounded by [W]!")
W.add_blood(owner)
return 0
@@ -1425,7 +1425,7 @@ Note that amputating the affected organ does in fact remove the infection from t
if(W.internal && !open) continue // can't see internal wounds
var/this_wound_desc = W.desc
- if(W.damage_type == BURN && W.salved)
+ if(W.wound_type == BURN && W.salved)
this_wound_desc = "salved [this_wound_desc]"
if(W.bleeding())
diff --git a/code/modules/organs/external/wound.dm b/code/modules/organs/external/wound.dm
index b9d9f52431ff..e2b8d1eff78b 100644
--- a/code/modules/organs/external/wound.dm
+++ b/code/modules/organs/external/wound.dm
@@ -3,26 +3,26 @@
*
* todo: better documentation
*/
-/obj/item/organ/external/proc/create_wound(var/type = CUT, var/damage)
+/obj/item/organ/external/proc/create_wound(var/type = WOUND_TYPE_CUT, var/damage)
if(damage == 0)
return
//moved this before the open_wound check so that having many small wounds for example doesn't somehow protect you from taking internal damage (because of the return)
//Possibly trigger an internal wound, too.
var/local_damage = brute_dam + burn_dam + damage
- if((damage > 15) && (type != BURN) && (local_damage > 30) && prob(damage) && (robotic < ORGAN_ROBOT) && !(species.species_flags & NO_BLOOD))
+ if((damage > 15) && (type != WOUND_TYPE_BURN) && (local_damage > 30) && prob(damage) && (robotic < ORGAN_ROBOT) && !(species.species_flags & NO_BLOOD))
create_specific_wound(/datum/wound/internal_bleeding, min(damage - 15, 15))
owner.custom_pain("You feel something rip in your [name]!", 50)
//Burn damage can cause fluid loss due to blistering and cook-off
- if((damage > 5 || damage + burn_dam >= 15) && type == BURN && (robotic < ORGAN_ROBOT) && !(species.species_flags & NO_BLOOD))
+ if((damage > 5 || damage + burn_dam >= 15) && type == WOUND_TYPE_BURN && (robotic < ORGAN_ROBOT) && !(species.species_flags & NO_BLOOD))
var/fluid_loss = 0.4 * (damage/(owner.getMaxHealth() - config_legacy.health_threshold_dead)) * owner.species.blood_volume*(1 - owner.species.blood_level_fatal)
owner.remove_blood(fluid_loss)
// first check whether we can widen an existing wound
if(length(wounds) > 0 && prob(max(50+(wound_tally-1)*10,90)))
- if((type == CUT || type == BRUISE) && damage >= 5)
+ if((type == WOUND_TYPE_CUT || type == WOUND_TYPE_BRUISE) && damage >= 5)
//we need to make sure that the wound we are going to worsen is compatible with the type of damage...
var/list/compatible_wounds = list()
for (var/datum/wound/W as anything in wounds)
@@ -188,8 +188,6 @@
var/internal = FALSE
// maximum stage at which bleeding should still happen. Beyond this stage bleeding is prevented.
var/max_bleeding_stage = 0
- // one of CUT, PIERCE, BRUISE, BURN
- var/damage_type = CUT
// whether this wound needs a bandage/salve to heal at all
// the maximum amount of damage that this wound can have and still autoheal
var/autoheal_cutoff = 10
@@ -202,6 +200,11 @@
var/tmp/list/desc_list = list()
var/tmp/list/damage_list = list()
+ //* Metadata - defined by typepath; should not be changed. *//
+
+ /// WOUND_TYPE_* define
+ var/wound_type = WOUND_TYPE_OTHER
+
/datum/wound/New(damage)
created = world.time
@@ -243,9 +246,9 @@
// checks whether the wound has been appropriately treated
/datum/wound/proc/is_treated()
- if(damage_type == BRUISE || damage_type == CUT || damage_type == PIERCE)
+ if(wound_type == WOUND_TYPE_BRUISE || wound_type == WOUND_TYPE_CUT || wound_type == WOUND_TYPE_PIERCE)
return bandaged
- else if(damage_type == BURN)
+ else if(wound_type == WOUND_TYPE_BURN)
return salved
// Checks whether other other can be merged into src.
@@ -254,7 +257,7 @@
return 0
if (other.current_stage != src.current_stage)
return 0
- if (other.damage_type != src.damage_type)
+ if (other.wound_type != src.wound_type)
return 0
if (!(other.can_autoheal()) != !(src.can_autoheal()))
return 0
@@ -295,7 +298,7 @@
return FALSE
if (is_treated() && damage < 25) //anything less than a flesh wound (or equivalent) isn't infectable if treated properly
return FALSE
- if (damage_type == BRUISE && !bleeding()) //bruises only infectable if bleeding
+ if (wound_type == WOUND_TYPE_BRUISE && !bleeding()) //bruises only infectable if bleeding
return FALSE
@@ -303,12 +306,12 @@
return TRUE
var/dam_coef = round(damage/10)
- switch (damage_type)
- if (BRUISE)
+ switch (wound_type)
+ if (WOUND_TYPE_BRUISE)
return prob(dam_coef*5)
- if (BURN)
+ if (WOUND_TYPE_BURN)
return prob(dam_coef*10)
- if (CUT)
+ if (WOUND_TYPE_CUT)
return prob(dam_coef*20)
return FALSE
@@ -355,8 +358,8 @@
// returns whether this wound can absorb the given amount of damage.
// this will prevent large amounts of damage being trapped in less severe wound types
-/datum/wound/proc/can_worsen(damage_type, damage)
- if (src.damage_type != damage_type)
+/datum/wound/proc/can_worsen(wound_type, damage)
+ if (src.wound_type != wound_type)
return 0 //incompatible damage types
if (src.amount > 1)
@@ -392,9 +395,9 @@
//the damage amount for the stage with the same name as the wound.
//e.g. /datum/wound/cut/deep should only be applied for 15 damage and up,
//because in it's stages list, "deep cut" = 15.
-/proc/get_wound_type(type = CUT, damage)
+/proc/get_wound_type(type = WOUND_TYPE_CUT, damage)
switch(type)
- if(CUT)
+ if(WOUND_TYPE_CUT)
switch(damage)
if(70 to INFINITY)
return /datum/wound/cut/massive
@@ -408,7 +411,7 @@
return /datum/wound/cut/deep
if(0 to 15)
return /datum/wound/cut/small
- if(PIERCE)
+ if(WOUND_TYPE_PIERCE)
switch(damage)
if(60 to INFINITY)
return /datum/wound/puncture/massive
@@ -420,9 +423,9 @@
return /datum/wound/puncture/flesh
if(0 to 15)
return /datum/wound/puncture/small
- if(BRUISE)
+ if(WOUND_TYPE_BRUISE)
return /datum/wound/bruise
- if(BURN)
+ if(WOUND_TYPE_BURN)
switch(damage)
if(50 to INFINITY)
return /datum/wound/burn/carbonised
diff --git a/code/modules/organs/external/wounds/amputation.dm b/code/modules/organs/external/wounds/amputation.dm
index 559f5cdff37b..6ad2f319899e 100644
--- a/code/modules/organs/external/wounds/amputation.dm
+++ b/code/modules/organs/external/wounds/amputation.dm
@@ -7,7 +7,7 @@
switch(losstype)
if(DROPLIMB_EDGE, DROPLIMB_BLUNT)
- damage_type = CUT
+ wound_type = WOUND_TYPE_CUT
max_bleeding_stage = 3 //clotted stump and above can bleed.
stages = list(
"ripped stump" = damage_amt*1.3,
@@ -16,7 +16,7 @@
"scarred stump" = 0
)
if(DROPLIMB_BURN)
- damage_type = BURN
+ wound_type = WOUND_TYPE_BURN
stages = list(
"ripped charred stump" = damage_amt*1.3,
"charred stump" = damage_amt,
diff --git a/code/modules/organs/external/wounds/brute.dm b/code/modules/organs/external/wounds/brute.dm
index e891b7bf1404..d659ca7c810d 100644
--- a/code/modules/organs/external/wounds/brute.dm
+++ b/code/modules/organs/external/wounds/brute.dm
@@ -1,7 +1,7 @@
/** CUTS **/
/datum/wound/cut
bleed_threshold = 5
- damage_type = CUT
+ wound_type = WOUND_TYPE_CUT
/datum/wound/cut/small
// link wound descriptions to amounts of damage
@@ -33,35 +33,35 @@
/** PUNCTURES **/
/datum/wound/puncture
bleed_threshold = 5
- damage_type = PIERCE
+ wound_type = WOUND_TYPE_PIERCE
-/datum/wound/puncture/can_worsen(damage_type, damage)
+/datum/wound/puncture/can_worsen(wound_type, damage)
return 0 //puncture wounds cannot be enlargened
/datum/wound/puncture/small
max_bleeding_stage = 2
stages = list("puncture" = 5, "healing puncture" = 2, "small scab" = 0)
- damage_type = PIERCE
+ wound_type = WOUND_TYPE_PIERCE
/datum/wound/puncture/flesh
max_bleeding_stage = 2
stages = list("puncture wound" = 15, "blood soaked clot" = 5, "large scab" = 2, "small round scar" = 0)
- damage_type = PIERCE
+ wound_type = WOUND_TYPE_PIERCE
/datum/wound/puncture/gaping
max_bleeding_stage = 3
stages = list("gaping hole" = 30, "large blood soaked clot" = 15, "blood soaked clot" = 10, "small angry scar" = 5, "small round scar" = 0)
- damage_type = PIERCE
+ wound_type = WOUND_TYPE_PIERCE
/datum/wound/puncture/gaping_big
max_bleeding_stage = 3
stages = list("big gaping hole" = 50, "healing gaping hole" = 20, "large blood soaked clot" = 15, "large angry scar" = 10, "large round scar" = 0)
- damage_type = PIERCE
+ wound_type = WOUND_TYPE_PIERCE
/datum/wound/puncture/massive
max_bleeding_stage = 3
stages = list("massive wound" = 60, "massive healing wound" = 30, "massive blood soaked clot" = 25, "massive angry scar" = 10, "massive jagged scar" = 0)
- damage_type = PIERCE
+ wound_type = WOUND_TYPE_PIERCE
/** BRUISES **/
/datum/wound/bruise
@@ -69,4 +69,4 @@
"moderate bruise" = 20, "small bruise" = 10, "tiny bruise" = 5)
bleed_threshold = 20
max_bleeding_stage = 2 //only huge bruise and above can bleed.
- damage_type = BRUISE
+ wound_type = WOUND_TYPE_BRUISE
diff --git a/code/modules/organs/external/wounds/burn.dm b/code/modules/organs/external/wounds/burn.dm
index c6354a23a2d3..5378fa7235d6 100644
--- a/code/modules/organs/external/wounds/burn.dm
+++ b/code/modules/organs/external/wounds/burn.dm
@@ -1,6 +1,6 @@
/** BURNS **/
/datum/wound/burn
- damage_type = BURN
+ wound_type = WOUND_TYPE_BURN
max_bleeding_stage = 0
/datum/wound/burn/bleeding()
From 9c07b881ceef03b53a61d8c674943d89b60fb951 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Fri, 5 Jul 2024 20:14:42 +0000
Subject: [PATCH 5/6] change
---
code/__DEFINES/combat/damage.dm | 27 +++++++++++++++++---------
code/__HELPERS/unsorted.dm | 6 ------
code/controllers/subsystem/throwing.dm | 2 +-
3 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/code/__DEFINES/combat/damage.dm b/code/__DEFINES/combat/damage.dm
index 3a68c6338aa6..6028672eda01 100644
--- a/code/__DEFINES/combat/damage.dm
+++ b/code/__DEFINES/combat/damage.dm
@@ -35,12 +35,21 @@
//? damage_mode bitfield
-#define DAMAGE_MODE_SHARP (1<<0) //! sharp weapons like knives, spears, etc
-#define DAMAGE_MODE_EDGE (1<<1) //! weapons with an edge, like knives, being used as such. without this, sharp = pierce
-#define DAMAGE_MODE_ABLATING (1<<2) //! pulse lasers, etc, basically blows a crater
-#define DAMAGE_MODE_PIERCE (1<<3) //! specifically highly-piercing weapons like bullets, even worse than sharp.
-#define DAMAGE_MODE_SHRED (1<<4) //! messy, shredded wounds instead of a clean cut / pierce. strong.
-#define DAMAGE_MODE_GRADUAL (1<<5) //! disallow bone breaks, ablation, etc; used for gradual sources like depressurization
-#define DAMAGE_MODE_INTERNAL (1<<6) //! coming from internal; used to flag that something isn't coming through the skin. certain defenses don't work if this is set.
-#define DAMAGE_MODE_REDIRECT (1<<7) //! if zone doesn't exist / etc, allow redirection
-#define DAMAGE_MODE_NO_OVERFLOW (1<<8)//! temporary - re-evaluate when health is reworked. prevents damage from overflowing caps.
+/// sharp weapons like knives, spears, etc
+#define DAMAGE_MODE_SHARP (1<<0)
+/// weapons with an edge, like knives, being used as such. without this, sharp = pierce
+#define DAMAGE_MODE_EDGE (1<<1)
+/// pulse lasers, etc, basically blows a crater
+#define DAMAGE_MODE_ABLATING (1<<2)
+/// specifically highly-piercing weapons like bullets, even worse than sharp.
+#define DAMAGE_MODE_PIERCE (1<<3)
+/// messy, shredded wounds instead of a clean cut / pierce. strong.
+#define DAMAGE_MODE_SHRED (1<<4)
+/// disallow bone breaks, ablation, etc; used for gradual sources like depressurization
+#define DAMAGE_MODE_GRADUAL (1<<5)
+/// coming from internal; used to flag that something isn't coming through the skin. certain defenses don't work if this is set.
+#define DAMAGE_MODE_INTERNAL (1<<6)
+/// if zone doesn't exist / etc, allow redirection
+#define DAMAGE_MODE_REDIRECT (1<<7)
+/// temporary - re-evaluate when health is reworked. prevents damage from overflowing caps.
+#define DAMAGE_MODE_NO_OVERFLOW (1<<8)
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 645544a9110b..5c59d40f5601 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1016,10 +1016,6 @@
/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)
@@ -1030,8 +1026,6 @@
/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)
diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm
index 7e3b962c3877..f87f65d20750 100644
--- a/code/controllers/subsystem/throwing.dm
+++ b/code/controllers/subsystem/throwing.dm
@@ -394,7 +394,7 @@ SUBSYSTEM_DEF(throwing)
/datum/thrownthing/proc/get_damage_force(atom/target)
. = thrownthing.throw_force
if(isitem(thrownthing))
- var/obj/item/I = throwthing
+ var/obj/item/I = thrownthing
if(isnull(.))
. = I.damage_force
return . * get_damage_multiplier(target)
From 0a55e46c3a671c4cc60f02360d29f238294b15ff Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Fri, 6 Sep 2024 15:41:13 +0000
Subject: [PATCH 6/6] let's atomize this more
---
code/modules/mob/living/living-mobility.dm | 2 +-
code/modules/mob/mob-mobility.dm | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/modules/mob/living/living-mobility.dm b/code/modules/mob/living/living-mobility.dm
index 7efc3be398a9..5b3b62b0bb6d 100644
--- a/code/modules/mob/living/living-mobility.dm
+++ b/code/modules/mob/living/living-mobility.dm
@@ -1,5 +1,5 @@
//* This file is explicitly licensed under the MIT license. *//
-//* Copyright (c) 2024 silicons *//
+//* Copyright (c) 2024 Citadel Station Developers *//
/mob/living/update_mobility(blocked, forced)
// this proc looks mildly heretical and pyramid of doomy
diff --git a/code/modules/mob/mob-mobility.dm b/code/modules/mob/mob-mobility.dm
index 8334ae0a086d..df8cfbbc2649 100644
--- a/code/modules/mob/mob-mobility.dm
+++ b/code/modules/mob/mob-mobility.dm
@@ -1,5 +1,5 @@
//* This file is explicitly licensed under the MIT license. *//
-//* Copyright (c) 2024 silicons *//
+//* Copyright (c) 2024 Citadel Station Developers *//
//! Mobility: The ability of mobs to perform actions.
//? We primarily use flags and a proc to differentiate this