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