diff --git a/_maps/away_missions/archive/zresearchlabs.dmm b/_maps/away_missions/archive/zresearchlabs.dmm
index 045bd74838a..1429223ff17 100644
--- a/_maps/away_missions/archive/zresearchlabs.dmm
+++ b/_maps/away_missions/archive/zresearchlabs.dmm
@@ -5700,7 +5700,7 @@
/obj/structure/table/woodentable,
/obj/item/material/sword/katana{
desc = "A well-weathered sword meant to be kept at the side of an officer. It is not meant for real combat.";
- force = 15;
+ damage_force = 15;
name = "Officer's Sword"
},
/turf/simulated/floor{
diff --git a/_maps/map_levels/140x140/piratebase.dmm b/_maps/map_levels/140x140/piratebase.dmm
index 17a90330d0d..c982844e82b 100644
--- a/_maps/map_levels/140x140/piratebase.dmm
+++ b/_maps/map_levels/140x140/piratebase.dmm
@@ -234,7 +234,7 @@
/area/space)
"jU" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/projectile/beam/medical_cell/omni3,
+/obj/item/ammo_casing/microbattery/medical/omni3,
/obj/random/tool,
/turf/simulated/floor/reinforced,
/area/piratebase/facility)
@@ -450,12 +450,12 @@
/area/shuttle/pirate/general)
"uI" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/projectile/beam/medical_cell/toxin3,
+/obj/item/ammo_casing/microbattery/medical/toxin3,
/turf/simulated/floor/reinforced,
/area/piratebase/facility)
"uJ" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/projectile/beam/medical_cell/burn3,
+/obj/item/ammo_casing/microbattery/medical/burn3,
/turf/simulated/floor/reinforced,
/area/piratebase/facility)
"uV" = (
@@ -485,7 +485,7 @@
/area/piratebase/facility)
"wb" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/projectile/beam/medical_cell/corpse_mend,
+/obj/item/ammo_casing/microbattery/medical/corpse_mend,
/obj/random/tool,
/turf/simulated/floor/reinforced,
/area/piratebase/facility)
@@ -534,7 +534,7 @@
/area/piratebase/facility)
"yr" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/projectile/beam/medical_cell/stabilize2,
+/obj/item/ammo_casing/microbattery/medical/stabilize2,
/obj/random/tool,
/turf/simulated/floor/reinforced,
/area/piratebase/facility)
@@ -544,7 +544,7 @@
/area/space)
"yz" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/projectile/beam/medical_cell/toxin3,
+/obj/item/ammo_casing/microbattery/medical/toxin3,
/obj/random/tool,
/turf/simulated/floor/reinforced,
/area/piratebase/facility)
@@ -760,7 +760,7 @@
/area/piratebase/facility)
"Kw" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/projectile/beam/medical_cell/stabilize2,
+/obj/item/ammo_casing/microbattery/medical/stabilize2,
/turf/simulated/floor/reinforced,
/area/piratebase/facility)
"KP" = (
@@ -939,7 +939,7 @@
/area/shuttle/pirate/general)
"QF" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/projectile/beam/medical_cell/brute3,
+/obj/item/ammo_casing/microbattery/medical/brute3,
/turf/simulated/floor/reinforced,
/area/piratebase/facility)
"QK" = (
@@ -1060,7 +1060,7 @@
/area/shuttle/pirate/general)
"YD" = (
/obj/structure/table/rack/shelf/steel,
-/obj/item/projectile/beam/medical_cell/antirad,
+/obj/item/ammo_casing/microbattery/medical/antirad,
/turf/simulated/floor/reinforced,
/area/piratebase/facility)
"YV" = (
diff --git a/_maps/submaps/level_specific/class_d/DecoupledEngineD.dmm b/_maps/submaps/level_specific/class_d/DecoupledEngineD.dmm
index 080d427fbbf..88ce5d1c15a 100644
--- a/_maps/submaps/level_specific/class_d/DecoupledEngineD.dmm
+++ b/_maps/submaps/level_specific/class_d/DecoupledEngineD.dmm
@@ -32,7 +32,7 @@
/turf/simulated/floor/outdoors/classd,
/area/class_d/POIs/ship)
"al" = (
-/obj/item/projectile/bullet/magnetic/fuelrod,
+/obj/projectile/bullet/magnetic/fuelrod,
/turf/simulated/floor/outdoors/classd,
/area/class_d/POIs/ship)
"am" = (
@@ -292,7 +292,7 @@
/area/class_d/POIs/ship)
"be" = (
/obj/effect/floor_decal/rust,
-/obj/item/projectile/bullet/magnetic/fuelrod,
+/obj/projectile/bullet/magnetic/fuelrod,
/turf/simulated/floor/classd,
/area/class_d/POIs/ship)
"bf" = (
diff --git a/_maps/submaps/wilderness/DecoupledEngine.dmm b/_maps/submaps/wilderness/DecoupledEngine.dmm
index 12997f1c2e2..1232a9d3218 100644
--- a/_maps/submaps/wilderness/DecoupledEngine.dmm
+++ b/_maps/submaps/wilderness/DecoupledEngine.dmm
@@ -43,7 +43,7 @@
/turf/simulated/floor/outdoors/rocks,
/area/submap/DecoupledEngine)
"al" = (
-/obj/item/projectile/bullet/magnetic/fuelrod,
+/obj/projectile/bullet/magnetic/fuelrod,
/turf/template_noop,
/area/submap/DecoupledEngine)
"am" = (
diff --git a/citadel.dme b/citadel.dme
index a1da8900863..2d825dbbb9a 100644
--- a/citadel.dme
+++ b/citadel.dme
@@ -35,7 +35,6 @@
#include "code\__DEFINES\access.dm"
#include "code\__DEFINES\actionspeed_modification.dm"
#include "code\__DEFINES\appearance.dm"
-#include "code\__DEFINES\armor.dm"
#include "code\__DEFINES\automata.dm"
#include "code\__DEFINES\belly_modes_vr.dm"
#include "code\__DEFINES\callbacks.dm"
@@ -130,7 +129,10 @@
#include "code\__DEFINES\color\colour_priority.dm"
#include "code\__DEFINES\color\lights.dm"
#include "code\__DEFINES\color\lum.dm"
+#include "code\__DEFINES\combat\armor.dm"
#include "code\__DEFINES\combat\atom_damage.dm"
+#include "code\__DEFINES\combat\attack_types.dm"
+#include "code\__DEFINES\combat\damage.dm"
#include "code\__DEFINES\combat\explosions.dm"
#include "code\__DEFINES\controllers\_subsystems.dm"
#include "code\__DEFINES\controllers\dbcore.dm"
@@ -154,6 +156,7 @@
#include "code\__DEFINES\dcs\signals\items\signals_inducer.dm"
#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_attack.dm"
#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_buckling.dm"
+#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_defense.dm"
#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_lighting.dm"
#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_main.dm"
#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_mouse.dm"
@@ -591,6 +594,45 @@
#include "code\datums\announce\location\global.dm"
#include "code\datums\announce\location\main_station.dm"
#include "code\datums\announce\location\overmap_sector.dm"
+#include "code\datums\armor\core.dm"
+#include "code\datums\armor\mecha.dm"
+#include "code\datums\armor\military.dm"
+#include "code\datums\armor\misc.dm"
+#include "code\datums\armor\unsorted.dm"
+#include "code\datums\armor\antagonist\agent.dm"
+#include "code\datums\armor\antagonist\alien.dm"
+#include "code\datums\armor\antagonist\changeling.dm"
+#include "code\datums\armor\antagonist\cult.dm"
+#include "code\datums\armor\antagonist\technomancer.dm"
+#include "code\datums\armor\antagonist\wizard.dm"
+#include "code\datums\armor\clothing\armor.dm"
+#include "code\datums\armor\clothing\gloves.dm"
+#include "code\datums\armor\clothing\head.dm"
+#include "code\datums\armor\clothing\mask.dm"
+#include "code\datums\armor\clothing\shoes.dm"
+#include "code\datums\armor\clothing\suit.dm"
+#include "code\datums\armor\clothing\uniform.dm"
+#include "code\datums\armor\outsider\autolok.dm"
+#include "code\datums\armor\outsider\imperial.dm"
+#include "code\datums\armor\outsider\lavaland.dm"
+#include "code\datums\armor\outsider\merc.dm"
+#include "code\datums\armor\outsider\oricon.dm"
+#include "code\datums\armor\outsider\pirate.dm"
+#include "code\datums\armor\outsider\vintage.dm"
+#include "code\datums\armor\species\phoronoid.dm"
+#include "code\datums\armor\species\skrell.dm"
+#include "code\datums\armor\species\teshari.dm"
+#include "code\datums\armor\species\vox.dm"
+#include "code\datums\armor\species\zaddat.dm"
+#include "code\datums\armor\station\armor.dm"
+#include "code\datums\armor\station\cargo.dm"
+#include "code\datums\armor\station\centcom.dm"
+#include "code\datums\armor\station\civilian.dm"
+#include "code\datums\armor\station\engineering.dm"
+#include "code\datums\armor\station\exploration.dm"
+#include "code\datums\armor\station\medical.dm"
+#include "code\datums\armor\station\science.dm"
+#include "code\datums\armor\station\security.dm"
#include "code\datums\autolathe\arms.dm"
#include "code\datums\autolathe\autolathe.dm"
#include "code\datums\autolathe\devices.dm"
@@ -803,18 +845,18 @@
#include "code\game\area\Space Station 13 areas.dm"
#include "code\game\area\ss13_deprecated_areas.dm"
#include "code\game\area\Tether_areas.dm"
-#include "code\game\atoms\atoms.dm"
-#include "code\game\atoms\atoms_appearance.dm"
-#include "code\game\atoms\atoms_movable.dm"
-#include "code\game\atoms\atoms_movable_movement.dm"
-#include "code\game\atoms\atoms_movable_pulling.dm"
-#include "code\game\atoms\atoms_movable_throwing.dm"
-#include "code\game\atoms\atoms_movable_vv.dm"
-#include "code\game\atoms\atoms_movement.dm"
-#include "code\game\atoms\atoms_vv.dm"
+#include "code\game\atoms\appearance.dm"
+#include "code\game\atoms\atom.dm"
#include "code\game\atoms\buckling.dm"
#include "code\game\atoms\defense.dm"
+#include "code\game\atoms\movement.dm"
#include "code\game\atoms\say.dm"
+#include "code\game\atoms\vv.dm"
+#include "code\game\atoms\movable\movable.dm"
+#include "code\game\atoms\movable\movement.dm"
+#include "code\game\atoms\movable\pulling.dm"
+#include "code\game\atoms\movable\throwing.dm"
+#include "code\game\atoms\movable\vv.dm"
#include "code\game\dna\dna2.dm"
#include "code\game\dna\dna2_domutcheck.dm"
#include "code\game\dna\dna2_helpers.dm"
@@ -2900,6 +2942,7 @@
#include "code\modules\mob\action_feedback.dm"
#include "code\modules\mob\animations.dm"
#include "code\modules\mob\death.dm"
+#include "code\modules\mob\defense.dm"
#include "code\modules\mob\emote.dm"
#include "code\modules\mob\floating_message.dm"
#include "code\modules\mob\gender.dm"
@@ -2921,6 +2964,7 @@
#include "code\modules\mob\mobility.dm"
#include "code\modules\mob\movement.dm"
#include "code\modules\mob\perspective.dm"
+#include "code\modules\mob\physiology.dm"
#include "code\modules\mob\say.dm"
#include "code\modules\mob\say_vr.dm"
#include "code\modules\mob\status_procs.dm"
@@ -2980,6 +3024,7 @@
#include "code\modules\mob\inventory\helpers.dm"
#include "code\modules\mob\inventory\inventory.dm"
#include "code\modules\mob\inventory\items.dm"
+#include "code\modules\mob\inventory\mobs.dm"
#include "code\modules\mob\inventory\rendering.dm"
#include "code\modules\mob\inventory\slot_meta.dm"
#include "code\modules\mob\inventory\stripping.dm"
@@ -2988,10 +3033,10 @@
#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\inventory.dm"
#include "code\modules\mob\living\life.dm"
#include "code\modules\mob\living\living.dm"
-#include "code\modules\mob\living\living_defense.dm"
#include "code\modules\mob\living\living_defines.dm"
#include "code\modules\mob\living\living_defines_vr.dm"
#include "code\modules\mob\living\living_powers.dm"
@@ -3060,6 +3105,7 @@
#include "code\modules\mob\living\carbon\human\appearance.dm"
#include "code\modules\mob\living\carbon\human\blood.dm"
#include "code\modules\mob\living\carbon\human\death.dm"
+#include "code\modules\mob\living\carbon\human\defense.dm"
#include "code\modules\mob\living\carbon\human\emote.dm"
#include "code\modules\mob\living\carbon\human\examine.dm"
#include "code\modules\mob\living\carbon\human\gradient.dm"
@@ -4003,15 +4049,20 @@
#include "code\modules\rigsuits\modules\utility.dm"
#include "code\modules\rigsuits\modules\utility_vr.dm"
#include "code\modules\rigsuits\modules\vision.dm"
-#include "code\modules\rigsuits\suits\alien.dm"
#include "code\modules\rigsuits\suits\combat.dm"
#include "code\modules\rigsuits\suits\ert.dm"
-#include "code\modules\rigsuits\suits\ert_vr.dm"
#include "code\modules\rigsuits\suits\light.dm"
#include "code\modules\rigsuits\suits\merc.dm"
#include "code\modules\rigsuits\suits\pmc.dm"
-#include "code\modules\rigsuits\suits\station.dm"
-#include "code\modules\rigsuits\suits\station_vr.dm"
+#include "code\modules\rigsuits\suits\species\protean.dm"
+#include "code\modules\rigsuits\suits\species\unathi.dm"
+#include "code\modules\rigsuits\suits\species\vox.dm"
+#include "code\modules\rigsuits\suits\station\cargo.dm"
+#include "code\modules\rigsuits\suits\station\engineering.dm"
+#include "code\modules\rigsuits\suits\station\medical.dm"
+#include "code\modules\rigsuits\suits\station\misc.dm"
+#include "code\modules\rigsuits\suits\station\science.dm"
+#include "code\modules\rigsuits\suits\station\security.dm"
#include "code\modules\rogueminer_vr\asteroid.dm"
#include "code\modules\rogueminer_vr\controller.dm"
#include "code\modules\rogueminer_vr\debug.dm"
diff --git a/code/__DEFINES/_flags/item_flags.dm b/code/__DEFINES/_flags/item_flags.dm
index 571d8ae9e72..dfebc51bc87 100644
--- a/code/__DEFINES/_flags/item_flags.dm
+++ b/code/__DEFINES/_flags/item_flags.dm
@@ -141,7 +141,10 @@ DEFINE_BITFIELD(inv_hide_flags, list(
#define HANDS (HAND_LEFT | HAND_RIGHT)
#define FULL_BODY (ALL)
-DEFINE_BITFIELD(body_cover_flags, list(
+DEFINE_SHARED_BITFIELD(body_cover_flags, list(
+ "body_cover_flags",
+ "body_part_flags",
+), list(
BITFIELD(HEAD),
BITFIELD(FACE),
BITFIELD(EYES),
diff --git a/code/__DEFINES/armor.dm b/code/__DEFINES/armor.dm
deleted file mode 100644
index 4297a09ee38..00000000000
--- a/code/__DEFINES/armor.dm
+++ /dev/null
@@ -1,4 +0,0 @@
-//! armor defines
-// todo: the rest during atom damage
-
-#define ARMOR_RAD "rad"
diff --git a/code/__DEFINES/combat/armor.dm b/code/__DEFINES/combat/armor.dm
new file mode 100644
index 00000000000..458f275968d
--- /dev/null
+++ b/code/__DEFINES/combat/armor.dm
@@ -0,0 +1,74 @@
+//? --- armor defines ---
+//* Want to add more?
+//* Update [code/__HELPERS/datastructs/armor.dm]
+//* Add an armor var, define it here,
+//* and update the procs accordingly.
+//* The system will handle the rest.
+//* Make sure the var names match the names in here!
+
+//? Tiered - used to model attacks - stacked with tier system when layered.
+
+#define ARMOR_MELEE "melee"
+#define ARMOR_MELEE_TIER "melee_t"
+#define ARMOR_MELEE_SOAK "melee_s"
+#define ARMOR_BULLET "bullet"
+#define ARMOR_BULLET_TIER "bullet_t"
+#define ARMOR_BULLET_SOAK "bullet_s"
+#define ARMOR_LASER "laser"
+#define ARMOR_LASER_TIER "laser_t"
+#define ARMOR_LASER_SOAK "laser_s"
+
+//? Flat - stacked multiplicatively when layered
+//? Standalone:
+//? If > 0, decreases damage linearly with 1 being 0x damage.
+//? If < 0, increases damage linearly with -1 being 2x damage, -2 being 3x damage.
+
+#define ARMOR_ENERGY "energy"
+#define ARMOR_BOMB "bomb"
+#define ARMOR_BIO "bio"
+#define ARMOR_RAD "rad"
+
+GLOBAL_REAL_LIST_MANAGED(armor_enums) = list(
+ ARMOR_MELEE,
+ ARMOR_MELEE_TIER,
+ ARMOR_MELEE_SOAK,
+ ARMOR_BULLET,
+ ARMOR_BULLET_TIER,
+ ARMOR_BULLET_SOAK,
+ ARMOR_LASER,
+ ARMOR_LASER_TIER,
+ ARMOR_LASER_SOAK,
+ ARMOR_ENERGY,
+ ARMOR_BOMB,
+ ARMOR_BIO,
+ ARMOR_RAD,
+)
+
+//? --- armor tiers ---
+
+#define ARMOR_TIER_LAUGHABLE -3
+#define ARMOR_TIER_LOW -2
+#define ARMOR_TIER_BELOW -1
+#define ARMOR_TIER_DEFAULT 0
+#define ARMOR_TIER_ABOVE 1
+#define ARMOR_TIER_HIGH 2
+#define ARMOR_TIER_OVERWHELMING 3
+
+//? melee
+
+#define MELEE_TIER_UNARMED_FISTS -1
+#define MELEE_TIER_UNARMED_CLAW 0
+#define MELEE_TIER_DEFAULT ARMOR_TIER_DEFAULT
+
+//? bullet
+
+#define BULLET_TIER_DEFAULT ARMOR_TIER_DEFAULT
+
+//? laser
+
+#define LASER_TIER_DEFAULT ARMOR_TIER_DEFAULT
+
+//? --- armor calculations ---
+
+/// tierdiff is tier difference of armor against attack; positive = armor is higher tier.
+#define ARMOR_TIER_CALC(_armor, _tierdiff) ((_tierdiff) > 0? ((_armor) ** (1 / (1 + (_tierdiff)))) : ((_armor) * (1 / (1 - (_tierdiff)))))
diff --git a/code/__DEFINES/combat/attack_types.dm b/code/__DEFINES/combat/attack_types.dm
new file mode 100644
index 00000000000..44645219134
--- /dev/null
+++ b/code/__DEFINES/combat/attack_types.dm
@@ -0,0 +1,6 @@
+//? attack_type bitfield
+
+#define ATTACK_TYPE_MELEE (1<<0)
+#define ATTACK_TYPE_PROJECTILE (1<<1)
+#define ATTACK_TYPE_THROWN (1<<2)
+#define ATTACK_TYPE_UNARMED (1<<3)
diff --git a/code/__DEFINES/combat/damage.dm b/code/__DEFINES/combat/damage.dm
new file mode 100644
index 00000000000..fcdfc643e9c
--- /dev/null
+++ b/code/__DEFINES/combat/damage.dm
@@ -0,0 +1,7 @@
+//? damage types
+
+// todo: refactor damage types
+
+//? damage_mode bitfield
+
+// none yet
diff --git a/code/__DEFINES/damage_organs.dm b/code/__DEFINES/damage_organs.dm
index f2998b1a26e..2cc7e6f2e2a 100644
--- a/code/__DEFINES/damage_organs.dm
+++ b/code/__DEFINES/damage_organs.dm
@@ -10,6 +10,8 @@
#define BIOACID "bioacid"
#define SEARING "searing"
+// todo: these things should be damage modes / flags
+
#define CUT "cut"
#define BRUISE "bruise"
#define PIERCE "pierce"
diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_defense.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_defense.dm
new file mode 100644
index 00000000000..d9e09336065
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_defense.dm
@@ -0,0 +1,38 @@
+//? shieldcall signals - these gather what to call on.
+
+/// runs shield checks - from base of /atom/proc/atom_shieldcall: (list/considering)
+#define COMSIG_ATOM_SHIELDCALL "atom_shieldcall"
+
+//? shieldcall "struct" - this *must* match up with /atom/proc/run/check_shieldcall!
+
+/// damage amount
+#define SHIELDCALL_ARG_DAMAGE 1
+/// damage tier
+#define SHIELDCALL_ARG_TIER 2
+/// armor flag
+#define SHIELDCALL_ARG_FLAG 3
+/// damage mode
+#define SHIELDCALL_ARG_MODE 4
+/// attack type
+#define SHIELDCALL_ARG_TYPE 5
+/// attacking weapon datum - same as used in armor
+#define SHIELDCALL_ARG_WEAPON 6
+/// list for additional data
+#define SHIELDCALL_ARG_ADDITIONAL 7
+/// flags returned
+#define SHIELDCALL_ARG_RETVAL 8
+
+//? shieldcall additional data keys
+
+// none yet
+
+//? shieldcall return flags
+
+/// abort further shieldcalls - hit is totally blocked or mitigated
+#define SHIELDCALL_FULLY_MITIGATED (1<<0)
+/// hit was partially blocked or mitigated
+#define SHIELDCALL_PARTIALLY_MITIGATED (1<<1)
+/// attack was forcefully missed e.g. by reactive teleport armor
+#define SHIELDCALL_FORCED_MISS (1<<2)
+/// fake; this is a check
+#define SHIELDCALL_JUST_CHECKING (1<<3)
diff --git a/code/__DEFINES/radiation/ignore.dm b/code/__DEFINES/radiation/ignore.dm
index cd88c95143d..64dd85fd6f7 100644
--- a/code/__DEFINES/radiation/ignore.dm
+++ b/code/__DEFINES/radiation/ignore.dm
@@ -7,7 +7,7 @@ GLOBAL_REAL_MANAGED(radiation_full_ignore, /list) = __radiation_full_ignore()
/mob/new_player,
/mob/observer,
/atom/movable/lighting_overlay,
- /obj/item/projectile,
+ /obj/projectile,
/obj/effect,
/obj/mob_spawner,
))
diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm
index 6dfff8ae853..c911c5e2b3e 100644
--- a/code/__DEFINES/vv.dm
+++ b/code/__DEFINES/vv.dm
@@ -94,6 +94,7 @@
#define VV_HK_TRIGGER_EXPLOSION "explode"
#define VV_HK_EDIT_FILTERS "edit_filters"
#define VV_HK_EDIT_COLOR_MATRIX "edit_color_matrix"
+#define VV_HK_EDIT_ARMOR "edit_armor"
/*
// /obj
diff --git a/code/__HELPERS/datastructs/armor.dm b/code/__HELPERS/datastructs/armor.dm
index 84050d0ed20..8252ccfad02 100644
--- a/code/__HELPERS/datastructs/armor.dm
+++ b/code/__HELPERS/datastructs/armor.dm
@@ -1,3 +1,240 @@
-// tbd
+/**
+ * armor datums for holding values
+ * globally cached.
+ */
+/datum/armor
+ /// just for vv
+ var/name
+
+ var/melee = 0
+ var/melee_tier = ARMOR_TIER_DEFAULT
+ var/melee_soak = 0
+ var/bullet = 0
+ var/bullet_tier = ARMOR_TIER_DEFAULT
+ var/bullet_soak = 0
+ var/laser = 0
+ var/laser_tier = ARMOR_TIER_DEFAULT
+ var/laser_soak = 0
+ var/energy = 0
+ var/bomb = 0
+ var/bio = 0
+ var/rad = 0
-// /proc/fetch_armor_struct
+/datum/armor/New(list/from_values)
+ if(from_values)
+ from_list(from_values)
+ name = to_name()
+
+/datum/armor/vv_edit_var(var_name, var_value, mass_edit, raw_edit)
+ if(var_name in global.armor_enums)
+ return FALSE // no.
+ return ..()
+
+/datum/armor/proc/from_list(list/values)
+ #define UNPACK_OR(var, key, default) ##var = isnull(values[key])? default : values[key]
+ UNPACK_OR(melee, ARMOR_MELEE, 0)
+ UNPACK_OR(melee_tier, ARMOR_MELEE_TIER, ARMOR_TIER_DEFAULT)
+ UNPACK_OR(melee_soak, ARMOR_MELEE_SOAK, 0)
+ UNPACK_OR(bullet, ARMOR_BULLET, 0)
+ UNPACK_OR(bullet_tier, ARMOR_BULLET_TIER, ARMOR_TIER_DEFAULT)
+ UNPACK_OR(bullet_soak, ARMOR_BULLET_SOAK, 0)
+ UNPACK_OR(laser, ARMOR_LASER, 0)
+ UNPACK_OR(laser_tier, ARMOR_LASER_TIER, ARMOR_TIER_DEFAULT)
+ UNPACK_OR(laser_soak, ARMOR_LASER_SOAK, 0)
+ UNPACK_OR(energy, ARMOR_ENERGY, 0)
+ UNPACK_OR(bomb, ARMOR_BOMB, 0)
+ UNPACK_OR(bio, ARMOR_BIO, 0)
+ UNPACK_OR(rad, ARMOR_RAD, 0)
+ #undef UNPACK_OR
+
+/datum/armor/proc/to_list()
+ return list(
+ ARMOR_MELEE = melee,
+ ARMOR_MELEE_TIER = melee_tier,
+ ARMOR_MELEE_SOAK = melee_soak,
+ ARMOR_BULLET = bullet,
+ ARMOR_BULLET_TIER = bullet_tier,
+ ARMOR_BULLET_SOAK = bullet_soak,
+ ARMOR_LASER = laser,
+ ARMOR_LASER_TIER = laser_tier,
+ ARMOR_LASER_SOAK = laser_soak,
+ ARMOR_ENERGY = energy,
+ ARMOR_BOMB = bomb,
+ ARMOR_BIO = bio,
+ ARMOR_RAD = rad,
+ )
+
+/datum/armor/proc/to_name()
+ return jointext(list(
+ "[round(melee * 100, 0.1)]@[melee_tier]-[melee_soak]",
+ "[round(bullet * 100, 0.1)]@[bullet_tier]-[bullet_soak]",
+ "[round(laser * 100, 0.1)]@[laser_tier]-[laser_soak]",
+ "[round(energy * 100, 0.1)]",
+ "[round(bomb * 100, 0.1)]",
+ "[round(bio * 100, 0.1)]",
+ "[round(rad * 100, 0.1)]",
+ ), " | ")
+
+/datum/armor/proc/raw(flag)
+ switch(flag)
+ if(ARMOR_MELEE)
+ return melee
+ if(ARMOR_MELEE_SOAK)
+ return melee_soak
+ if(ARMOR_MELEE_TIER)
+ return melee_tier
+ if(ARMOR_BULLET)
+ return bullet
+ if(ARMOR_BULLET_SOAK)
+ return bullet_soak
+ if(ARMOR_BULLET_TIER)
+ return bullet_tier
+ if(ARMOR_LASER)
+ return laser
+ if(ARMOR_LASER_SOAK)
+ return laser_soak
+ if(ARMOR_ENERGY)
+ return energy
+ if(ARMOR_BOMB)
+ return bomb
+ if(ARMOR_BIO)
+ return bio
+ if(ARMOR_RAD)
+ return rad
+ else
+ CRASH("Invalid flag: [flag]")
+
+/datum/armor/proc/mitigation(flag, tier = ARMOR_TIER_DEFAULT)
+ switch(flag)
+ if(ARMOR_MELEE)
+ var/tdiff = melee_tier - tier
+ return 1 - ARMOR_TIER_CALC(melee, tdiff)
+ if(ARMOR_BULLET)
+ var/tdiff = bullet_tier - tier
+ return 1 - ARMOR_TIER_CALC(bullet, tdiff)
+ if(ARMOR_LASER)
+ var/tdiff = laser_tier - tier
+ return 1 - ARMOR_TIER_CALC(laser, tdiff)
+ if(ARMOR_ENERGY)
+ return energy
+ if(ARMOR_BOMB)
+ return bomb
+ if(ARMOR_BIO)
+ return bio
+ if(ARMOR_RAD)
+ return rad
+ else
+ CRASH("Invalid flag: [flag]")
+
+/datum/armor/proc/soak(flag)
+ switch(flag)
+ if(ARMOR_MELEE)
+ return melee_soak
+ if(ARMOR_BULLET)
+ return bullet_soak
+ if(ARMOR_LASER)
+ return laser_soak
+ else
+ return 0
+
+/datum/armor/proc/resultant_damage(damage, tier, flag)
+ switch(flag)
+ if(ARMOR_MELEE)
+ var/tdiff = melee_tier - tier
+ return max(0, (tdiff? (damage * (1 - ARMOR_TIER_CALC(melee, tdiff))) : (damage * (1 - melee))) - melee_soak)
+ if(ARMOR_BULLET)
+ var/tdiff = bullet_tier - tier
+ return max(0, (tdiff? (damage * (1 - ARMOR_TIER_CALC(bullet, tdiff))) : (damage * (1 - bullet))) - bullet_soak)
+ if(ARMOR_LASER)
+ var/tdiff = laser_tier - tier
+ return max(0, (tdiff? (damage * (1 - ARMOR_TIER_CALC(laser, tdiff))) : (damage * (1 - laser))) - laser_soak)
+ if(ARMOR_ENERGY)
+ return damage * (1 - energy)
+ if(ARMOR_BOMB)
+ return damage * (1 - bomb)
+ if(ARMOR_BIO)
+ return damage * (1 - bio)
+ if(ARMOR_RAD)
+ return damage * (1 - rad)
+ else
+ CRASH("Invalid flag: [flag]")
+
+/datum/armor/proc/describe_list()
+ RETURN_TYPE(/list)
+ . = list()
+ . += "Melee: [round(melee * 100, 0.1)]% [melee_soak] flat @ [melee_tier] hardness"
+ . += "Bullet: [round(bullet * 100, 0.1)]% [bullet_soak] flat @ [bullet_tier] hardness"
+ . += "Laser: [round(laser * 100, 0.1)]% [laser_soak] flat @ [laser_tier] hardness"
+ . += "Energy: [round(energy * 100, 0.1)]%"
+ . += "Bomb: [round(bomb * 100, 0.1)]%"
+ . += "Bio: [round(bio * 100, 0.1)]%"
+ . += "Radiation: [round(rad * 100, 0.1)]%"
+
+/datum/armor/proc/log_string()
+ var/list/built = list()
+ var/list/ours = to_list()
+ for(var/key in ours)
+ built += "[key]: [ours[key]]"
+ return jointext(built, ", ")
+
+/**
+ * returns a /datum/armor with the given values overwritten
+ */
+/datum/armor/proc/overwritten(list/values)
+ return fetch_armor_struct(values | to_list())
+
+/**
+ * returns a /datum/armor with the given values adjusted
+ */
+/datum/armor/proc/adjusted(list/values)
+ var/list/adjusting = to_list()
+ for(var/key in adjusting)
+ adjusting[key] = clamp(adjusting[key] + values[key], 0, 1)
+ return fetch_armor_struct(adjusting)
+
+/**
+ * returns a /datum/armor with the given values overwritten but only if they were below
+ */
+/datum/armor/proc/boosted(list/values)
+ var/list/boosting = to_list()
+ for(var/key in boosting)
+ if(values[key] > boosting[key])
+ boosting[key] = clamp(values[key], 0, 1)
+ return fetch_armor_struct(boosting)
+
+/**
+ * returns if we're atleast the values given, for the values given
+ */
+/datum/armor/proc/is_atleast(list/values)
+ var/list/us = to_list()
+ for(var/key in values)
+ if(us[key] < values[key])
+ return FALSE
+ return TRUE
+
+GLOBAL_LIST_EMPTY(struct_armor_hardcoded)
+GLOBAL_LIST_EMPTY(struct_armor_dynamic)
+
+/**
+ * fetches armor datum
+ *
+ * @params
+ * * armor_or_path - either a path to an armor datum, an armor datum instance, or a list of armor values
+ *
+ * @return an armor datum; if a datum was passed in, it is passed back without replacement.
+ */
+/proc/fetch_armor_struct(list/armor_or_path)
+ if(ispath(armor_or_path))
+ ASSERT(ispath(armor_or_path, /datum/armor))
+ if(isnull(GLOB.struct_armor_hardcoded[armor_or_path]))
+ GLOB.struct_armor_hardcoded[armor_or_path] = new armor_or_path
+ return GLOB.struct_armor_hardcoded[armor_or_path]
+ if(istype(armor_or_path, /datum/armor))
+ return armor_or_path
+ // the lack of sorting is intentional
+ // most of these calls are from /datum/armor's overwritten / adjusted calls
+ // so it's generally already pre-sorted.
+ var/key = list2params(armor_or_path)
+ if(isnull(GLOB.struct_armor_dynamic[key]))
+ GLOB.struct_armor_dynamic[key] = new /datum/armor(armor_or_path)
+ return GLOB.struct_armor_dynamic[key]
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 9aad9249374..2c2021dd3ea 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -315,7 +315,7 @@
setClickCooldown(4)
var/turf/T = get_turf(src)
- var/obj/item/projectile/beam/LE = new (T)
+ var/obj/projectile/beam/LE = new (T)
LE.icon = 'icons/effects/genetics.dmi'
LE.icon_state = "eyelasers"
playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1)
diff --git a/code/_onclick/items.dm b/code/_onclick/items.dm
index f9755815fbb..ebd3083ba2a 100644
--- a/code/_onclick/items.dm
+++ b/code/_onclick/items.dm
@@ -178,10 +178,10 @@
if(!hit_zone)
// missed
// log
- add_attack_logs(user, L, "missed with [src] DT [damtype] F [force] I [user.a_intent]")
+ add_attack_logs(user, L, "missed with [src] DT [damtype] F [damage_force] I [user.a_intent]")
return melee_mob_miss(L, user, clickchain_flags, params, mult, target_zone, intent)
// log
- add_attack_logs(user, L, "attacked with [src] DT [damtype] F [force] I [user.a_intent]")
+ add_attack_logs(user, L, "attacked with [src] DT [damtype] F [damage_force] I [user.a_intent]")
// hit
return melee_mob_hit(L, user, clickchain_flags, params, mult, target_zone, intent)
@@ -246,7 +246,7 @@
if(!isliving(target))
return
// harmless, just tap them and leave
- if(!force)
+ if(!damage_force)
// todo: proper weapon sound ranges/rework
playsound(src, 'sound/weapons/tap.ogg', 50, 1, -1)
// feedback
@@ -260,7 +260,7 @@
visible_message(SPAN_DANGER("[L] has been [length(attack_verb)? pick(attack_verb) : attack_verb] with [src] by [user]!"))
//? legacy code start
- var/power = force
+ var/power = damage_force
if(isliving(user))
var/mob/living/attacker = user
for(var/datum/modifier/mod in attacker.modifiers)
diff --git a/code/controllers/subsystem/processing/projectiles.dm b/code/controllers/subsystem/processing/projectiles.dm
index 461d9221fa9..6ce4b967320 100644
--- a/code/controllers/subsystem/processing/projectiles.dm
+++ b/code/controllers/subsystem/processing/projectiles.dm
@@ -11,6 +11,6 @@ PROCESSING_SUBSYSTEM_DEF(projectiles)
/datum/controller/subsystem/processing/projectiles/proc/set_pixel_speed(new_speed)
global_pixel_speed = new_speed
for(var/i in processing)
- var/obj/item/projectile/P = i
+ var/obj/projectile/P = i
if(istype(P)) //there's non projectiles on this too.
P.set_pixel_speed(new_speed)
diff --git a/code/datums/armor/antagonist/agent.dm b/code/datums/armor/antagonist/agent.dm
new file mode 100644
index 00000000000..0d283e1a62c
--- /dev/null
+++ b/code/datums/armor/antagonist/agent.dm
@@ -0,0 +1,13 @@
+/datum/armor/agent/jumpsuit
+ melee = 0.1
+ bio = 0.1
+ rad = 0.1
+
+/datum/armor/agent/space
+ melee = 0.6
+ bullet = 0.5
+ laser = 0.45
+ energy = 0.2
+ bomb = 0.3
+ bio = 0.3
+ rad = 0.3
diff --git a/code/datums/armor/antagonist/alien.dm b/code/datums/armor/antagonist/alien.dm
new file mode 100644
index 00000000000..933ccbdf7d5
--- /dev/null
+++ b/code/datums/armor/antagonist/alien.dm
@@ -0,0 +1,19 @@
+/datum/armor/alien
+
+/datum/armor/alien/light
+
+/datum/armor/alien/medium
+ melee = 0.5
+ bullet = 0.5
+ laser = 0.5
+ energy = 0.5
+ bomb = 0.5
+ rad = 0.4
+
+/datum/armor/alien/heavy
+ melee = 0.7
+ bullet = 0.7
+ laser = 0.7
+ energy = 0.7
+ bomb = 0.7
+ rad = 0.5
diff --git a/code/datums/armor/antagonist/changeling.dm b/code/datums/armor/antagonist/changeling.dm
new file mode 100644
index 00000000000..e1f44ebed22
--- /dev/null
+++ b/code/datums/armor/antagonist/changeling.dm
@@ -0,0 +1,8 @@
+/datum/armor/changeling/chitin
+ melee = 0.75
+ bullet = 0.6
+ laser = 0.6
+ energy = 0.4
+ bomb = 0.65
+ bio = 0.8
+ rad = 0.9
diff --git a/code/datums/armor/antagonist/cult.dm b/code/datums/armor/antagonist/cult.dm
new file mode 100644
index 00000000000..59ee59d6a80
--- /dev/null
+++ b/code/datums/armor/antagonist/cult.dm
@@ -0,0 +1,27 @@
+/datum/armor/cult/robes
+ melee = 0.5
+ bullet = 0.3
+ laser = 0.5
+ energy = 0.6
+ bomb = 0.5
+ bio = 0.2
+ rad = 0.3
+
+/datum/armor/cult/space
+ melee = 0.65
+ bullet = 0.5
+ laser = 0.4
+ energy = 0.6
+ bomb = 0.5
+ bio = 0.2
+ rad = 0.3
+
+// he's got that drip
+/datum/armor/cult/coat
+ melee = 0.4
+ bullet = 0.45
+ laser = 0.4
+ energy = 0.3
+ bomb = 0.3
+ bio = 0.7
+ rad = 0.4
diff --git a/code/datums/armor/antagonist/technomancer.dm b/code/datums/armor/antagonist/technomancer.dm
new file mode 100644
index 00000000000..55de3709996
--- /dev/null
+++ b/code/datums/armor/antagonist/technomancer.dm
@@ -0,0 +1,14 @@
+/datum/armor/technomancer/jumpsuit
+ melee = 0.2
+ bullet = 0.1
+ laser = 0.1
+ rad = 0.3
+
+/datum/armor/technomancer/standard
+ melee = 0.5
+ bullet = 0.2
+ laser = 0.3
+ energy = 0.3
+ bomb = 0.2
+ bio = 0.3
+ rad = 0.4
diff --git a/code/datums/armor/antagonist/wizard.dm b/code/datums/armor/antagonist/wizard.dm
new file mode 100644
index 00000000000..e29a48874f3
--- /dev/null
+++ b/code/datums/armor/antagonist/wizard.dm
@@ -0,0 +1,11 @@
+/datum/armor/wizard
+ melee = 0.4
+ bullet = 0.2
+ laser = 0.2
+ energy = 0.2
+ bomb = 0.35
+ bio = 1.0
+ rad = 0.6
+
+/datum/armor/wizard/beserk
+ melee = 0.7
diff --git a/code/datums/armor/clothing/armor.dm b/code/datums/armor/clothing/armor.dm
new file mode 100644
index 00000000000..dbe54dd566a
--- /dev/null
+++ b/code/datums/armor/clothing/armor.dm
@@ -0,0 +1,72 @@
+/datum/armor/general
+
+/datum/armor/general/medieval
+ melee = 0.75
+ bullet = 0.25
+ laser = 0.1
+ energy = 0.05
+ bomb = 0.2
+ bio = 0.2
+ rad = 0.2
+
+/datum/armor/general/medieval/light
+ melee = 0.4
+
+/datum/armor/general/medieval/mesh
+ melee = 0.55
+
+/datum/armor/general/radsuit
+ melee = 0.1
+ bullet = 0.05
+ laser = 0.05
+ energy = 0.1
+ bio = 0.6
+ rad = 1.0
+
+/datum/armor/general/biosuit
+ melee = 0.1
+ bullet = 0.05
+ laser = 0.05
+ energy = 0.05
+ bio = 1.0
+ rad = 0.3
+
+/datum/armor/general/biosuit/anomaly
+ rad = 1.0
+
+/datum/armor/general/beekeeper
+ bio = 1.0
+
+/datum/armor/general/space
+ melee = 0.2
+ bullet = 0.05
+ laser = 0.1
+ energy = 0.1
+ bomb = 0.15
+ bio = 1.0
+ rad = 0.2
+
+/datum/armor/general/space/armored
+ melee = 0.4
+ bullet = 0.15
+ laser = 0.25
+ energy = 0.15
+ bomb = 0.35
+
+/datum/armor/general/bone
+ melee = 0.25
+ bullet = 0.05
+ laser = 0.05
+ energy = 0
+
+/datum/armor/general/samurai
+ melee = 1.0
+ bullet = 0.5
+ laser = 0.05
+
+/datum/armor/general/utilitarian_military
+ melee = 0.15
+ bullet = 0.4
+ laser = 0.6
+ energy = 0.3
+ bomb = 0.2
diff --git a/code/datums/armor/clothing/gloves.dm b/code/datums/armor/clothing/gloves.dm
new file mode 100644
index 00000000000..f8378191b63
--- /dev/null
+++ b/code/datums/armor/clothing/gloves.dm
@@ -0,0 +1,14 @@
+/datum/armor/gloves
+
+/datum/armor/gloves/combat
+ melee = 0.3
+ bullet = 0.1
+ laser = 0.1
+ energy = 0.15
+ bomb = 0.2
+
+/datum/armor/gloves/padded
+ melee = 0.1
+ bullet = 0.1
+ laser = 0.1
+ energy = 0.05
diff --git a/code/datums/armor/clothing/head.dm b/code/datums/armor/clothing/head.dm
new file mode 100644
index 00000000000..425fb42ec5d
--- /dev/null
+++ b/code/datums/armor/clothing/head.dm
@@ -0,0 +1,35 @@
+/datum/armor/head
+
+/datum/armor/head/hardhat
+ melee = 0.35
+ bullet = 0.1
+ laser = 0.2
+ energy = 0.1
+ bomb = 0.2
+ bio = 0.1
+ rad = 0.2
+
+/datum/armor/head/augment_helmet
+ melee = 0.8
+ bullet = 0.6
+ laser = 0.5
+ energy = 0.25
+ bomb = 0.5
+ bio = 1.0
+ rad = 0
+
+/datum/armor/head/eraticator_helmet
+ melee = 0.1
+ bullet = 0.8
+ laser = 0.1
+ energy = 0.1
+ bomb = 0
+ bio = 0
+ rad = 0
+
+/datum/armor/head/duraskull_mask
+ melee = 0.4
+ bullet = 0.4
+ laser = 0.5
+ energy = 0.1
+ bomb = 0.25
diff --git a/code/datums/armor/clothing/mask.dm b/code/datums/armor/clothing/mask.dm
new file mode 100644
index 00000000000..a4f86fec9dd
--- /dev/null
+++ b/code/datums/armor/clothing/mask.dm
@@ -0,0 +1,10 @@
+/datum/armor/mask
+
+/datum/armor/mask/gas
+ melee = 0.1
+ bullet = 0.1
+ laser = 0.1
+ bio = 0.75
+
+/datum/armor/mask/surgical
+ bio = 0.6
diff --git a/code/datums/armor/clothing/shoes.dm b/code/datums/armor/clothing/shoes.dm
new file mode 100644
index 00000000000..3bd30f5c0ef
--- /dev/null
+++ b/code/datums/armor/clothing/shoes.dm
@@ -0,0 +1,17 @@
+/datum/armor/shoes/boots
+ melee = 0.3
+ bullet = 0.1
+ laser = 0.1
+ energy = 0.15
+ bomb = 0.2
+ bio = 0.75
+ rad = 0.2
+
+/datum/armor/shoes/boots/swat
+ melee = 0.8
+ bullet = 0.6
+ laser = 0.5
+ energy = 0.25
+ bomb = 0.5
+ bio = 0.5
+ rad = 0.4
diff --git a/code/datums/armor/clothing/suit.dm b/code/datums/armor/clothing/suit.dm
new file mode 100644
index 00000000000..e215cd3847f
--- /dev/null
+++ b/code/datums/armor/clothing/suit.dm
@@ -0,0 +1,7 @@
+/datum/armor/suit
+
+/datum/armor/suit/labcoat
+ bio = 0.5
+
+/datum/armor/suit/labcoat/viro
+ bio = 0.8
diff --git a/code/datums/armor/clothing/uniform.dm b/code/datums/armor/clothing/uniform.dm
new file mode 100644
index 00000000000..cad81978e6d
--- /dev/null
+++ b/code/datums/armor/clothing/uniform.dm
@@ -0,0 +1,13 @@
+/datum/armor/uniform/utility
+ melee = 0
+ bullet = 0
+ laser = 0
+ energy = 0
+ bomb = 0.1
+ bio = 0.1
+ rad = 0.1
+
+/datum/armor/uniform/utility/padded
+ melee = 0.1
+ bullet = 0.05
+ laser = 0.05
diff --git a/code/datums/armor/core.dm b/code/datums/armor/core.dm
new file mode 100644
index 00000000000..dda85791d8e
--- /dev/null
+++ b/code/datums/armor/core.dm
@@ -0,0 +1,10 @@
+/datum/armor/none
+
+/datum/armor/invulnerable
+ melee = 1.0
+ bullet = 1.0
+ laser = 1.0
+ energy = 1.0
+ bomb = 1.0
+ bio = 1.0
+ rad = 1.0
diff --git a/code/datums/armor/mecha.dm b/code/datums/armor/mecha.dm
new file mode 100644
index 00000000000..f4aad20ec86
--- /dev/null
+++ b/code/datums/armor/mecha.dm
@@ -0,0 +1,2 @@
+/datum/armor/mecha
+
diff --git a/code/datums/armor/military.dm b/code/datums/armor/military.dm
new file mode 100644
index 00000000000..481a4bcbf97
--- /dev/null
+++ b/code/datums/armor/military.dm
@@ -0,0 +1,10 @@
+/datum/armor/military/jumpsuit
+ melee = 0.2
+ melee_tier = MELEE_TIER_DEFAULT
+ bullet = 0.1
+ bullet_tier = BULLET_TIER_DEFAULT
+ laser = 0.1
+ laser_tier = LASER_TIER_DEFAULT
+ energy = 0.2
+ bomb = 0.2
+ bio = 0.2
diff --git a/code/datums/armor/misc.dm b/code/datums/armor/misc.dm
new file mode 100644
index 00000000000..0fe6de3cf2c
--- /dev/null
+++ b/code/datums/armor/misc.dm
@@ -0,0 +1,4 @@
+/datum/armor/misc
+
+/datum/armor/misc/bucket
+ melee = 0.1
diff --git a/code/datums/armor/outsider/autolok.dm b/code/datums/armor/outsider/autolok.dm
new file mode 100644
index 00000000000..8d2e5d29ec6
--- /dev/null
+++ b/code/datums/armor/outsider/autolok.dm
@@ -0,0 +1,10 @@
+/datum/armor/autolok
+
+/datum/armor/autolok/space
+ melee = 0.15
+ bullet = 0.05
+ laser = 0.05
+ energy = 0.05
+ bomb = 0.05
+ bio = 1.0
+ rad = 0.8
diff --git a/code/datums/armor/outsider/imperial.dm b/code/datums/armor/outsider/imperial.dm
new file mode 100644
index 00000000000..92509e91278
--- /dev/null
+++ b/code/datums/armor/outsider/imperial.dm
@@ -0,0 +1,19 @@
+/datum/armor/imperial
+
+/datum/armor/imperial/plate
+ melee = 0.6
+ bullet = 0.8
+ laser = 0.1
+ energy = 0.1
+ bomb = 0.5
+ bio = 0.6
+ rad = 0.4
+
+/datum/armor/imperial/adamant
+ melee = 0.5
+ bullet = 0.5
+ laser = 0.5
+ energy = 0.3
+ bomb = 0.35
+ bio = 0.5
+ rad = 0.4
diff --git a/code/datums/armor/outsider/lavaland.dm b/code/datums/armor/outsider/lavaland.dm
new file mode 100644
index 00000000000..6ae3980eaba
--- /dev/null
+++ b/code/datums/armor/outsider/lavaland.dm
@@ -0,0 +1,48 @@
+/datum/armor/lavaland
+
+/datum/armor/lavaland/trinket
+ melee = 0.05
+ bullet = 0.05
+ laser = 0.05
+ bomb = 0.1
+ bio = 0.2
+ rad = 0.05
+
+/datum/armor/lavaland/eldritch
+ melee = 0.2
+ laser = 0.4
+ energy = 0.4
+ bomb = 0.2
+ bio = 0.3
+ rad = 0.2
+
+/datum/armor/lavaland/goliath
+ melee = 0.45
+ bullet = 0.25
+ laser = 0.35
+ energy = 0.2
+ bomb = 0.25
+ rad = 0.2
+
+/datum/armor/lavaland/drake
+ melee = 0.7
+ bullet = 0.35
+ laser = 0.5
+ energy = 0.25
+ bomb = 0.5
+ rad = 0.4
+
+/datum/armor/lavaland/ashlander
+ melee = 0.2
+ laser = 0.4
+ energy = 0.4
+ bomb = 0.2
+ bio = 0.3
+ rad = 0.2
+
+/datum/armor/lavaland/bone
+ melee = 0.35
+ bullet = 0.25
+ laser = 0.25
+ energy = 0.1
+ bomb = 0.25
diff --git a/code/datums/armor/outsider/merc.dm b/code/datums/armor/outsider/merc.dm
new file mode 100644
index 00000000000..d7d5bef1cb5
--- /dev/null
+++ b/code/datums/armor/outsider/merc.dm
@@ -0,0 +1,40 @@
+/datum/armor/merc/heavy
+ melee = 0.6
+ bullet = 0.6
+ laser = 0.6
+ energy = 0.45
+ bomb = 0.4
+ bio = 0.2
+ rad = 0.3
+
+
+/datum/armor/merc/space
+ melee = 0.6
+ bullet = 0.5
+ laser = 0.3
+ energy = 0.15
+ bomb = 0.35
+ bio = 1.0
+ rad = 0.6
+
+/datum/armor/merc/space/ghostrider
+ melee = 0.4
+ bullet = 0.4
+ laser = 0.6
+ energy = 0.3
+ bomb = 0.5
+
+/datum/armor/merc/space/soviet
+ melee = 0.4
+ bullet = 0.6
+ laser = 0.2
+ bomb = 0.5
+ rad = 1.0
+
+/datum/armor/merc/space/wulf
+ melee = 0.4
+ bullet = 0.6
+ laser = 0.2
+ rad = 1.0
+
+/datum/armor/merc/space/clown
diff --git a/code/datums/armor/outsider/oricon.dm b/code/datums/armor/outsider/oricon.dm
new file mode 100644
index 00000000000..e2494095322
--- /dev/null
+++ b/code/datums/armor/outsider/oricon.dm
@@ -0,0 +1,10 @@
+/datum/armor/oricon
+
+/datum/armor/oricon/peacekeeper
+ melee = 0.5
+ bullet = 0.5
+ laser = 0.5
+ energy = 0.25
+ bomb = 0.3
+ bio = 0.1
+ rad = 0.1
diff --git a/code/datums/armor/outsider/pirate.dm b/code/datums/armor/outsider/pirate.dm
new file mode 100644
index 00000000000..59b2f602e3e
--- /dev/null
+++ b/code/datums/armor/outsider/pirate.dm
@@ -0,0 +1,25 @@
+/datum/armor/pirate
+
+/datum/armor/pirate/space
+ melee = 0.5
+ bullet = 0.2
+ laser = 0.3
+ energy = 0.05
+ bomb = 0.2
+ bio = 1.0
+ rad = 0.7
+
+/datum/armor/pirate/light
+ melee = 0.3
+ bullet = 0.3
+ laser = 0.4
+ energy = 0.1
+
+/datum/armor/pirate/medium
+ melee = 0.6
+ bullet = 0.5
+ laser = 0.3
+ energy = 0.15
+ bomb = 0.3
+ bio = 0.3
+ rad = 0.3
diff --git a/code/datums/armor/outsider/vintage.dm b/code/datums/armor/outsider/vintage.dm
new file mode 100644
index 00000000000..7ae6f7bd156
--- /dev/null
+++ b/code/datums/armor/outsider/vintage.dm
@@ -0,0 +1,45 @@
+/datum/armor/vintage
+
+/datum/armor/vintage/space
+ melee = 0.3
+ bullet = 0.15
+ laser = 0.15
+ energy = 0.1
+ bomb = 0.2
+ bio = 1.0
+ rad = 0.5
+
+/datum/armor/vintage/space/engi
+ melee = 0.4
+ bullet = 0.2
+ laser = 0.2
+ energy = 0.15
+ bomb = 0.4
+ rad = 1.0
+
+/datum/armor/vintage/space/med
+
+/datum/armor/vintage/space/marine
+ melee = 0.5
+ bullet = 0.35
+ laser = 0.35
+
+/datum/armor/vintage/space/officer
+ melee = 0.6
+ bullet = 0.45
+ laser = 0.45
+ energy = 0.25
+ bomb = 0.6
+ rad = 0.7
+
+/datum/armor/vintage/space/pilot
+
+/datum/armor/vintage/space/science
+ energy = 0.5
+ rad = 1.0
+
+/datum/armor/vintage/space/merc
+ melee = 0.55
+ bullet = 0.45
+ laser = 0.45
+ bomb = 0.5
diff --git a/code/datums/armor/readme.md b/code/datums/armor/readme.md
new file mode 100644
index 00000000000..881f82d5f1d
--- /dev/null
+++ b/code/datums/armor/readme.md
@@ -0,0 +1,5 @@
+# Armor Defines
+
+/datum/armor is in [code/__HEPLERS/datastructs/armor.dm]
+
+This folder is for standardized defines to avoid having to search later.
diff --git a/code/datums/armor/species/phoronoid.dm b/code/datums/armor/species/phoronoid.dm
new file mode 100644
index 00000000000..0658907206d
--- /dev/null
+++ b/code/datums/armor/species/phoronoid.dm
@@ -0,0 +1,44 @@
+/datum/armor/phoronoid
+ melee = 0.2
+ bullet = 0.05
+ laser = 0.1
+ energy = 0.1
+ bomb = 0.4
+ bio = 1.0
+ rad = 1.0
+
+/datum/armor/phoronoid/head
+ melee = 0.45
+ bullet = 0.35
+ laser = 0.45
+
+/datum/armor/phoronoid/science
+
+/datum/armor/phoronoid/engineering
+
+/datum/armor/phoronoid/medical
+
+/datum/armor/phoronoid/medical/paramedic
+ melee = 0.4
+ bullet = 0.2
+ laser = 0.3
+
+/datum/armor/phoronoid/exploration
+ melee = 0.45
+ bullet = 0.35
+ laser = 0.45
+
+/datum/armor/phoronoid/security
+ melee = 0.45
+ bullet = 0.35
+ laser = 0.45
+
+/datum/armor/phoronoid/security/head
+ melee = 0.7
+ bullet = 0.45
+ laser = 0.55
+
+/datum/armor/phoronoid/miner
+ melee = 0.5
+ bullet = 0.2
+ laser = 0.25
diff --git a/code/datums/armor/species/skrell.dm b/code/datums/armor/species/skrell.dm
new file mode 100644
index 00000000000..7356fb7f74a
--- /dev/null
+++ b/code/datums/armor/species/skrell.dm
@@ -0,0 +1,12 @@
+/datum/armor/skrell
+
+/datum/armor/skrell/space
+
+/datum/armor/skrell/space/light
+ melee = 0.2
+ bullet = 0.2
+ laser = 0.2
+ energy = 0.5
+ bomb = 0.5
+ bio = 1.0
+ rad = 0.5
diff --git a/code/datums/armor/species/teshari.dm b/code/datums/armor/species/teshari.dm
new file mode 100644
index 00000000000..b90819b1635
--- /dev/null
+++ b/code/datums/armor/species/teshari.dm
@@ -0,0 +1,4 @@
+/datum/armor/teshari
+
+/datum/armor/teshari/hood_cloak
+ bio = 0.2
diff --git a/code/datums/armor/species/vox.dm b/code/datums/armor/species/vox.dm
new file mode 100644
index 00000000000..efd8f85e4d4
--- /dev/null
+++ b/code/datums/armor/species/vox.dm
@@ -0,0 +1,19 @@
+/datum/armor/vox
+
+/datum/armor/vox/space
+
+/datum/armor/vox/space/armored
+ melee = 0.6
+ bullet = 0.5
+ laser = 0.4
+ energy = 0.2
+ bomb = 0.3
+ bio = 1.0
+ rad = 0.5
+
+/datum/armor/vox/scrap
+ melee = 0.6
+ bullet = 0.3
+ laser = 0.3
+ energy = 0.15
+ bomb = 0.4
diff --git a/code/datums/armor/species/zaddat.dm b/code/datums/armor/species/zaddat.dm
new file mode 100644
index 00000000000..e7e40fb57aa
--- /dev/null
+++ b/code/datums/armor/species/zaddat.dm
@@ -0,0 +1,3 @@
+/datum/armor/zaddat
+ bio = 1.0
+ rad = 1.0
diff --git a/code/datums/armor/station/armor.dm b/code/datums/armor/station/armor.dm
new file mode 100644
index 00000000000..b1b48776ca7
--- /dev/null
+++ b/code/datums/armor/station/armor.dm
@@ -0,0 +1,56 @@
+/datum/armor/station/ablative
+ melee = 0.2
+ bullet = 0.2
+ laser = 0.8
+ laser_soak = 5
+ energy = 0.5
+ bomb = 0.1
+ bio = 0.1
+ rad = 0.1
+
+/datum/armor/station/ballistic
+ melee = 0.2
+ bullet = 0.8
+ bullet_soak = 5
+ laser = 0.2
+ energy = 0.1
+ bomb = 0.1
+ bio = 0.1
+ rad = 0.1
+
+/datum/armor/station/riot
+ melee = 0.8
+ melee_soak = 5
+ bullet = 0.2
+ laser = 0.2
+ energy = 0.1
+ bomb = 0.1
+ bio = 0.1
+ rad = 0.1
+
+/datum/armor/station/combat
+ melee = 0.5
+ bullet = 0.5
+ laser = 0.5
+ energy = 0.3
+ bomb = 0.2
+ bio = 0.1
+ rad = 0.1
+
+/datum/armor/station/tactical
+ melee = 0.4
+ bullet = 0.4
+ laser = 0.6
+ energy = 0.35
+ bomb = 0.3
+ bio = 0.1
+ rad = 0.1
+
+/datum/armor/station/bomb
+ melee = 0.2
+ bullet = 0.1
+ laser = 0.1
+ energy = 0.05
+ bomb = 1.0
+ bio = 0.55
+ rad = 0.35
diff --git a/code/datums/armor/station/cargo.dm b/code/datums/armor/station/cargo.dm
new file mode 100644
index 00000000000..d49da2f68bd
--- /dev/null
+++ b/code/datums/armor/station/cargo.dm
@@ -0,0 +1,31 @@
+/datum/armor/cargo
+
+/datum/armor/cargo/mining
+
+/datum/armor/cargo/mining/coat
+ melee = 0.3
+ bomb = 0.2
+ bio = 0.1
+ rad = 0.3
+
+/datum/armor/cargo/mining/soft
+ melee = 0.5
+ bullet = 0.1
+ laser = 0.1
+ bomb = 0.55
+ bio = 0.5
+ rad = 0.65
+
+/datum/armor/cargo/mining/space
+ melee = 0.5
+ bullet = 0.1
+ laser = 0.2
+ energy = 0.1
+ bomb = 0.55
+ bio = 1.0
+ rad = 0.65
+
+/datum/armor/cargo/mining/space/armored
+ melee = 0.55
+ bullet = 0.25
+ laser = 0.35
diff --git a/code/datums/armor/station/centcom.dm b/code/datums/armor/station/centcom.dm
new file mode 100644
index 00000000000..510708d6f66
--- /dev/null
+++ b/code/datums/armor/station/centcom.dm
@@ -0,0 +1,40 @@
+/datum/armor/centcom
+
+/datum/armor/centcom/jumpsuit
+ melee = 0.1
+ bullet = 0.1
+ laser = 0.1
+ energy = 0.1
+ bomb = 0.1
+
+/datum/armor/centcom/jumpsuit/ert
+
+/datum/armor/centcom/coat
+ melee = 0.4
+ bullet = 0.45
+ laser = 0.45
+ energy = 0.35
+ bomb = 0.4
+ bio = 0.55
+ rad = 0.55
+
+/datum/armor/centcom/ert
+ melee = 0.65
+ bullet = 0.5
+ laser = 0.65
+ energy = 0.35
+ bomb = 0.4
+ bio = 0.2
+ rad = 0.2
+
+/datum/armor/centcom/ert/paracausal
+ energy = 0.6
+
+/datum/armor/centcom/deathsquad
+ melee = 0.8
+ bullet = 0.65
+ laser = 0.65
+ energy = 0.45
+ bomb = 0.5
+ bio = 1.0
+ rad = 1.0
diff --git a/code/datums/armor/station/civilian.dm b/code/datums/armor/station/civilian.dm
new file mode 100644
index 00000000000..5c2767828de
--- /dev/null
+++ b/code/datums/armor/station/civilian.dm
@@ -0,0 +1,13 @@
+/datum/armor/civilian/jumpsuit/janitor
+ bio = 0.3
+ rad = 0.1
+
+/datum/armor/civilian/coat
+ bio = 0.15
+
+/datum/armor/civilian/coat/durathread
+ melee = 0.2
+ bullet = 0.1
+ laser = 0.2
+ energy = 0.05
+ bomb = 0.1
diff --git a/code/datums/armor/station/engineering.dm b/code/datums/armor/station/engineering.dm
new file mode 100644
index 00000000000..6fa4947103d
--- /dev/null
+++ b/code/datums/armor/station/engineering.dm
@@ -0,0 +1,43 @@
+/datum/armor/engineering/jumpsuit
+ rad = 0.3
+
+/datum/armor/engineering/coat
+ bomb = 0.3
+ rad = 0.6
+
+/datum/armor/engineering/space
+ melee = 0.4
+ bullet = 0.1
+ laser = 0.2
+ energy = 0.1
+ bomb = 0.35
+ bio = 1.0
+ rad = 1.0
+
+/datum/armor/engineering/space/hazmat
+ bomb = 0.5
+ melee = 0.3
+ rad = 1.0
+
+/datum/armor/engineering/space/heavy
+ bomb = 0.7
+ rad = 1.0
+
+/datum/armor/engineering/space/salvage
+ melee = 0.5
+ bullet = 0.2
+ laser = 0.3
+ energy = 0.2
+ bomb = 0.4
+ bio = 1.0
+ rad = 1.0
+
+/datum/armor/engineering/space/atmos
+ melee = 0.3
+ rad = 0.5
+ laser = 0.15
+
+/datum/armor/engineering/space/atmos/heavy
+ melee = 0.4
+ rad = 0.75
+ laser = 0.25
diff --git a/code/datums/armor/station/exploration.dm b/code/datums/armor/station/exploration.dm
new file mode 100644
index 00000000000..60d60590fd6
--- /dev/null
+++ b/code/datums/armor/station/exploration.dm
@@ -0,0 +1,31 @@
+/datum/armor/exploration/soft
+ melee = 0.35
+ bullet = 0.2
+ laser = 0.25
+ energy = 0.3
+ bomb = 0.2
+ bio = 0.5
+ rad = 0.45
+
+/datum/armor/exploration/space
+ melee = 0.4
+ bullet = 0.2
+ laser = 0.25
+ energy = 0.25
+ bomb = 0.35
+ bio = 0.7
+ rad = 0.7
+
+/datum/armor/exploration/space/pilot
+ melee = 0.3
+ bullet = 0.1
+ laser = 0.25
+ energy = 0.35
+ bomb = 0.35
+ bio = 1.0
+ rad = 1.0
+
+/datum/armor/exploration/space/pathfinder
+ melee = 0.5
+ bullet = 0.4
+ laser = 0.4
diff --git a/code/datums/armor/station/medical.dm b/code/datums/armor/station/medical.dm
new file mode 100644
index 00000000000..7552393c5cc
--- /dev/null
+++ b/code/datums/armor/station/medical.dm
@@ -0,0 +1,29 @@
+/datum/armor/medical/jumpsuit
+ bio = 0.4
+
+/datum/armor/medical/coat
+ bio = 0.6
+
+/datum/armor/medical/coat/field_medic
+ melee = 0.2
+ bullet = 0.1
+ laser = 0.1
+ energy = 0.1
+ bomb = 0.05
+ bio = 0.65
+ rad = 0.1
+
+/datum/armor/medical/space
+ melee = 0.2
+ bullet = 0.05
+ laser = 0.2
+ energy = 0.05
+ bomb = 0.15
+ bio = 1.0
+ rad = 0.3
+
+/datum/armor/medical/space/upgraded
+ melee = 0.35
+ bullet = 0.15
+ laser = 0.2
+ rad = 1.0
diff --git a/code/datums/armor/station/science.dm b/code/datums/armor/station/science.dm
new file mode 100644
index 00000000000..780aa78092c
--- /dev/null
+++ b/code/datums/armor/station/science.dm
@@ -0,0 +1,7 @@
+/datum/armor/science/jumpsuit
+ bomb = 0.2
+ bio = 0.3
+
+/datum/armor/science/coat
+ bomb = 0.3
+ bio = 0.4
diff --git a/code/datums/armor/station/security.dm b/code/datums/armor/station/security.dm
new file mode 100644
index 00000000000..172744624a3
--- /dev/null
+++ b/code/datums/armor/station/security.dm
@@ -0,0 +1,135 @@
+/datum/armor/security/jumpsuit
+ melee = 0.1
+ bullet = 0.05
+ laser = 0.05
+ energy = 0.05
+ bomb = 0.05
+ bio = 0.1
+ rad = 0.1
+
+/datum/armor/security/space
+ melee = 0.5
+ bullet = 0.35
+ laser = 0.4
+ energy = 0.25
+ bomb = 0.35
+ bio = 1.0
+ rad = 0.2
+
+/datum/armor/security/space/riot
+
+ melee = 0.7
+ bullet = 0.2
+ laser = 0.3
+ energy = 0.05
+ bomb = 0.35
+ bio = 1.0
+ rad = 0.3
+
+/datum/armor/security/light_formalwear
+ melee = 0.15
+ bullet = 0.1
+ laser = 0.15
+ energy = 0.1
+ bio = 0.1
+
+/datum/armor/security/medium
+ melee = 0.45
+ bullet = 0.25
+ laser = 0.25
+ energy = 0.2
+ bomb = 0.2
+ bio = 0.2
+ rad = 0.2
+
+/datum/armor/security/low
+ melee = 0.35
+ bullet = 0.15
+ laser = 0.25
+ energy = 0.1
+ bomb = 0.1
+ bio = 0.2
+ rad = 0.1
+
+/datum/armor/security/high
+ melee = 0.5
+ bullet = 0.5
+ laser = 0.5
+ energy = 0.35
+ bomb = 0.4
+ bio = 0.2
+ rad = 0.2
+
+/datum/armor/security/detective
+ melee = 0.3
+ bullet = 0.15
+ laser = 0.2
+ energy = 0.2
+ bomb = 0.1
+ bio = 0.1
+ rad = 0.05
+
+/datum/armor/security/captain
+ melee = 0.5
+ bullet = 0.5
+ laser = 0.5
+ energy = 0.35
+ bomb = 0.4
+ bio = 0.2
+ rad = 0.2
+
+/datum/armor/security/captain/space
+ melee = 0.65
+
+/datum/armor/security/hos
+ melee = 0.6
+ bullet = 0.45
+ laser = 0.45
+ energy = 0.3
+ bomb = 0.2
+ bio = 0.2
+ rad = 0.2
+
+/datum/armor/security/hos/space
+ melee = 0.7
+ bullet = 0.5
+ laser = 0.5
+ energy = 0.35
+ bomb = 0.5
+ bio = 1.0
+ rad = 0.5
+
+/datum/armor/security/swat
+ melee = 0.65
+ bullet = 0.65
+ laser = 0.5
+ energy = 0.35
+ bomb = 0.4
+ bio = 0.2
+ rad = 0.2
+
+/datum/armor/security/special
+ melee = 0.2
+ bullet = 0.2
+ laser = 0.2
+ energy = 0.2
+ bomb = 0.3
+ bio = 0.1
+ rad = 0.1
+
+/datum/armor/security/special/riot
+ melee = 0.8
+
+/datum/armor/security/special/ablative
+ laser = 0.8
+ energy = 0.6
+
+/datum/armor/security/special/ballistic
+ bullet = 0.8
+
+/datum/armor/security/special/bulky_kinetic
+ melee = 0.9
+ bullet = 0.8
+ bomb = 0.5
+ bio = 0.5
+ rad = 0.5
diff --git a/code/datums/armor/unsorted.dm b/code/datums/armor/unsorted.dm
new file mode 100644
index 00000000000..5e2d1bf86d7
--- /dev/null
+++ b/code/datums/armor/unsorted.dm
@@ -0,0 +1,8 @@
+/datum/armor/thunderdome
+ melee = 0.5
+ bullet = 0.5
+ laser = 0.5
+ energy = 0.25
+ bomb = 0.3
+ bio = 0.3
+ rad = 0.3
diff --git a/code/datums/components/armor_plate.dm b/code/datums/components/armor_plate.dm
deleted file mode 100644
index 6f1ba6a8392..00000000000
--- a/code/datums/components/armor_plate.dm
+++ /dev/null
@@ -1,78 +0,0 @@
-/datum/component/armor_plate
- var/amount = 0
- var/maxamount = 3
- var/upgrade_item = /obj/item/stack/sheet/animalhide/goliath_hide
- var/datum/armor/added_armor = list("melee" = 10)
- var/upgrade_name
-
-/datum/component/armor_plate/Initialize(_maxamount,obj/item/_upgrade_item,datum/armor/_added_armor)
- if(!isobj(parent))
- return COMPONENT_INCOMPATIBLE
-
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/applyplate)
- RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, .proc/dropplates)
-
- if(_maxamount)
- maxamount = _maxamount
- if(_upgrade_item)
- upgrade_item = _upgrade_item
- if(_added_armor)
- if(islist(_added_armor))
- added_armor = getArmor(arglist(_added_armor))
- else if (istype(_added_armor, /datum/armor))
- added_armor = _added_armor
- else
- stack_trace("Invalid type [_added_armor.type] passed as _armor_item argument to armorplate component")
- else
- added_armor = getArmor(arglist(added_armor))
- var/obj/item/typecast = upgrade_item
- upgrade_name = initial(typecast.name)
-
-/datum/component/armor_plate/proc/examine(datum/source, mob/user, list/examine_list)
- //upgrade_item could also be typecast here instead
- if(ismecha(parent))
- if(amount)
- if(amount < maxamount)
- examine_list += "Its armor is enhanced with [amount] [upgrade_name]."
- else
- examine_list += "It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter."
- else
- examine_list += "It has attachment points for strapping monster hide on for added protection."
- else
- if(amount)
- examine_list += "It has been strengthened with [amount]/[maxamount] [upgrade_name]."
- else
- examine_list += "It can be strengthened with up to [maxamount] [upgrade_name]."
-
-/datum/component/armor_plate/proc/applyplate(datum/source, obj/item/I, mob/user, params)
- if(!istype(I,upgrade_item))
- return
- if(amount >= maxamount)
- to_chat(user, "You can't improve [parent] any further!")
- return
-
- if(istype(I,/obj/item/stack))
- I.use(1)
- else
- if(length(I.contents))
- to_chat(user, "[I] cannot be used for armoring while there's something inside!")
- return
- qdel(I)
-
- var/obj/O = parent
- amount++
- O.armor = O.armor.attachArmor(added_armor)
-
- if(ismecha(O))
- var/obj/mecha/R = O
- R.update_icon()
- to_chat(user, "You strengthen [R], improving its resistance against melee, bullet and laser damage.")
- else
- to_chat(user, "You strengthen [O], improving its resistance against melee attacks.")
-
-
-/datum/component/armor_plate/proc/dropplates(datum/source, force)
- if(ismecha(parent)) //items didn't drop the plates before and it causes erroneous behavior for the time being with collapsible helmets
- for(var/i in 1 to amount)
- new upgrade_item(get_turf(parent))
diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm
index dcf69120496..50306611397 100644
--- a/code/datums/components/chasm.dm
+++ b/code/datums/components/chasm.dm
@@ -10,7 +10,7 @@
/obj/docking_port,
/obj/structure/lattice,
/obj/structure/stone_tile,
- /obj/item/projectile,
+ /obj/projectile,
/obj/effect/projectile,
/obj/effect/portal,
/obj/effect/abstract,
diff --git a/code/datums/components/explodable.dm b/code/datums/components/explodable.dm
index d9fff6feeb1..f27fae30237 100644
--- a/code/datums/components/explodable.dm
+++ b/code/datums/components/explodable.dm
@@ -84,7 +84,7 @@
continue
var/obj/item/I = bp
- if(I.body_cover_flags & bodypart.body_part)
+ if(I.body_cover_flags & bodypart.body_part_flags)
return TRUE
return FALSE
diff --git a/code/datums/components/fantasy/_fantasy.dm b/code/datums/components/fantasy/_fantasy.dm
deleted file mode 100644
index e8d3c508130..00000000000
--- a/code/datums/components/fantasy/_fantasy.dm
+++ /dev/null
@@ -1,140 +0,0 @@
-/datum/component/fantasy
- dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
-
- var/quality
-
- var/canFail
- var/announce
-
- var/originalName
- var/list/affixes
- var/list/appliedComponents
-
- var/static/list/affixListing
-
-/datum/component/fantasy/Initialize(quality, list/affixes = list(), canFail=FALSE, announce=FALSE)
- if(!isitem(parent))
- return COMPONENT_INCOMPATIBLE
-
- src.quality = quality || randomQuality()
- src.canFail = canFail
- src.announce = announce
-
- src.affixes = affixes
- appliedComponents = list()
- randomAffixes()
-
-/datum/component/fantasy/Destroy()
- unmodify()
- affixes = null
- return ..()
-
-/datum/component/fantasy/RegisterWithParent()
- var/obj/item/master = parent
- originalName = master.name
- modify()
-
-/datum/component/fantasy/UnregisterFromParent()
- unmodify()
-
-/datum/component/fantasy/InheritComponent(datum/component/fantasy/newComp, original, list/arguments)
- unmodify()
- if(newComp)
- quality += newComp.quality
- canFail = newComp.canFail
- announce = newComp.announce
- else
- arguments.len = 5 // This is done to replicate what happens when an arglist smaller than the necessary arguments is given
- quality += arguments[1]
- canFail = arguments[4] || canFail
- announce = arguments[5] || announce
- modify()
-
-/datum/component/fantasy/proc/randomQuality()
- var/quality = pick(1;15, 2;14, 2;13, 2;12, 3;11, 3;10, 3;9, 4;8, 4;7, 4;6, 5;5, 5;4, 5;3, 6;2, 6;1, 6;0)
- if(prob(50))
- quality = -quality
- return quality
-
-/datum/component/fantasy/proc/randomAffixes(force)
- if(!affixListing)
- affixListing = list()
- for(var/T in subtypesof(/datum/fantasy_affix))
- var/datum/fantasy_affix/affix = new T
- affixListing[affix] = affix.weight
-
- if(length(affixes))
- if(!force)
- return
- affixes = list()
-
- var/alignment
- if(quality >= 0)
- alignment |= AFFIX_GOOD
- if(quality <= 0)
- alignment |= AFFIX_EVIL
-
- var/usedSlots = NONE
- for(var/i in 1 to max(1, abs(quality))) // We want at least 1 affix applied
- var/datum/fantasy_affix/affix = pickweight(affixListing)
- if(affix.placement & usedSlots)
- continue
- if(!(affix.alignment & alignment))
- continue
- if(!affix.validate(src))
- continue
- affixes += affix
- usedSlots |= affix.placement
-
-/datum/component/fantasy/proc/modify()
- var/obj/item/master = parent
-
- master.force = max(0, master.force + quality)
- master.throw_force = max(0, master.throw_force + quality)
- master.armor = master.armor.modifyAllRatings(quality)
-
- var/newName = originalName
- for(var/i in affixes)
- var/datum/fantasy_affix/affix = i
- newName = affix.apply(src, newName)
-
- if(quality != 0)
- newName = "[newName] [quality > 0 ? "+" : ""][quality]"
-
- if(canFail && prob((quality - 9)*10))
- var/turf/place = get_turf(parent)
- place.visible_message("[parent] violently glows blue for a while, then evaporates.")
- master.burn()
- return
- else if(announce)
- announce()
-
- master.name = newName
-
-/datum/component/fantasy/proc/unmodify()
- var/obj/item/master = parent
-
- for(var/i in affixes)
- var/datum/fantasy_affix/affix = i
- affix.remove(src)
- for(var/i in appliedComponents)
- qdel(i)
-
- master.force = max(0, master.force - quality)
- master.throw_force = max(0, master.throw_force - quality)
- master.armor = master.armor.modifyAllRatings(-quality)
-
- master.name = originalName
-
-/datum/component/fantasy/proc/announce()
- var/turf/location = get_turf(parent)
- var/span
- var/effect_description
- if(quality >= 0)
- span = ""
- effect_description = "shimmering golden glow"
- else
- span = ""
- effect_description = "mottled black glow"
-
- location.visible_message("[span][originalName] is covered by a [effect_description] and then transforms into [parent]!")
diff --git a/code/datums/components/fantasy/suffixes.dm b/code/datums/components/fantasy/suffixes.dm
index d63806768d8..0dd37edb6f4 100644
--- a/code/datums/components/fantasy/suffixes.dm
+++ b/code/datums/components/fantasy/suffixes.dm
@@ -124,23 +124,23 @@
/datum/fantasy_affix/shrapnel/apply(datum/component/fantasy/comp, newName)
. = ..()
// higher means more likely
- var/list/weighted_projectile_types = list(/obj/item/projectile/meteor = 1,
- /obj/item/projectile/energy/nuclear_particle = 1,
- /obj/item/projectile/beam/pulse = 1,
- /obj/item/projectile/bullet/honker = 15,
- /obj/item/projectile/temp = 15,
- /obj/item/projectile/ion = 15,
- /obj/item/projectile/magic/door = 15,
- /obj/item/projectile/magic/locker = 15,
- /obj/item/projectile/magic/fetch = 15,
- /obj/item/projectile/beam/emitter = 15,
- /obj/item/projectile/magic/flying = 15,
- /obj/item/projectile/energy/net = 15,
- /obj/item/projectile/bullet/incendiary/c9mm = 15,
- /obj/item/projectile/temp/hot = 15,
- /obj/item/projectile/beam/disabler = 15)
+ var/list/weighted_projectile_types = list(/obj/projectile/meteor = 1,
+ /obj/projectile/energy/nuclear_particle = 1,
+ /obj/projectile/beam/pulse = 1,
+ /obj/projectile/bullet/honker = 15,
+ /obj/projectile/temp = 15,
+ /obj/projectile/ion = 15,
+ /obj/projectile/magic/door = 15,
+ /obj/projectile/magic/locker = 15,
+ /obj/projectile/magic/fetch = 15,
+ /obj/projectile/beam/emitter = 15,
+ /obj/projectile/magic/flying = 15,
+ /obj/projectile/energy/net = 15,
+ /obj/projectile/bullet/incendiary/c9mm = 15,
+ /obj/projectile/temp/hot = 15,
+ /obj/projectile/beam/disabler = 15)
- var/obj/item/projectile/picked_projectiletype = pickweight(weighted_projectile_types)
+ var/obj/projectile/picked_projectiletype = pickweight(weighted_projectile_types)
var/obj/item/master = comp.parent
comp.appliedComponents += master.AddComponent(/datum/component/shrapnel, picked_projectiletype)
diff --git a/code/datums/components/shrapnel.dm b/code/datums/components/shrapnel.dm
index a98930edb8e..f549fbbb342 100644
--- a/code/datums/components/shrapnel.dm
+++ b/code/datums/components/shrapnel.dm
@@ -26,7 +26,7 @@
return
var/turf/target_turf = get_turf(target)
for(var/turf/shootat_turf in RANGE_TURFS(radius, target) - RANGE_TURFS(radius-1, target))
- var/obj/item/projectile/P = new projectile_type(target_turf)
+ var/obj/projectile/P = new projectile_type(target_turf)
//Shooting Code:
P.range = radius+1
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index b3959328186..f09b428eb05 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -58,8 +58,8 @@
var/obj/item/I = AM
if(I.item_flags & ITEM_ABSTRACT)
return
- else if(istype(AM, /obj/item/projectile))
- var/obj/item/projectile/P = AM
+ else if(istype(AM, /obj/projectile))
+ var/obj/projectile/P = AM
if(P.original != parent)
return
if(istype(AM, /obj/effect/dummy/phased_mob)) //don't squeek if they're in a phased/jaunting container.
diff --git a/code/game/atoms/atoms_appearance.dm b/code/game/atoms/appearance.dm
similarity index 100%
rename from code/game/atoms/atoms_appearance.dm
rename to code/game/atoms/appearance.dm
diff --git a/code/game/atoms/atoms.dm b/code/game/atoms/atom.dm
similarity index 98%
rename from code/game/atoms/atoms.dm
rename to code/game/atoms/atom.dm
index 26d7bac1d7e..70fd2143212 100644
--- a/code/game/atoms/atoms.dm
+++ b/code/game/atoms/atom.dm
@@ -32,6 +32,14 @@
/// What icon the atom uses for speechbubbles.
var/bubble_icon = "normal"
+ //? Armor
+ /// armor datm - this armor mitigates damage
+ /// damage is reduced to 1 / (armor / 100 + 1), so 100 armor = 2x effective hp, 200 = 3x
+ /// if negative, you receive that % more damage, -100 = 0.5x effective hp, -200 = 0.33x, so on and so forth.
+ var/datum/armor/armor
+ /// armor datum type
+ var/armor_type = /datum/armor/none
+
//? Economy
/// intrinsic worth without accounting containing reagents / materials - applies in static and dynamic mode.
var/worth_intrinsic = 0
@@ -75,7 +83,6 @@
/// do we use the atom damage system?
var/use_integrity = FALSE
// todo: use integrity & procs on turf and obj level
- // todo: armor system, how?
//? HUDs
/// This atom's HUD (med/sec, etc) images. Associative list.
@@ -337,7 +344,7 @@
SEND_SIGNAL(src, COMSIG_ATOM_EMP_ACT, severity)
-/atom/proc/bullet_act(obj/item/projectile/P, def_zone)
+/atom/proc/bullet_act(obj/projectile/P, def_zone)
P.on_hit(src, 0, def_zone)
. = 0
diff --git a/code/game/atoms/defense.dm b/code/game/atoms/defense.dm
index 0d0a2057e77..ff52deca31a 100644
--- a/code/game/atoms/defense.dm
+++ b/code/game/atoms/defense.dm
@@ -1,6 +1,8 @@
//! Welcome to the atom damage module.
//! Enjoy the bitfield and #define vomit.
+//? Deconstruction
+
/**
* called to semantically deconstruct an atom
*
@@ -27,7 +29,7 @@
* @params
* - method - how we were deconstructed
*/
-/atom/proc/deconstructed()
+/atom/proc/deconstructed(method)
return
/**
@@ -49,3 +51,89 @@
*/
/atom/proc/drop_product(method, atom/movable/dropping, atom/where)
dropping.forceMove(where || drop_location())
+
+//? Armor
+
+/**
+ * resets our armor to initial values
+ */
+/atom/proc/reset_armor()
+ set_armor(initial(armor_type))
+
+/**
+ * sets our armor
+ *
+ * @params
+ * * what - list of armor values or a /datum/armor path
+ */
+/atom/proc/set_armor(what)
+ armor = fetch_armor_struct(what)
+
+/**
+ * gets our armor datum or otherwise make sure it exists
+ */
+/atom/proc/fetch_armor()
+ RETURN_TYPE(/datum/armor)
+ return armor || (armor = fetch_armor_struct(armor_type))
+
+/**
+ * calculates the resulting damage from an attack, taking into account our armor and soak
+ *
+ * @params
+ * * damage - raw damage
+ * * tier - penetration / attack tier
+ * * flag - armor flag as seen in [code/__DEFINES/combat/armor.dm]
+ * * mode - damage_mode
+ * * attack_type - (optional) attack type flags from [code/__DEFINES/combat/attack_types.dm]
+ * * weapon - (optional) attacking /obj/item for melee or thrown, /obj/projectile for ranged, /mob for unarmed
+ *
+ * @return args as list.
+ */
+/atom/proc/check_armor(damage, tier, flag, mode, attack_type, datum/weapon)
+ damage = fetch_armor().resultant_damage(damage, tier, flag)
+ return args.Copy()
+
+/**
+ * runs armor against an incoming attack
+ * this proc can have side effects
+ *
+ * @params
+ * * damage - raw damage
+ * * tier - penetration / attack tier
+ * * flag - armor flag as seen in [code/__DEFINES/combat/armor.dm]
+ * * mode - damage_mode
+ * * attack_type - (optional) attack type flags from [code/__DEFINES/combat/attack_types.dm]
+ * * weapon - (optional) attacking /obj/item for melee or thrown, /obj/projectile for ranged, /mob for unarmed
+ *
+ * @return args as list.
+ */
+/atom/proc/run_armor(damage, tier, flag, mode, attack_type, datum/weapon)
+ damage = fetch_armor().resultant_damage(damage, tier, flag)
+ return args.Copy()
+
+//? shieldcalls
+
+/**
+ * checks for shields
+ * not always accurate
+ *
+ * todo: use pointers instead
+ *
+ * params are modified and then returned as a list.
+ */
+/atom/proc/atom_shieldcheck(damage, tier, flag, mode, attack_type, datum/weapon, list/additional = list(), retval = NONE)
+ retval |= SHIELDCALL_JUST_CHECKING
+ SEND_SIGNAL(src, COMSIG_ATOM_SHIELDCALL, args)
+ return args.Copy()
+
+/**
+ * runs an attack against shields
+ * side effects are allowed
+ *
+ * todo: use pointers instead
+ *
+ * params are modified and then returned as a list
+ */
+/atom/proc/atom_shieldcall(damage, tier, flag, mode, attack_type, datum/weapon, list/additional = list(), retval = NONE)
+ SEND_SIGNAL(src, COMSIG_ATOM_SHIELDCALL, args)
+ return args.Copy()
diff --git a/code/game/atoms/atoms_movable.dm b/code/game/atoms/movable/movable.dm
similarity index 100%
rename from code/game/atoms/atoms_movable.dm
rename to code/game/atoms/movable/movable.dm
diff --git a/code/game/atoms/atoms_movable_movement.dm b/code/game/atoms/movable/movement.dm
similarity index 100%
rename from code/game/atoms/atoms_movable_movement.dm
rename to code/game/atoms/movable/movement.dm
diff --git a/code/game/atoms/atoms_movable_pulling.dm b/code/game/atoms/movable/pulling.dm
similarity index 100%
rename from code/game/atoms/atoms_movable_pulling.dm
rename to code/game/atoms/movable/pulling.dm
diff --git a/code/game/atoms/atoms_movable_throwing.dm b/code/game/atoms/movable/throwing.dm
similarity index 100%
rename from code/game/atoms/atoms_movable_throwing.dm
rename to code/game/atoms/movable/throwing.dm
diff --git a/code/game/atoms/atoms_movable_vv.dm b/code/game/atoms/movable/vv.dm
similarity index 100%
rename from code/game/atoms/atoms_movable_vv.dm
rename to code/game/atoms/movable/vv.dm
diff --git a/code/game/atoms/atoms_movement.dm b/code/game/atoms/movement.dm
similarity index 100%
rename from code/game/atoms/atoms_movement.dm
rename to code/game/atoms/movement.dm
diff --git a/code/game/atoms/atoms_vv.dm b/code/game/atoms/vv.dm
similarity index 86%
rename from code/game/atoms/atoms_vv.dm
rename to code/game/atoms/vv.dm
index 8ae4f34785c..4f68044c6cc 100644
--- a/code/game/atoms/atoms_vv.dm
+++ b/code/game/atoms/vv.dm
@@ -73,12 +73,13 @@
var/turf/curturf = get_turf(src)
if(curturf)
. += ""
- VV_DROPDOWN_OPTION(VV_HK_MODIFY_TRANSFORM, "Modify Transform")
VV_DROPDOWN_OPTION(VV_HK_ADD_REAGENT, "Add Reagent")
- VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EMP, "EMP Pulse")
- VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EXPLOSION, "Explosion")
+ VV_DROPDOWN_OPTION(VV_HK_EDIT_ARMOR, "Edit Armor")
VV_DROPDOWN_OPTION(VV_HK_EDIT_FILTERS, "Edit Filters")
VV_DROPDOWN_OPTION(VV_HK_EDIT_COLOR_MATRIX, "Edit Color as Matrix")
+ VV_DROPDOWN_OPTION(VV_HK_MODIFY_TRANSFORM, "Modify Transform")
+ VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EXPLOSION, "Explosion")
+ VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EMP, "EMP Pulse")
/atom/vv_do_topic(list/href_list)
. = ..()
@@ -140,10 +141,24 @@
if(href_list[VV_HK_EDIT_FILTERS] && check_rights(R_VAREDIT))
var/client/C = usr.client
C?.open_filter_editor(src)
-
if(href_list[VV_HK_EDIT_COLOR_MATRIX] && check_rights(R_VAREDIT))
var/client/C = usr.client
C?.open_color_matrix_editor(src)
+ if(href_list[VV_HK_EDIT_ARMOR] && check_rights(R_VAREDIT))
+ // todo: tgui armor editor?
+ var/list/pickerlist = list()
+ var/list/armorlist = fetch_armor().to_list()
+ for (var/i in armorlist)
+ pickerlist += list(list("value" = armorlist[i], "name" = i))
+ var/list/result = presentpicker(usr, "Modify armor", "Modify armor: [src]", Button1="Save", Button2 = "Cancel", Timeout=FALSE, inputtype = "text", values = pickerlist, width = 300, height = 800)
+ if(!islist(result) || result["button"] == 2) // 2 is cancel
+ return
+ var/list/built = list()
+ for(var/key in result["values"])
+ built[key] = text2num(result["values"][key])
+ set_armor(armor.overwritten(built))
+ log_admin("[key_name(usr)] modified the armor on [src] ([type]) to [armor.log_string()]")
+ message_admins(SPAN_NOTICE("[key_name_admin(usr)] modified the armor on [src] ([type]) to [armor.log_string()]"))
/atom/vv_get_header()
. = ..()
diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm
index faacadd691a..c4e4c5774bd 100644
--- a/code/game/gamemodes/changeling/powers/armblade.dm
+++ b/code/game/gamemodes/changeling/powers/armblade.dm
@@ -53,7 +53,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "arm_blade"
w_class = ITEMSIZE_HUGE
- force = 5
+ damage_force = 5
anchored = 1
throw_force = 0 //Just to be on the safe side
throw_range = 0
@@ -119,7 +119,7 @@
return 0
/obj/item/melee/changeling/unique_parry_check(mob/user, mob/attacker, atom/damage_source)
- if(user.incapacitated() || !istype(damage_source, /obj/item/projectile))
+ if(user.incapacitated() || !istype(damage_source, /obj/projectile))
return 0
var/bad_arc = REVERSE_DIR(user.dir)
@@ -132,7 +132,7 @@
name = "arm blade"
desc = "A grotesque blade made out of bone and flesh that cleaves through people as a hot knife through butter."
icon_state = "arm_blade"
- force = 40
+ damage_force = 40
armor_penetration = 15
sharp = 1
edge = 1
@@ -152,7 +152,7 @@
name = "hand claw"
desc = "A grotesque claw made out of bone and flesh that cleaves through people as a hot knife through butter."
icon_state = "ling_claw"
- force = 15
+ damage_force = 15
sharp = 1
edge = 1
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
@@ -161,7 +161,7 @@
/obj/item/melee/changeling/claw/greater
name = "hand greatclaw"
- force = 20
+ damage_force = 20
armor_penetration = 20
pry = 1
defend_chance = 60
diff --git a/code/game/gamemodes/changeling/powers/armor.dm b/code/game/gamemodes/changeling/powers/armor.dm
index 65bc5e9b7c7..4d3753a5f2b 100644
--- a/code/game/gamemodes/changeling/powers/armor.dm
+++ b/code/game/gamemodes/changeling/powers/armor.dm
@@ -38,7 +38,7 @@
clothing_flags = NONE
item_flags = ITEM_DROPDEL
allowed = list(/obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/tank/oxygen)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) //No armor at all.
+ armor_type = /datum/armor/none //No armor at all.
/obj/item/clothing/suit/space/changeling/Initialize(mapload)
. = ..()
@@ -54,7 +54,7 @@
clothing_flags = NONE
inv_hide_flags = BLOCKHAIR
item_flags = ITEM_DROPDEL
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
body_cover_flags = HEAD|FACE|EYES
/obj/item/clothing/shoes/magboots/changeling
@@ -78,13 +78,13 @@
clothing_flags &= ~NOSLIP
magpulse = 0
set_slowdown()
- force = 3
+ damage_force = 3
to_chat(user, "We release our grip on the floor.")
else
clothing_flags |= NOSLIP
magpulse = 1
set_slowdown()
- force = 5
+ damage_force = 5
to_chat(user, "We cling to the terrain below us.")
//Armor
@@ -94,7 +94,7 @@
desc = "A tough, hard covering of black chitin."
icon_state = "lingarmor"
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- armor = list(melee = 75, bullet = 60, laser = 60, energy = 60, bomb = 60, bio = 0, rad = 0) //It costs 3 points, so it should be very protective.
+ armor_type = /datum/armor/changeling/chitin
siemens_coefficient = 0.3
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
slowdown = 3
@@ -110,7 +110,7 @@
name = "chitinous mass"
desc = "A tough, hard covering of black chitin with transparent chitin in front."
icon_state = "lingarmorhelmet"
- armor = list(melee = 75, bullet = 60, laser = 60,energy = 60, bomb = 60, bio = 0, rad = 0)
+ armor_type = /datum/armor/changeling/chitin
siemens_coefficient = 0.3
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -124,7 +124,7 @@
name = "chitinous gauntlets"
desc = "Very resilient gauntlets made out of black chitin. It looks very durable, and can probably resist electrical shock in addition to the elements."
icon_state = "lingarmorgloves"
- armor = list(melee = 75, bullet = 60, laser = 60,energy = 60, bomb = 60, bio = 0, rad = 0) //No idea if glove armor gets checked
+ armor_type = /datum/armor/changeling/chitin
siemens_coefficient = 0
/obj/item/clothing/shoes/boots/combat/changeling //Noslips
@@ -132,7 +132,7 @@
name = "Footwear made out of a hard, black chitinous material. The bottoms of these appear to have spikes that can protrude or extract itself into and out \
of the floor at will, granting the wearer stability."
icon_state = "lingboots"
- armor = list(melee = 75, bullet = 60, laser = 70,energy = 60, bomb = 60, bio = 0, rad = 0)
+ armor_type = /datum/armor/changeling/chitin
siemens_coefficient = 0.3
cold_protection = FEET
min_cold_protection_temperature = SHOE_MIN_COLD_PROTECTION_TEMPERATURE
diff --git a/code/game/gamemodes/cult/construct_spells.dm b/code/game/gamemodes/cult/construct_spells.dm
index 15fcc132c2c..f5747c394f4 100644
--- a/code/game/gamemodes/cult/construct_spells.dm
+++ b/code/game/gamemodes/cult/construct_spells.dm
@@ -430,7 +430,7 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_magic.dmi',
)
throw_force = 0
- force = 0
+ damage_force = 0
show_examine = FALSE
owner = null
del_for_null_core = FALSE
@@ -503,14 +503,14 @@
icon_state = "generic"
desc = "This is a generic template that shoots projectiles. If you can read this, the game broke!"
cast_methods = CAST_RANGED
- var/obj/item/projectile/spell_projectile = null
+ var/obj/projectile/spell_projectile = null
var/pre_shot_delay = 0
var/fire_sound = null
var/energy_cost_per_shot = 5
/obj/item/spell/construct/projectile/on_ranged_cast(atom/hit_atom, mob/living/user)
if(set_up(hit_atom, user))
- var/obj/item/projectile/new_projectile = make_projectile(spell_projectile, user)
+ var/obj/projectile/new_projectile = make_projectile(spell_projectile, user)
new_projectile.old_style_target(hit_atom)
new_projectile.fire()
log_and_message_admins("has casted [src] at \the [hit_atom].")
@@ -519,8 +519,8 @@
return 1
return 0
-/obj/item/spell/construct/projectile/proc/make_projectile(obj/item/projectile/projectile_type, mob/living/user)
- var/obj/item/projectile/P = new projectile_type(get_turf(user))
+/obj/item/spell/construct/projectile/proc/make_projectile(obj/projectile/projectile_type, mob/living/user)
+ var/obj/projectile/P = new projectile_type(get_turf(user))
return P
/obj/item/spell/construct/projectile/proc/set_up(atom/hit_atom, mob/living/user)
@@ -560,18 +560,18 @@
icon_state = "generic"
desc = "Your manipulators fire searing beams of inverted light."
cast_methods = CAST_RANGED
- spell_projectile = /obj/item/projectile/beam/inversion
+ spell_projectile = /obj/projectile/beam/inversion
pre_shot_delay = 0
cooldown = 5
fire_sound = 'sound/weapons/spiderlunge.ogg'
-/obj/item/projectile/beam/inversion
+/obj/projectile/beam/inversion
name = "inversion beam"
icon_state = "invert"
fire_sound = 'sound/weapons/spiderlunge.ogg'
damage = 15
damage_type = BURN
- check_armour = "laser"
+ damage_flag = ARMOR_LASER
armor_penetration = 60
light_range = 2
light_power = -2
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 9c3faefce6a..aca2f88bb13 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -4,7 +4,7 @@
icon_state = "cultblade"
origin_tech = list(TECH_COMBAT = 1, TECH_ARCANE = 1)
w_class = ITEMSIZE_LARGE
- force = 30
+ damage_force = 30
throw_force = 10
hitsound = 'sound/weapons/bladeslice.ogg'
drop_sound = 'sound/items/drop/sword.ogg'
@@ -29,7 +29,7 @@
var/obj/item/organ/external/affecting = H.get_organ(zone)
to_chat(user, "An inexplicable force rips through your [affecting.name], tearing the sword from your grasp!")
//random amount of damage between half of the blade's force and the full force of the blade.
- H.apply_damage(rand(force/2, force), BRUTE, zone, 0, sharp=1, edge=1)
+ H.apply_damage(rand(damage_force/2, damage_force), BRUTE, zone, 0, sharp=1, edge=1)
H.Weaken(5)
else if(!istype(user, /mob/living/simple_mob/construct))
to_chat(user, "An inexplicable force rips through you, tearing the sword from your grasp!")
@@ -59,7 +59,7 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_ARCANE = 1)
inv_hide_flags = HIDEFACE
body_cover_flags = HEAD
- armor = list(melee = 50, bullet = 30, laser = 50, energy = 80, bomb = 25, bio = 10, rad = 0)
+ armor_type = /datum/armor/cult/robes
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 0
@@ -84,7 +84,7 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_ARCANE = 1)
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
allowed = list(/obj/item/book/tome,/obj/item/melee/cultblade)
- armor = list(melee = 50, bullet = 30, laser = 50, energy = 80, bomb = 25, bio = 10, rad = 0)
+ armor_type = /datum/armor/cult/robes
inv_hide_flags = HIDEJUMPSUIT
siemens_coefficient = 0
@@ -106,7 +106,7 @@
desc = "A space worthy helmet used by the followers of Nar-Sie."
icon_state = "cult_helmet"
origin_tech = list(TECH_MATERIAL = 3, TECH_ARCANE = 1)
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 80, bomb = 30, bio = 30, rad = 30)
+ armor_type = /datum/armor/cult/space
siemens_coefficient = 0
/obj/item/clothing/head/helmet/space/cult/cultify()
@@ -120,7 +120,7 @@
w_class = ITEMSIZE_NORMAL
allowed = list(/obj/item/book/tome,/obj/item/melee/cultblade,/obj/item/tank/emergency/oxygen,/obj/item/suit_cooling_unit)
slowdown = 1
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 80, bomb = 30, bio = 30, rad = 30)
+ armor_type = /datum/armor/cult/space
siemens_coefficient = 0
inv_hide_flags = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index 461715d9975..dfb37a7cb90 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -44,12 +44,12 @@
attackpylon(user, damage)
/obj/structure/cult/pylon/attackby(obj/item/W as obj, mob/user as mob)
- attackpylon(user, W.force)
+ attackpylon(user, W.damage_force)
/obj/structure/cult/pylon/take_damage(var/damage)
pylonhit(damage)
-/obj/structure/cult/pylon/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/cult/pylon/bullet_act(var/obj/projectile/Proj)
pylonhit(Proj.get_structure_damage())
/obj/structure/cult/pylon/proc/pylonhit(var/damage)
diff --git a/code/game/gamemodes/events/holidays/Christmas.dm b/code/game/gamemodes/events/holidays/Christmas.dm
index 50d9906fa74..9d4189ea689 100644
--- a/code/game/gamemodes/events/holidays/Christmas.dm
+++ b/code/game/gamemodes/events/holidays/Christmas.dm
@@ -56,5 +56,5 @@
desc = "A crappy paper hat that you are REQUIRED to wear."
inv_hide_flags = 0
body_cover_flags = 0
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
diff --git a/code/game/gamemodes/technomancer/clothing.dm b/code/game/gamemodes/technomancer/clothing.dm
index b19c0576f5c..4da7aa138b8 100644
--- a/code/game/gamemodes/technomancer/clothing.dm
+++ b/code/game/gamemodes/technomancer/clothing.dm
@@ -4,7 +4,7 @@
icon_state = "technomancer_suit"
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS|FEET|HANDS
allowed = list(/obj/item/tank)
- armor = list(melee = 50, bullet = 20, laser = 30, energy = 30, bomb = 10, bio = 0, rad = 40)
+ armor_type = /datum/armor/technomancer/standard
siemens_coefficient = 0.75
/obj/item/clothing/under/technomancer
@@ -12,7 +12,7 @@
desc = "It's a blue colored jumpsuit. There appears to be light-weight armor padding underneath, providing some protection. \
There is also a healthy amount of insulation underneath."
icon_state = "initiate"
- armor = list(melee = 10, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/technomancer/jumpsuit
siemens_coefficient = 0.3
/obj/item/clothing/under/technomancer/apprentice
@@ -31,7 +31,7 @@
name = "initiate's hat"
desc = "It's a somewhat silly looking blue pointed hat."
icon_state = "initiate"
- armor = list(melee = 10, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/technomancer/standard
siemens_coefficient = 0.3
/obj/item/clothing/head/technomancer/apprentice
diff --git a/code/game/gamemodes/technomancer/devices/shield_armor.dm b/code/game/gamemodes/technomancer/devices/shield_armor.dm
index 68e4b2c6c28..273428c4173 100644
--- a/code/game/gamemodes/technomancer/devices/shield_armor.dm
+++ b/code/game/gamemodes/technomancer/devices/shield_armor.dm
@@ -17,7 +17,7 @@
icon_state = "shield_armor_0"
blood_overlay_type = "armor"
slowdown = 0
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
action_button_name = "Toggle Shield Projector"
var/active = 0
var/damage_to_energy_multiplier = 50.0 //Determines how much energy to charge for blocking, e.g. 20 damage attack = 750 energy cost
@@ -56,8 +56,8 @@
damage = damage - damage_blocked
- if(istype(damage_source, /obj/item/projectile))
- var/obj/item/projectile/P = damage_source
+ if(istype(damage_source, /obj/projectile))
+ var/obj/projectile/P = damage_source
P.sharp = 0
P.edge = 0
P.embed_chance = 0
diff --git a/code/game/gamemodes/technomancer/devices/tesla_armor.dm b/code/game/gamemodes/technomancer/devices/tesla_armor.dm
index a49594e707d..03668e4990e 100644
--- a/code/game/gamemodes/technomancer/devices/tesla_armor.dm
+++ b/code/game/gamemodes/technomancer/devices/tesla_armor.dm
@@ -13,7 +13,7 @@
icon_state = "tesla_armor_1" //wip
blood_overlay_type = "armor"
slowdown = 1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
action_button_name = "Toggle Tesla Armor"
var/active = 1 //Determines if the armor will zap or block
var/ready = 1 //Determines if the next attack will be blocked, as well if a strong lightning bolt is sent out at the attacker.
@@ -24,8 +24,8 @@
/obj/item/clothing/suit/armor/tesla/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
//First, some retaliation.
if(active)
- if(istype(damage_source, /obj/item/projectile))
- var/obj/item/projectile/P = damage_source
+ if(istype(damage_source, /obj/projectile))
+ var/obj/projectile/P = damage_source
if(P.firer && get_dist(user, P.firer) <= 3)
if(ready)
shoot_lightning(P.firer, 40)
@@ -79,7 +79,7 @@
..()
/obj/item/clothing/suit/armor/tesla/proc/shoot_lightning(mob/target, power)
- var/obj/item/projectile/beam/lightning/lightning = new(get_turf(src))
+ var/obj/projectile/beam/lightning/lightning = new(get_turf(src))
lightning.power = power
lightning.old_style_target(target)
lightning.fire()
diff --git a/code/game/gamemodes/technomancer/equipment.dm b/code/game/gamemodes/technomancer/equipment.dm
index 95099b4714a..8eae88632d1 100644
--- a/code/game/gamemodes/technomancer/equipment.dm
+++ b/code/game/gamemodes/technomancer/equipment.dm
@@ -188,7 +188,7 @@
desc = "It's a purple gem, attached to a rod and a handle, along with small wires. It looks like it would make a good club."
icon = 'icons/obj/technomancer.dmi'
icon_state = "scepter"
- force = 15
+ damage_force = 15
slot_flags = SLOT_BELT
attack_verb = list("beaten", "smashed", "struck", "whacked")
diff --git a/code/game/gamemodes/technomancer/instability.dm b/code/game/gamemodes/technomancer/instability.dm
index 0287f220633..64b3bc30304 100644
--- a/code/game/gamemodes/technomancer/instability.dm
+++ b/code/game/gamemodes/technomancer/instability.dm
@@ -278,7 +278,7 @@
// This should only be used for EXTERNAL sources of instability, such as from someone or something glowing.
/mob/living/proc/receive_radiated_instability(amount)
// Energy armor like from the AMI RIG can protect from this.
- var/armor = run_mob_armor(null, "energy")
+ var/armor = legacy_mob_armor(null, "energy")
var/armor_factor = abs( (armor - 100) / 100)
amount = amount * armor_factor
if(amount && prob(10))
diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm
index 67b72d59f65..f2abf806f93 100644
--- a/code/game/gamemodes/technomancer/spell_objs.dm
+++ b/code/game/gamemodes/technomancer/spell_objs.dm
@@ -9,7 +9,7 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_magic.dmi',
)
throw_force = 0
- force = 0
+ damage_force = 0
show_examine = FALSE
// var/mob/living/carbon/human/owner = null
var/mob/living/owner = null
diff --git a/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm b/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm
index cc2d37feafd..9a2c632355e 100644
--- a/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm
@@ -27,7 +27,7 @@
var/damage_to_inflict = max(L.health / L.getMaxHealth(), 0) // Otherwise, those in crit would actually be healed.
- var/armor_factor = abs(L.run_mob_armor(null, "energy") - 100)
+ var/armor_factor = abs(L.legacy_mob_armor(null, "energy") - 100)
armor_factor = armor_factor / 100
damage_to_inflict = damage_to_inflict * armor_factor
diff --git a/code/game/gamemodes/technomancer/spells/energy_siphon.dm b/code/game/gamemodes/technomancer/spells/energy_siphon.dm
index 2f1d1f22bcb..e45adfb7969 100644
--- a/code/game/gamemodes/technomancer/spells/energy_siphon.dm
+++ b/code/game/gamemodes/technomancer/spells/energy_siphon.dm
@@ -160,21 +160,21 @@
spawn(0)
var/i = 7 // process() takes two seconds to tick, this ensures the appearance of a ongoing beam.
while(i)
- var/obj/item/projectile/beam/lightning/energy_siphon/lightning = new(get_turf(source))
+ var/obj/projectile/beam/lightning/energy_siphon/lightning = new(get_turf(source))
lightning.firer = user
lightning.old_style_target(user)
lightning.fire()
i--
sleep(3)
-/obj/item/projectile/beam/lightning/energy_siphon
+/obj/projectile/beam/lightning/energy_siphon
name = "energy stream"
icon_state = "lightning"
range = 6 // Backup plan in-case the effect somehow misses the Technomancer.
power = 5 // This fires really fast, so this may add up if someone keeps standing in the beam.
penetrating = 5
-/obj/item/projectile/beam/lightning/energy_siphon/Bump(atom/A as mob|obj|turf|area, forced=0)
+/obj/projectile/beam/lightning/energy_siphon/Bump(atom/A as mob|obj|turf|area, forced=0)
if(A == firer) // For this, you CAN shoot yourself.
on_impact(A)
@@ -185,7 +185,7 @@
return 1
..()
-/obj/item/projectile/beam/lightning/energy_siphon/projectile_attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
+/obj/projectile/beam/lightning/energy_siphon/projectile_attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
if(target_mob == firer) // This shouldn't actually occur due to Bump(), but just in-case.
return 1
if(ishuman(target_mob)) // Otherwise someone else stood in the beam and is going to pay for it.
diff --git a/code/game/gamemodes/technomancer/spells/gambit.dm b/code/game/gamemodes/technomancer/spells/gambit.dm
index bf78e10cc00..197d28a43e3 100644
--- a/code/game/gamemodes/technomancer/spells/gambit.dm
+++ b/code/game/gamemodes/technomancer/spells/gambit.dm
@@ -100,7 +100,7 @@
hostile_mobs++
continue
// Strong melee weapons are scary as well.
- else if(I.force >= 15)
+ else if(I.damage_force >= 15)
hostile_mobs++
continue
diff --git a/code/game/gamemodes/technomancer/spells/projectile/beam.dm b/code/game/gamemodes/technomancer/spells/projectile/beam.dm
index 35e98e4d2cf..bf2bb82b6d4 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/beam.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/beam.dm
@@ -13,13 +13,13 @@
desc = "Boring, but practical."
cast_methods = CAST_RANGED
aspect = ASPECT_LIGHT
- spell_projectile = /obj/item/projectile/beam/blue
+ spell_projectile = /obj/projectile/beam/blue
energy_cost_per_shot = 400
instability_per_shot = 3
cooldown = 10
fire_sound = 'sound/weapons/Laser.ogg'
-/obj/item/projectile/beam/blue
+/obj/projectile/beam/blue
damage = 30
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
diff --git a/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm b/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm
index ad0785ace1f..8d4254e3f33 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm
@@ -14,13 +14,13 @@
desc = "Fun for the whole security team! Just don't kill yourself in the process.."
cast_methods = CAST_RANGED
aspect = ASPECT_SHOCK
- spell_projectile = /obj/item/projectile/beam/chain_lightning
+ spell_projectile = /obj/projectile/beam/chain_lightning
energy_cost_per_shot = 3000
instability_per_shot = 10
cooldown = 20
fire_sound = 'sound/weapons/gauss_shoot.ogg'
-/obj/item/projectile/beam/chain_lightning
+/obj/projectile/beam/chain_lightning
name = "lightning"
icon_state = "lightning"
nodamage = 1
@@ -34,7 +34,7 @@
var/list/hit_mobs = list() //Mobs which were already hit.
var/power = 35 //How hard it will hit for with electrocute_act(), decreases with each bounce.
-/obj/item/projectile/beam/chain_lightning/projectile_attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
+/obj/projectile/beam/chain_lightning/projectile_attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
//First we shock the guy we just hit.
if(ishuman(target_mob))
var/mob/living/carbon/human/H = target_mob
diff --git a/code/game/gamemodes/technomancer/spells/projectile/force_missile.dm b/code/game/gamemodes/technomancer/spells/projectile/force_missile.dm
index cb7ce13d8ff..7c6006e61ce 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/force_missile.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/force_missile.dm
@@ -13,15 +13,15 @@
desc = "Make it rain!"
cast_methods = CAST_RANGED
aspect = ASPECT_FORCE
- spell_projectile = /obj/item/projectile/force_missile
+ spell_projectile = /obj/projectile/force_missile
energy_cost_per_shot = 300
instability_per_shot = 2
cooldown = 5
fire_sound = 'sound/weapons/wave.ogg'
-/obj/item/projectile/force_missile
+/obj/projectile/force_missile
name = "force missile"
icon_state = "force_missile"
damage = 25
damage_type = BRUTE
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
diff --git a/code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm b/code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm
index 09dec44101d..01807163c9e 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm
@@ -12,7 +12,7 @@
desc = "For those pesky security units."
cast_methods = CAST_RANGED
aspect = ASPECT_EMP
- spell_projectile = /obj/item/projectile/ion
+ spell_projectile = /obj/projectile/ion
energy_cost_per_shot = 500
instability_per_shot = 6
cooldown = 10
diff --git a/code/game/gamemodes/technomancer/spells/projectile/lesser_chain_lightning.dm b/code/game/gamemodes/technomancer/spells/projectile/lesser_chain_lightning.dm
index cf2f0efcb81..fc0207c7a67 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/lesser_chain_lightning.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/lesser_chain_lightning.dm
@@ -13,11 +13,11 @@
desc = "Now you can throw around lightning like it's nobody's business."
cast_methods = CAST_RANGED
aspect = ASPECT_SHOCK
- spell_projectile = /obj/item/projectile/beam/chain_lightning
+ spell_projectile = /obj/projectile/beam/chain_lightning
energy_cost_per_shot = 1000
instability_per_shot = 5
cooldown = 10
-/obj/item/projectile/beam/chain_lightning/lesser
+/obj/projectile/beam/chain_lightning/lesser
bounces = 2
power = 20
diff --git a/code/game/gamemodes/technomancer/spells/projectile/lightning.dm b/code/game/gamemodes/technomancer/spells/projectile/lightning.dm
index 83c11e76ac8..4ba595480de 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/lightning.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/lightning.dm
@@ -13,14 +13,14 @@
desc = "Now you can feel like Zeus."
cast_methods = CAST_RANGED
aspect = ASPECT_SHOCK
- spell_projectile = /obj/item/projectile/beam/lightning
+ spell_projectile = /obj/projectile/beam/lightning
energy_cost_per_shot = 2500
instability_per_shot = 10
cooldown = 20
pre_shot_delay = 10
fire_sound = 'sound/weapons/gauss_shoot.ogg'
-/obj/item/projectile/beam/lightning
+/obj/projectile/beam/lightning
name = "lightning"
icon_state = "lightning"
nodamage = 1
@@ -32,7 +32,7 @@
var/power = 60 //How hard it will hit for with electrocute_act().
-/obj/item/projectile/beam/lightning/projectile_attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
+/obj/projectile/beam/lightning/projectile_attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
if(ishuman(target_mob))
var/mob/living/carbon/human/H = target_mob
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
diff --git a/code/game/gamemodes/technomancer/spells/projectile/overload.dm b/code/game/gamemodes/technomancer/spells/projectile/overload.dm
index 57c988280da..2d34d0d0a89 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/overload.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/overload.dm
@@ -15,21 +15,21 @@
desc = "Hope your Core's full."
cast_methods = CAST_RANGED
aspect = ASPECT_UNSTABLE
- spell_projectile = /obj/item/projectile/overload
+ spell_projectile = /obj/projectile/overload
energy_cost_per_shot = 0 // Handled later
instability_per_shot = 12
cooldown = 10
pre_shot_delay = 4
fire_sound = 'sound/effects/supermatter.ogg'
-/obj/item/projectile/overload
+/obj/projectile/overload
name = "overloaded bolt"
icon_state = "bluespace"
damage_type = BURN
armor_penetration = 100
-/obj/item/spell/projectile/overload/make_projectile(obj/item/projectile/projectile_type, mob/living/user)
- var/obj/item/projectile/overload/P = new projectile_type(get_turf(user))
+/obj/item/spell/projectile/overload/make_projectile(obj/projectile/projectile_type, mob/living/user)
+ var/obj/projectile/overload/P = new projectile_type(get_turf(user))
var/energy_before_firing = core.energy
if(check_for_scepter())
P.damage = round(energy_before_firing * 0.004) // .4% of their current energy pool.
@@ -43,7 +43,7 @@
..()
/* var/energy_before_firing = core.energy
if(set_up(hit_atom, user))
- var/obj/item/projectile/overload/P = new spell_projectile(get_turf(user))
+ var/obj/projectile/overload/P = new spell_projectile(get_turf(user))
P.launch(hit_atom)
if(check_for_scepter())
P.damage = round(energy_before_firing * 0.004) // .4% of their current energy pool.
diff --git a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm
index c930b751622..bfc80c5c639 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm
@@ -3,7 +3,7 @@
icon_state = "generic"
desc = "This is a generic template that shoots projectiles. If you can read this, the game broke!"
cast_methods = CAST_RANGED
- var/obj/item/projectile/spell_projectile = null
+ var/obj/projectile/spell_projectile = null
var/energy_cost_per_shot = 0
var/instability_per_shot = 0
var/pre_shot_delay = 0
@@ -11,7 +11,7 @@
/obj/item/spell/projectile/on_ranged_cast(atom/hit_atom, mob/living/user)
if(set_up(hit_atom, user))
- var/obj/item/projectile/new_projectile = make_projectile(spell_projectile, user)
+ var/obj/projectile/new_projectile = make_projectile(spell_projectile, user)
new_projectile.old_style_target(hit_atom)
new_projectile.fire()
log_and_message_admins("has casted [src] at \the [hit_atom].")
@@ -21,8 +21,8 @@
return 1
return 0
-/obj/item/spell/projectile/proc/make_projectile(obj/item/projectile/projectile_type, mob/living/user)
- var/obj/item/projectile/P = new projectile_type(get_turf(user))
+/obj/item/spell/projectile/proc/make_projectile(obj/projectile/projectile_type, mob/living/user)
+ var/obj/projectile/P = new projectile_type(get_turf(user))
P.damage = calculate_spell_power(P.damage)
return P
diff --git a/code/game/gamemodes/technomancer/spells/reflect.dm b/code/game/gamemodes/technomancer/spells/reflect.dm
index 278d2b9d17e..d5fcb7380fc 100644
--- a/code/game/gamemodes/technomancer/spells/reflect.dm
+++ b/code/game/gamemodes/technomancer/spells/reflect.dm
@@ -45,8 +45,8 @@
var/bad_arc = REVERSE_DIR(user.dir) //arc of directions from which we cannot block
if(check_shield_arc(user, bad_arc, damage_source, attacker))
- if(istype(damage_source, /obj/item/projectile))
- var/obj/item/projectile/P = damage_source
+ if(istype(damage_source, /obj/projectile))
+ var/obj/projectile/P = damage_source
if(P.starting && !P.reflected)
visible_message("\The [user]'s [src.name] reflects [attack_text]!")
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 9a0d9c0aa36..7bcc7c87365 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -282,7 +282,7 @@ update_flag
/obj/machinery/portable_atmospherics/canister/return_air()
return air_contents
-/obj/machinery/portable_atmospherics/canister/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/portable_atmospherics/canister/bullet_act(var/obj/projectile/Proj)
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
return
@@ -294,7 +294,7 @@ update_flag
/obj/machinery/portable_atmospherics/canister/attackby(var/obj/item/W as obj, var/mob/user as mob)
if(!W.is_wrench() && !istype(W, /obj/item/tank) && !istype(W, /obj/item/analyzer) && !istype(W, /obj/item/pda))
visible_message(SPAN_WARNING("\The [user] hits \the [src] with \a [W]!"))
- src.health -= W.force
+ src.health -= W.damage_force
healthcheck()
if(istype(user, /mob/living/silicon/robot) && istype(W, /obj/item/tank/jetpack))
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index e210a2bcab4..96b86f454ec 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -98,7 +98,7 @@
update_coverage()
START_PROCESSING(SSobj, src)
-/obj/machinery/camera/bullet_act(var/obj/item/projectile/P)
+/obj/machinery/camera/bullet_act(var/obj/projectile/P)
take_damage(P.get_structure_damage())
/obj/machinery/camera/legacy_ex_act(severity)
@@ -212,14 +212,14 @@
else if(W.damtype == BRUTE || W.damtype == BURN) //bashing cameras
user.setClickCooldown(user.get_attack_speed(W))
- if (W.force >= src.toughness)
+ if (W.damage_force >= src.toughness)
user.do_attack_animation(src)
visible_message("[src] has been [W.get_attack_verb(src, user)] with [W] by [user]!")
if (istype(W, /obj/item)) //is it even possible to get into attackby() with non-items?
var/obj/item/I = W
if (I.hitsound)
playsound(loc, I.hitsound, 50, 1, -1)
- take_damage(W.force)
+ take_damage(W.damage_force)
else
..()
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index 9eba1c3de54..34af11784c4 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -55,7 +55,7 @@
else
return
-/obj/machinery/computer/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/computer/bullet_act(var/obj/projectile/Proj)
if(prob(Proj.get_structure_damage()))
set_broken()
..()
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index ea1f96a3c3b..c51b2f561f8 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -54,9 +54,9 @@ Barricades
else
switch(W.damtype)
if("fire")
- health -= W.force * 1
+ health -= W.damage_force * 1
if("brute")
- health -= W.force * 0.75
+ health -= W.damage_force * 0.75
if(material == (get_material_by_name(MAT_WOOD) || get_material_by_name(MAT_SIFWOOD) || get_material_by_name(MAT_HARDWOOD)))
playsound(loc, 'sound/effects/woodcutting.ogg', 100, TRUE)
else
@@ -167,9 +167,9 @@ Barricades
else
switch(W.damtype)
if("fire")
- health -= W.force * 0.75
+ health -= W.damage_force * 0.75
if("brute")
- health -= W.force * 0.5
+ health -= W.damage_force * 0.5
playsound(src, 'sound/weapons/smash.ogg', 50, TRUE)
CheckHealth()
..()
diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm
index 84cd785d5f9..30ac445b4e5 100644
--- a/code/game/machinery/doors/blast_door.dm
+++ b/code/game/machinery/doors/blast_door.dm
@@ -152,12 +152,12 @@
user.setClickCooldown(user.get_attack_speed(W))
if(W.damtype == BRUTE || W.damtype == BURN)
user.do_attack_animation(src)
- if(W.force < min_force)
+ if(W.damage_force < min_force)
user.visible_message("\The [user] hits \the [src] with \the [W] with no visible effect.")
else
user.visible_message("\The [user] forcefully strikes \the [src] with \the [W]!")
playsound(src.loc, hitsound, 100, 1)
- take_damage(W.force*0.35) //it's a blast door, it should take a while. -Luke
+ take_damage(W.damage_force*0.35) //it's a blast door, it should take a while. -Luke
return
else if(istype(C, /obj/item/stack/material) && C.get_material_name() == "plasteel") // Repairing.
@@ -182,12 +182,12 @@
user.setClickCooldown(user.get_attack_speed(W))
if(W.damtype == BRUTE || W.damtype == BURN)
user.do_attack_animation(src)
- if(W.force < min_force) //No actual non-weapon item shouls have a force greater than the min_force, but let's include this just in case.
+ if(W.damage_force < min_force) //No actual non-weapon item shouls have a force greater than the min_force, but let's include this just in case.
user.visible_message("\The [user] hits \the [src] with \the [W] with no visible effect.")
else
user.visible_message("\The [user] forcefully strikes \the [src] with \the [W]!")
playsound(src.loc, hitsound, 100, 1)
- take_damage(W.force*0.15) //If the item isn't a weapon, let's make this take longer than usual to break it down.
+ take_damage(W.damage_force*0.15) //If the item isn't a weapon, let's make this take longer than usual to break it down.
return
// Proc: attack_alien()
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 993537da35f..2abf867b9df 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -166,7 +166,7 @@
else
do_animate("deny")
-/obj/machinery/door/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/door/bullet_act(var/obj/projectile/Proj)
..()
var/damage = Proj.get_structure_damage()
@@ -278,12 +278,12 @@
user.setClickCooldown(user.get_attack_speed(W))
if(W.damtype == BRUTE || W.damtype == BURN)
user.do_attack_animation(src)
- if(W.force < min_force)
+ if(W.damage_force < min_force)
user.visible_message("\The [user] hits \the [src] with \the [W] with no visible effect.")
else
user.visible_message("\The [user] forcefully strikes \the [src] with \the [W]!")
playsound(src.loc, hitsound, 100, 1)
- take_damage(W.force)
+ take_damage(W.damage_force)
return
if(src.operating > 0 || isrobot(user))
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 3960817880f..d1bbea8c7ad 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -250,7 +250,7 @@
//If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway)
if(src.density && istype(I, /obj/item) && !istype(I, /obj/item/card))
user.setClickCooldown(user.get_attack_speed(I))
- var/aforce = I.force
+ var/aforce = I.damage_force
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
visible_message("[src] was hit by [I].")
if(I.damtype == BRUTE || I.damtype == BURN)
diff --git a/code/game/machinery/floor_light.dm b/code/game/machinery/floor_light.dm
index ec0c969f773..251671e6df9 100644
--- a/code/game/machinery/floor_light.dm
+++ b/code/game/machinery/floor_light.dm
@@ -56,7 +56,7 @@ var/list/floor_light_cache = list()
src.light_color = newcolor
update_brightness()
visible_message(SPAN_NOTICE("\The [user] has changed \the [src] color."))
- else if(W.force && user.a_intent == "hurt")
+ else if(W.damage_force && user.a_intent == "hurt")
attack_hand(user)
return
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index 80a9fc51d51..e89d5bd83e0 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -8,7 +8,7 @@ Buildable meters
desc = "A pipe."
var/pipe_type
var/pipename
- force = 7
+ damage_force = 7
throw_force = 7
icon = 'icons/obj/pipe-item.dmi'
icon_state = "simple"
diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm
index aea45a68569..ff20e7ce286 100644
--- a/code/game/machinery/pointdefense.dm
+++ b/code/game/machinery/pointdefense.dm
@@ -265,7 +265,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense)
flick(src, "[initial(icon_state)]_off")
return
//We throw a laser but it doesnt have to hit for meteor to explode
- var/obj/item/projectile/beam/pointdefense/beam = new(get_turf(src))
+ var/obj/projectile/beam/pointdefense/beam = new(get_turf(src))
playsound(src, 'sound/weapons/mandalorian.ogg', 75, 1)
beam.launch_projectile(target = M.loc, user = src)
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index f3dec7dcd83..b4fdafc3c55 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -214,7 +214,7 @@
maxhealth = 200
turret_type = "industrial"
-/obj/machinery/porta_turret/industrial/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/porta_turret/industrial/bullet_act(obj/projectile/Proj)
var/damage = round(Proj.get_structure_damage() * 1.33)
if(!damage)
@@ -378,7 +378,7 @@
/obj/machinery/porta_turret/proc/setup()
var/obj/item/gun/energy/E = installation //All energy-based weapons are applicable
- var/obj/item/projectile/P = initial(E.projectile_type)
+ var/obj/projectile/P = initial(E.projectile_type)
//var/obj/item/ammo_casing/shottype = E.projectile_type
projectile = P
@@ -386,16 +386,16 @@
shot_sound = initial(P.fire_sound)
lethal_shot_sound = shot_sound
- if(istype(P, /obj/item/projectile/energy))
+ if(istype(P, /obj/projectile/energy))
icon_color = "orange"
- else if(istype(P, /obj/item/projectile/beam/stun))
+ else if(istype(P, /obj/projectile/beam/stun))
icon_color = "blue"
- else if(istype(P, /obj/item/projectile/beam/lasertag))
+ else if(istype(P, /obj/projectile/beam/lasertag))
icon_color = "blue"
- else if(istype(P, /obj/item/projectile/beam))
+ else if(istype(P, /obj/projectile/beam))
icon_color = "red"
else
@@ -409,30 +409,30 @@
switch(guntype)
if(/obj/item/gun/energy/gun/burst)
lethal_icon_color = "red"
- lethal_projectile = /obj/item/projectile/beam/burstlaser
+ lethal_projectile = /obj/projectile/beam/burstlaser
lethal_shot_sound = 'sound/weapons/Laser.ogg'
shot_delay = 1 SECOND
if(/obj/item/gun/energy/phasegun)
icon_color = "orange"
lethal_icon_color = "orange"
- lethal_projectile = /obj/item/projectile/energy/phase/heavy
+ lethal_projectile = /obj/projectile/energy/phase/heavy
shot_delay = 1 SECOND
if(/obj/item/gun/energy/gun)
lethal_icon_color = "red"
- lethal_projectile = /obj/item/projectile/beam //If it has, going to kill mode
+ lethal_projectile = /obj/projectile/beam //If it has, going to kill mode
lethal_shot_sound = 'sound/weapons/Laser.ogg'
if(/obj/item/gun/energy/gun/nuclear)
lethal_icon_color = "red"
- lethal_projectile = /obj/item/projectile/beam //If it has, going to kill mode
+ lethal_projectile = /obj/projectile/beam //If it has, going to kill mode
lethal_shot_sound = 'sound/weapons/Laser.ogg'
if(/obj/item/gun/energy/xray)
lethal_icon_color = "green"
- lethal_projectile = /obj/item/projectile/beam/xray
- projectile = /obj/item/projectile/beam/stun // Otherwise we fire xrays on both modes.
+ lethal_projectile = /obj/projectile/beam/xray
+ projectile = /obj/projectile/beam/stun // Otherwise we fire xrays on both modes.
lethal_shot_sound = 'sound/weapons/eluger.ogg'
shot_sound = 'sound/weapons/Taser.ogg'
@@ -606,8 +606,8 @@
else
//if the turret was attacked with the intention of harming it:
user.setClickCooldown(user.get_attack_speed(I))
- take_damage(I.force * 0.5)
- if(I.force * 0.5 > 1) //if the force of impact dealt at least 1 damage, the turret gets pissed off
+ take_damage(I.damage_force * 0.5)
+ if(I.damage_force * 0.5 > 1) //if the force of impact dealt at least 1 damage, the turret gets pissed off
if(!attacked && !emagged)
attacked = 1
spawn()
@@ -652,7 +652,7 @@
if(health <= 0)
die() //the death process :(
-/obj/machinery/porta_turret/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/porta_turret/bullet_act(obj/projectile/Proj)
var/damage = Proj.get_structure_damage()
if(!damage)
@@ -908,7 +908,7 @@
return
update_icon()
- var/obj/item/projectile/A
+ var/obj/projectile/A
if(emagged || lethal)
A = new lethal_projectile(loc)
playsound(loc, lethal_shot_sound, 75, 1)
diff --git a/code/game/mecha/combat/gorilla.dm b/code/game/mecha/combat/gorilla.dm
index 15645a3082a..cb21e192ff3 100644
--- a/code/game/mecha/combat/gorilla.dm
+++ b/code/game/mecha/combat/gorilla.dm
@@ -116,30 +116,30 @@
desc = "Precision German engineering!" // Why would you ever take this off the mech, anyway?
icon_state = "mecha_uac2"
equip_cooldown = 60 // 6 seconds
- projectile = /obj/item/projectile/bullet/cannon
+ projectile = /obj/projectile/bullet/cannon
fire_sound = 'sound/weapons/Gunshot_cannon.ogg'
projectiles = 1
projectile_energy_cost = 1000
salvageable = 0 // We don't want players ripping this off a dead mech. Could potentially be a prize for beating it if Devs bless me and someone offers a nerf idea.
-/obj/item/projectile/bullet/cannon
+/obj/projectile/bullet/cannon
name ="armor-piercing shell"
icon = 'icons/obj/projectiles.dmi'
icon_state = "shell"
damage = 1000 // In order to 1-hit any other mech and royally fuck anyone unfortunate enough to get in the way.
-/obj/item/projectile/bullet/cannon/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/bullet/cannon/on_hit(var/atom/target, var/blocked = 0)
explosion(target, 0, 0, 2, 4)
return 1
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon/weak
name = "8.8 cm KwK 36"
equip_cooldown = 120 // 12 seconds.
- projectile = /obj/item/projectile/bullet/cannon/weak
+ projectile = /obj/projectile/bullet/cannon/weak
projectile_energy_cost = 400
salvageable = 1
-/obj/item/projectile/bullet/cannon/weak
+/obj/projectile/bullet/cannon/weak
name ="canister shell"
icon_state = "canister"
damage = 120 //Do not get fucking shot.
@@ -149,7 +149,7 @@
name = "Maschinengewehr 60"
icon_state = "mecha_uac2"
equip_cooldown = 10
- projectile = /obj/item/projectile/bullet/midbullet2
+ projectile = /obj/projectile/bullet/midbullet2
fire_sound = 'sound/weapons/mg42.ogg'
projectiles = 1000
projectiles_per_shot = 5
diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm
index b122268d6c9..dcead8fe76a 100644
--- a/code/game/mecha/combat/phazon.dm
+++ b/code/game/mecha/combat/phazon.dm
@@ -119,13 +119,13 @@
visible_message("The [src.name] appears to flicker, before its silhouette stabilizes!")
return
-/obj/mecha/combat/phazon/janus/dynbulletdamage(var/obj/item/projectile/Proj)
- if((Proj.damage && !Proj.nodamage) && !istype(Proj, /obj/item/projectile/beam) && prob(max(1, 33 - round(Proj.damage / 4))))
+/obj/mecha/combat/phazon/janus/dynbulletdamage(var/obj/projectile/Proj)
+ if((Proj.damage && !Proj.nodamage) && !istype(Proj, /obj/projectile/beam) && prob(max(1, 33 - round(Proj.damage / 4))))
src.occupant_message("The armor absorbs the incoming projectile's force, negating it!")
src.visible_message("The [src.name] absorbs the incoming projectile's force, negating it!")
src.log_append_to_last("Armor negated.")
return
- else if((Proj.damage && !Proj.nodamage) && istype(Proj, /obj/item/projectile/beam) && prob(max(1, (50 - round((Proj.damage / 2) * damage_absorption["laser"])) * (1 - (Proj.armor_penetration / 100))))) // Base 50% chance to deflect a beam,lowered by half the beam's damage scaled to laser absorption, then multiplied by the remaining percent of non-penetrated armor, with a minimum chance of 1%.
+ else if((Proj.damage && !Proj.nodamage) && istype(Proj, /obj/projectile/beam) && prob(max(1, (50 - round((Proj.damage / 2) * damage_absorption["laser"])) * (1 - (Proj.armor_penetration / 100))))) // Base 50% chance to deflect a beam,lowered by half the beam's damage scaled to laser absorption, then multiplied by the remaining percent of non-penetrated armor, with a minimum chance of 1%.
src.occupant_message("The armor reflects the incoming beam, negating it!")
src.visible_message("The [src.name] reflects the incoming beam, negating it!")
src.log_append_to_last("Armor reflected.")
@@ -134,7 +134,7 @@
..()
/obj/mecha/combat/phazon/janus/dynattackby(obj/item/W as obj, mob/user as mob)
- if(prob(max(1, (50 - round((W.force / 2) * damage_absorption["brute"])) * (1 - (W.armor_penetration / 100)))))
+ if(prob(max(1, (50 - round((W.damage_force / 2) * damage_absorption["brute"])) * (1 - (W.armor_penetration / 100)))))
src.occupant_message("The armor absorbs the incoming attack's force, negating it!")
src.visible_message("The [src.name] absorbs the incoming attack's force, negating it!")
src.log_append_to_last("Armor absorbed.")
diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm
index 3593d5818bb..0a500ddd06d 100644
--- a/code/game/mecha/equipment/mecha_equipment.dm
+++ b/code/game/mecha/equipment/mecha_equipment.dm
@@ -12,7 +12,7 @@
name = "mecha equipment"
icon = 'icons/mecha/mecha_equipment.dmi'
icon_state = "mecha_equip"
- force = 5
+ damage_force = 5
origin_tech = list(TECH_MATERIAL = 2)
description_info = "Some equipment may gain new abilities or advantages if equipped to certain types of Exosuits."
var/equip_cooldown = 0
diff --git a/code/game/mecha/equipment/mecha_equipment_dynamicprocs.dm b/code/game/mecha/equipment/mecha_equipment_dynamicprocs.dm
index 17c4d5dc470..32ef11fc9f1 100644
--- a/code/game/mecha/equipment/mecha_equipment_dynamicprocs.dm
+++ b/code/game/mecha/equipment/mecha_equipment_dynamicprocs.dm
@@ -11,7 +11,7 @@
return max(0, inc_damage)
// Used for projectile impacts from bullet_act.
-/obj/item/mecha_parts/mecha_equipment/proc/handle_projectile_contact(var/obj/item/projectile/Proj, var/inc_damage = 0)
+/obj/item/mecha_parts/mecha_equipment/proc/handle_projectile_contact(var/obj/projectile/Proj, var/inc_damage = 0)
return max(0, inc_damage)
// Used for on-movement actions.
diff --git a/code/game/mecha/equipment/tools/armor_melee.dm b/code/game/mecha/equipment/tools/armor_melee.dm
index cd0ca2513d2..95efab2c7f2 100644
--- a/code/game/mecha/equipment/tools/armor_melee.dm
+++ b/code/game/mecha/equipment/tools/armor_melee.dm
@@ -63,7 +63,7 @@
else
chassis.occupant_message("\The [user] hits [chassis] with [W].")
user.visible_message("\The [user] hits [chassis] with [W].", "You hit [src] with [W].")
- chassis.take_damage(round(W.force*damage_coeff),W.damtype)
+ chassis.take_damage(round(W.damage_force*damage_coeff),W.damtype)
chassis.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
set_ready_state(0)
chassis.use_power(energy_drain)
diff --git a/code/game/mecha/equipment/tools/armor_ranged.dm b/code/game/mecha/equipment/tools/armor_ranged.dm
index 21c97d31696..be202e0133a 100644
--- a/code/game/mecha/equipment/tools/armor_ranged.dm
+++ b/code/game/mecha/equipment/tools/armor_ranged.dm
@@ -13,8 +13,8 @@
equip_type = EQUIP_HULL
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/handle_projectile_contact(var/obj/item/projectile/Proj, var/inc_damage)
- if(istype(Proj, /obj/item/projectile/test))
+/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/handle_projectile_contact(var/obj/projectile/Proj, var/inc_damage)
+ if(istype(Proj, /obj/projectile/test))
return inc_damage// Don't care about test projectiles, just what comes after them
if(!action_checks(src))
return inc_damage
@@ -70,8 +70,8 @@
..()
return
-/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/proc/dynbulletdamage(var/obj/item/projectile/Proj)
- if(istype(Proj, /obj/item/projectile/test))
+/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/proc/dynbulletdamage(var/obj/projectile/Proj)
+ if(istype(Proj, /obj/projectile/test))
return // Don't care about test projectiles, just what comes after them
if(!action_checks(src))
return chassis.dynbulletdamage(Proj)
@@ -80,7 +80,7 @@
chassis.visible_message("The [chassis.name] armor deflects the projectile")
chassis.log_append_to_last("Armor saved.")
else
- chassis.take_damage(round(Proj.damage*src.damage_coeff),Proj.check_armour)
+ chassis.take_damage(round(Proj.damage*src.damage_coeff),Proj.damage_flag)
chassis.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
Proj.on_hit(chassis)
set_ready_state(0)
diff --git a/code/game/mecha/equipment/tools/drill.dm b/code/game/mecha/equipment/tools/drill.dm
index d77d66669c2..e7b264284cb 100644
--- a/code/game/mecha/equipment/tools/drill.dm
+++ b/code/game/mecha/equipment/tools/drill.dm
@@ -4,7 +4,7 @@
icon_state = "mecha_drill"
equip_cooldown = 30
energy_drain = 10
- force = 15
+ damage_force = 15
var/advanced = 0 //Determines if you can pierce the heavens or not. Used in diamond drill.
required_type = list(/obj/mecha/working/ripley)
@@ -59,7 +59,7 @@
/obj/item/mecha_parts/mecha_equipment/tool/drill/proc/drill_mob(mob/living/target, mob/user)
add_attack_logs(user, target, "attacked", "[name]", "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])")
- var/drill_force = force //Couldn't manage it otherwise.
+ var/drill_force = damage_force //Couldn't manage it otherwise.
if(ishuman(target))
target.apply_damage(drill_force, BRUTE)
return
@@ -83,7 +83,7 @@
icon_state = "mecha_diamond_drill"
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
equip_cooldown = 10
- force = 15
+ damage_force = 15
advanced = 1
/obj/item/mecha_parts/mecha_equipment/tool/drill/bore
@@ -92,7 +92,7 @@
icon_state = "mecha_bore"
equip_cooldown = 5 SECONDS
energy_drain = 30
- force = 20
+ damage_force = 20
required_type = list(/obj/mecha/working/ripley)
/obj/item/mecha_parts/mecha_equipment/tool/drill/bore/action(atom/target)
diff --git a/code/game/mecha/equipment/tools/medigun_vr.dm b/code/game/mecha/equipment/tools/medigun_vr.dm
index 43f66429319..8d662a3d8bb 100644
--- a/code/game/mecha/equipment/tools/medigun_vr.dm
+++ b/code/game/mecha/equipment/tools/medigun_vr.dm
@@ -5,7 +5,7 @@
icon_state = "medbeam"
icon = 'icons/mecha/mecha_equipment_vr.dmi'
energy_drain = 1000
- projectile = /obj/item/projectile/beam/medigun
+ projectile = /obj/projectile/beam/medigun
fire_sound = 'sound/weapons/eluger.ogg'
equip_type = EQUIP_UTILITY
origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_BIO = 6, TECH_POWER = 6)
diff --git a/code/game/mecha/equipment/weapons/ballistic/automatic.dm b/code/game/mecha/equipment/weapons/ballistic/automatic.dm
index 022fe515ee7..7bc1b1c89d1 100644
--- a/code/game/mecha/equipment/weapons/ballistic/automatic.dm
+++ b/code/game/mecha/equipment/weapons/ballistic/automatic.dm
@@ -3,7 +3,7 @@
desc = "A superior version of the standard Hephaestus Autocannon MK2 design."
icon_state = "mecha_uac2"
equip_cooldown = 10
- projectile = /obj/item/projectile/bullet/pistol/medium
+ projectile = /obj/projectile/bullet/pistol/medium
fire_sound = 'sound/weapons/Gunshot_machinegun.ogg'
projectiles = 30 //10 bursts, matching the Scattershot's 10. Also, conveniently, doesn't eat your powercell when reloading like 300 bullets does.
projectiles_per_shot = 3
@@ -16,7 +16,7 @@
desc = "The cross between a jackhammer and a whole lot of zipguns."
icon_state = "mecha_uac2-rig"
equip_cooldown = 12
- projectile = /obj/item/projectile/bullet/pistol
+ projectile = /obj/projectile/bullet/pistol
deviation = 0.5
equip_type = EQUIP_UTILITY
diff --git a/code/game/mecha/equipment/weapons/ballistic/mortar.dm b/code/game/mecha/equipment/weapons/ballistic/mortar.dm
index 9fb73a80bd6..b57a6804d0b 100644
--- a/code/game/mecha/equipment/weapons/ballistic/mortar.dm
+++ b/code/game/mecha/equipment/weapons/ballistic/mortar.dm
@@ -8,7 +8,7 @@
fire_volume = 100
projectiles = 3
deviation = 0.6
- projectile = /obj/item/projectile/arc/fragmentation/mortar
+ projectile = /obj/projectile/arc/fragmentation/mortar
projectile_energy_cost = 600
step_delay = 2
diff --git a/code/game/mecha/equipment/weapons/ballistic/shotgun.dm b/code/game/mecha/equipment/weapons/ballistic/shotgun.dm
index 2ff3dd7f34d..d01c327341b 100644
--- a/code/game/mecha/equipment/weapons/ballistic/shotgun.dm
+++ b/code/game/mecha/equipment/weapons/ballistic/shotgun.dm
@@ -3,7 +3,7 @@
desc = "A massive shotgun designed to fill a large area with pellets."
icon_state = "mecha_scatter"
equip_cooldown = 20
- projectile = /obj/item/projectile/bullet/pellet/shotgun/flak
+ projectile = /obj/projectile/bullet/pellet/shotgun/flak
fire_sound = 'sound/weapons/Gunshot_shotgun.ogg'
fire_volume = 80
projectiles = 40
diff --git a/code/game/mecha/equipment/weapons/energy/ion.dm b/code/game/mecha/equipment/weapons/energy/ion.dm
index 9c1af273a28..c1d13206cda 100644
--- a/code/game/mecha/equipment/weapons/energy/ion.dm
+++ b/code/game/mecha/equipment/weapons/energy/ion.dm
@@ -4,7 +4,7 @@
desc = "An upscaled variant of anti-mechanical weaponry constructed by NT, such as the EW Halicon."
icon_state = "mecha_ion"
energy_drain = 120
- projectile = /obj/item/projectile/ion
+ projectile = /obj/projectile/ion
fire_sound = 'sound/weapons/Laser.ogg'
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 4, TECH_MAGNET = 4)
@@ -15,6 +15,6 @@
desc = "A tesla coil modified to amplify an ionic wave, and use it as a projectile."
icon_state = "mecha_ion-rig"
energy_drain = 100
- projectile = /obj/item/projectile/ion/pistol
+ projectile = /obj/projectile/ion/pistol
equip_type = EQUIP_UTILITY
diff --git a/code/game/mecha/equipment/weapons/energy/laser.dm b/code/game/mecha/equipment/weapons/energy/laser.dm
index 962c39269a0..dcfb617d2ff 100644
--- a/code/game/mecha/equipment/weapons/energy/laser.dm
+++ b/code/game/mecha/equipment/weapons/energy/laser.dm
@@ -4,7 +4,7 @@
desc = "A laser carbine's firing system mounted on a high-powered exosuit weapon socket."
icon_state = "mecha_laser"
energy_drain = 30
- projectile = /obj/item/projectile/beam
+ projectile = /obj/projectile/beam
fire_sound = 'sound/weapons/Laser.ogg'
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 3, TECH_MAGNET = 3)
@@ -15,7 +15,7 @@
desc = "A large, mounted variant of the anti-armor xray rifle."
icon_state = "mecha_xray"
energy_drain = 150
- projectile = /obj/item/projectile/beam/xray
+ projectile = /obj/projectile/beam/xray
fire_sound = 'sound/weapons/eluger.ogg'
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_POWER = 3)
@@ -35,7 +35,7 @@
desc = "While not regulation, this inefficient weapon can be attached to working exo-suits in desperate, or malicious, times."
icon_state = "mecha_laser-rig"
energy_drain = 60
- projectile = /obj/item/projectile/beam
+ projectile = /obj/projectile/beam
fire_sound = 'sound/weapons/Laser.ogg'
required_type = list(/obj/mecha/combat, /obj/mecha/working)
@@ -49,7 +49,7 @@
desc = "In the Solaris, the lasing medium is enclosed in a tube lined with plutonium-239 and subjected to extreme neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with massive laser volumes!"
icon_state = "mecha_laser"
energy_drain = 60
- projectile = /obj/item/projectile/beam/heavylaser
+ projectile = /obj/projectile/beam/heavylaser
fire_sound = 'sound/weapons/lasercannonfire.ogg'
step_delay = 1
@@ -62,7 +62,7 @@
desc = "While not regulation, this mining tool can be used as an inefficient weapon on working exo-suits in desperate, or malicious, times."
icon_state = "mecha_emitter"
energy_drain = 80
- projectile = /obj/item/projectile/beam/heavylaser/fakeemitter
+ projectile = /obj/projectile/beam/heavylaser/fakeemitter
fire_sound = 'sound/weapons/emitter.ogg'
equip_type = EQUIP_UTILITY
diff --git a/code/game/mecha/equipment/weapons/energy/phased.dm b/code/game/mecha/equipment/weapons/energy/phased.dm
index ef7646e8bb3..1363661a73c 100644
--- a/code/game/mecha/equipment/weapons/energy/phased.dm
+++ b/code/game/mecha/equipment/weapons/energy/phased.dm
@@ -5,7 +5,7 @@
description_fluff = "Essentially an Orion mounted inside a modified Gaia case."
icon_state = "mecha_phase"
energy_drain = 25
- projectile = /obj/item/projectile/energy/phase/heavy
+ projectile = /obj/projectile/energy/phase/heavy
fire_sound = 'sound/weapons/Taser.ogg'
equip_type = EQUIP_UTILITY
diff --git a/code/game/mecha/equipment/weapons/energy/pulse.dm b/code/game/mecha/equipment/weapons/energy/pulse.dm
index ecc3cb12ff0..c575a01e3aa 100644
--- a/code/game/mecha/equipment/weapons/energy/pulse.dm
+++ b/code/game/mecha/equipment/weapons/energy/pulse.dm
@@ -5,15 +5,15 @@
icon_state = "mecha_pulse"
energy_drain = 120
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 6, TECH_POWER = 4)
- projectile = /obj/item/projectile/beam/pulse/heavy
+ projectile = /obj/projectile/beam/pulse/heavy
fire_sound = 'sound/weapons/gauss_shoot.ogg'
-/obj/item/projectile/beam/pulse/heavy
+/obj/projectile/beam/pulse/heavy
name = "heavy pulse laser"
icon_state = "pulse1_bl"
var/life = 20
-/obj/item/projectile/beam/pulse/heavy/Bump(atom/A)
+/obj/projectile/beam/pulse/heavy/Bump(atom/A)
A.bullet_act(src, def_zone)
src.life -= 10
if(life <= 0)
diff --git a/code/game/mecha/equipment/weapons/energy/stun.dm b/code/game/mecha/equipment/weapons/energy/stun.dm
index 19e0e59d5f3..1334a766fe5 100644
--- a/code/game/mecha/equipment/weapons/energy/stun.dm
+++ b/code/game/mecha/equipment/weapons/energy/stun.dm
@@ -4,7 +4,7 @@
icon_state = "mecha_taser"
energy_drain = 20
equip_cooldown = 8
- projectile = /obj/item/projectile/beam/stun
+ projectile = /obj/projectile/beam/stun
fire_sound = 'sound/weapons/Taser.ogg'
/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser/rigged
@@ -12,6 +12,6 @@
desc = "A vaguely functional taser analog, inside an extinguisher casing."
icon_state = "mecha_taser-rig"
energy_drain = 30
- projectile = /obj/item/projectile/beam/stun/weak
+ projectile = /obj/projectile/beam/stun/weak
equip_type = EQUIP_UTILITY
diff --git a/code/game/mecha/equipment/weapons/explosive/missile.dm b/code/game/mecha/equipment/weapons/explosive/missile.dm
index 6f0485fdb03..08cb56d48da 100644
--- a/code/game/mecha/equipment/weapons/explosive/missile.dm
+++ b/code/game/mecha/equipment/weapons/explosive/missile.dm
@@ -31,7 +31,7 @@
name = "\improper SRM-8 missile rack"
desc = "A missile battery that holds eight missiles."
icon_state = "mecha_missilerack"
- projectile = /obj/item/projectile/bullet/srmrocket
+ projectile = /obj/projectile/bullet/srmrocket
fire_sound = 'sound/weapons/rpg.ogg'
projectiles = 8
projectile_energy_cost = 1000
@@ -42,7 +42,7 @@
name = "jury-rigged rocket pod"
desc = "A series of pipes, tubes, and cables that resembles a rocket pod."
icon_state = "mecha_missilerack-rig"
- projectile = /obj/item/projectile/bullet/srmrocket/weak
+ projectile = /obj/projectile/bullet/srmrocket/weak
projectiles = 3
projectile_energy_cost = 800
diff --git a/code/game/mecha/equipment/weapons/fire/flamethrower.dm b/code/game/mecha/equipment/weapons/fire/flamethrower.dm
index 5e2d79615c6..69e3761ca04 100644
--- a/code/game/mecha/equipment/weapons/fire/flamethrower.dm
+++ b/code/game/mecha/equipment/weapons/fire/flamethrower.dm
@@ -9,7 +9,7 @@
step_delay = 0.5
- projectile = /obj/item/projectile/bullet/incendiary/flamethrower/large
+ projectile = /obj/projectile/bullet/incendiary/flamethrower/large
fire_sound = 'sound/weapons/towelwipe.ogg'
origin_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 6, TECH_PHORON = 4, TECH_ILLEGAL = 4)
@@ -22,7 +22,7 @@
energy_drain = 50
required_type = list(/obj/mecha/combat, /obj/mecha/working)
- projectile = /obj/item/projectile/bullet/incendiary/flamethrower
+ projectile = /obj/projectile/bullet/incendiary/flamethrower
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_ILLEGAL = 2)
diff --git a/code/game/mecha/equipment/weapons/fire/incendiary.dm b/code/game/mecha/equipment/weapons/fire/incendiary.dm
index ff49d42016f..afb7758546e 100644
--- a/code/game/mecha/equipment/weapons/fire/incendiary.dm
+++ b/code/game/mecha/equipment/weapons/fire/incendiary.dm
@@ -8,7 +8,7 @@
description_fluff = "A weapon designed by Hephaestus Industries, the DR-AC 3's design was plagued by prototype faults including but not limited to: Spontaneous combustion, spontaneous detonation, and excessive collateral conflagration."
icon_state = "mecha_drac3"
equip_cooldown = 20
- projectile = /obj/item/projectile/bullet/incendiary
+ projectile = /obj/projectile/bullet/incendiary
fire_sound = 'sound/weapons/Gunshot_machinegun.ogg'
projectiles = 30
projectiles_per_shot = 2
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 5fd50abec3e..7a0fde994e0 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -69,8 +69,8 @@
return
/obj/item/mecha_parts/mecha_equipment/weapon/proc/Fire(atom/A, atom/target, params)
- if(istype(A, /obj/item/projectile)) // Sanity.
- var/obj/item/projectile/P = A
+ if(istype(A, /obj/projectile)) // Sanity.
+ var/obj/projectile/P = A
P.dispersion = deviation
process_accuracy(P, chassis.occupant, target)
P.launch_projectile_from_turf(target, chassis.get_pilot_zone_sel(), chassis.occupant, params)
@@ -79,7 +79,7 @@
AM.throw_at_old(target, 7, 1, chassis)
/obj/item/mecha_parts/mecha_equipment/weapon/proc/process_accuracy(obj/projectile, mob/living/user, atom/target)
- var/obj/item/projectile/P = projectile
+ var/obj/projectile/P = projectile
if(!istype(P))
return
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index f51452f72de..d0ff9313b85 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -1129,18 +1129,18 @@
return
-/obj/mecha/bullet_act(var/obj/item/projectile/Proj) //wrapper
- if(istype(Proj, /obj/item/projectile/test))
- var/obj/item/projectile/test/Test = Proj
+/obj/mecha/bullet_act(var/obj/projectile/Proj) //wrapper
+ if(istype(Proj, /obj/projectile/test))
+ var/obj/projectile/test/Test = Proj
Test.hit |= occupant // Register a hit on the occupant, for things like turrets, or in simple-mob cases stopping friendly fire in firing line mode.
return
- src.log_message("Hit by projectile. Type: [Proj.name]([Proj.check_armour]).",1)
+ src.log_message("Hit by projectile. Type: [Proj.name]([Proj.damage_flag]).",1)
call((proc_res["dynbulletdamage"]||src), "dynbulletdamage")(Proj) //calls equipment
..()
return
-/obj/mecha/proc/dynbulletdamage(var/obj/item/projectile/Proj)
+/obj/mecha/proc/dynbulletdamage(var/obj/projectile/Proj)
var/obj/item/mecha_parts/component/armor/ArmC = internal_components[MECH_ARMOR]
var/temp_deflect_chance = deflect_chance
@@ -1171,7 +1171,7 @@
if(!(Proj.nodamage))
var/ignore_threshold
- if(istype(Proj, /obj/item/projectile/beam/pulse)) //ATM, this is literally only for the pulse rifles used mostly by deathsquads.
+ if(istype(Proj, /obj/projectile/beam/pulse)) //ATM, this is literally only for the pulse rifles used mostly by deathsquads.
ignore_threshold = 1
var/pass_damage = Proj.damage
@@ -1195,7 +1195,7 @@
pass_damage_reduc_mod = 1
pass_damage = (pass_damage_reduc_mod*pass_damage)//Apply damage reduction before usage.
- src.take_damage(pass_damage, Proj.check_armour) //The take_damage() proc handles armor values
+ src.take_damage(pass_damage, Proj.damage_flag) //The take_damage() proc handles armor values
if(prob(25))
spark_system.start()
if(pass_damage > internal_damage_minimum) //Only decently painful attacks trigger a chance of mech damage.
@@ -1324,7 +1324,7 @@
to_chat(user, "\The [W] bounces off [src.name].")
src.log_append_to_last("Armor saved.")
- else if(W.force < temp_damage_minimum) //Is your attack too PATHETIC to do anything. 3 damage to a person shouldn't do anything to a mech.
+ else if(W.damage_force < temp_damage_minimum) //Is your attack too PATHETIC to do anything. 3 damage to a person shouldn't do anything to a mech.
src.occupant_message("\The [W] bounces off the armor.")
src.visible_message("\The [W] bounces off \the [src] armor")
return
@@ -1339,7 +1339,7 @@
src.occupant_message("[user] hits [src] with [W].")
user.visible_message("[user] hits [src] with [W].", "You hit [src] with [W].")
- var/pass_damage = W.force
+ var/pass_damage = W.damage_force
pass_damage = (pass_damage*pass_damage_reduc_mod) //Apply the reduction of damage from not having enough armor penetration. This is not regular armor values at play.
for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment)
pass_damage = ME.handle_projectile_contact(W, user, pass_damage)
@@ -1542,7 +1542,7 @@
else
src.occupant_message("[user] hits [src] with [W].")
user.visible_message("[user] hits [src] with [W].", "You hit [src] with [W].")
- src.take_damage(W.force,W.damtype)
+ src.take_damage(W.damage_force,W.damtype)
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
*/
return
diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm
index b7c07dd6266..777623db36f 100644
--- a/code/game/mecha/mecha_wreckage.dm
+++ b/code/game/mecha/mecha_wreckage.dm
@@ -26,7 +26,7 @@
qdel(src)
return
-/obj/effect/decal/mecha_wreckage/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/decal/mecha_wreckage/bullet_act(var/obj/projectile/Proj)
return
diff --git a/code/game/mecha/micro/micro_equipment.dm b/code/game/mecha/micro/micro_equipment.dm
index a45116f29ab..201bd1e795e 100644
--- a/code/game/mecha/micro/micro_equipment.dm
+++ b/code/game/mecha/micro/micro_equipment.dm
@@ -12,7 +12,7 @@
icon = 'icons/mecha/mecha_equipment_vr.dmi'
icon_state = "micromech_laser"
energy_drain = 50
- projectile = /obj/item/projectile/beam
+ projectile = /obj/projectile/beam
fire_sound = 'sound/weapons/Laser.ogg'
equip_type = EQUIP_MICRO_WEAPON
required_type = list(/obj/mecha/micro/sec)
@@ -25,7 +25,7 @@
icon = 'icons/mecha/mecha_equipment_vr.dmi'
icon_state = "micromech_lasercannon"
energy_drain = 120
- projectile = /obj/item/projectile/beam/heavylaser
+ projectile = /obj/projectile/beam/heavylaser
fire_sound = 'sound/weapons/lasercannonfire.ogg'
equip_type = EQUIP_MICRO_WEAPON
required_type = list(/obj/mecha/micro/sec)
@@ -38,7 +38,7 @@
icon_state = "micromech_taser"
energy_drain = 40
equip_cooldown = 10
- projectile = /obj/item/projectile/beam/stun
+ projectile = /obj/projectile/beam/stun
fire_sound = 'sound/weapons/Taser.ogg'
equip_type = EQUIP_MICRO_WEAPON
required_type = list(/obj/mecha/micro/sec)
@@ -51,7 +51,7 @@
icon_state = "micromech_shotgun"
equip_cooldown = 15
var/mode = 0 //0 - buckshot, 1 - beanbag, 2 - slug.
- projectile = /obj/item/projectile/bullet/pellet/shotgun
+ projectile = /obj/projectile/bullet/pellet/shotgun
fire_sound = 'sound/weapons/Gunshot_shotgun.ogg'
fire_volume = 80
projectiles = 6
@@ -68,13 +68,13 @@
switch(mode)
if(0)
occupant_message("Now firing buckshot.")
- projectile = /obj/item/projectile/bullet/pellet/shotgun
+ projectile = /obj/projectile/bullet/pellet/shotgun
if(1)
occupant_message("Now firing beanbags.")
- projectile = /obj/item/projectile/bullet/shotgun/beanbag
+ projectile = /obj/projectile/bullet/shotgun/beanbag
if(2)
occupant_message("Now firing slugs.")
- projectile = /obj/item/projectile/bullet/shotgun
+ projectile = /obj/projectile/bullet/shotgun
return
@@ -109,7 +109,7 @@
icon_state = "microdrill"
equip_cooldown = 30
energy_drain = 10
- force = 15
+ damage_force = 15
equip_type = EQUIP_MICRO_UTILITY
required_type = list(/obj/mecha/micro/utility)
diff --git a/code/game/objects/effects/alien/aliens.dm b/code/game/objects/effects/alien/aliens.dm
index 0a6188bc1a1..242adbfffe5 100644
--- a/code/game/objects/effects/alien/aliens.dm
+++ b/code/game/objects/effects/alien/aliens.dm
@@ -58,7 +58,7 @@
qdel(src)
return
-/obj/effect/alien/resin/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/alien/resin/bullet_act(var/obj/projectile/Proj)
health -= Proj.damage
..()
healthcheck()
@@ -133,7 +133,7 @@
/obj/effect/alien/resin/attackby(obj/item/W as obj, mob/user as mob)
user.setClickCooldown(user.get_attack_speed(W))
- var/aforce = W.force
+ var/aforce = W.damage_force
health = max(0, health - aforce)
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
healthcheck()
@@ -326,7 +326,7 @@ Alien plants should do something if theres a lot of poison
user.setClickCooldown(user.get_attack_speed(W))
visible_message("\The [src] have been [W.get_attack_verb(src, user)] with \the [W][(user ? " by [user]." : ".")]")
- var/damage = W.force / 4.0
+ var/damage = W.damage_force / 4.0
if(istype(W, /obj/item/weldingtool))
var/obj/item/weldingtool/WT = W
@@ -502,7 +502,7 @@ Alien plants should do something if theres a lot of poison
break
return 1
-/obj/effect/alien/egg/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/alien/egg/bullet_act(var/obj/projectile/Proj)
health -= Proj.damage
..()
healthcheck()
@@ -527,7 +527,7 @@ Alien plants should do something if theres a lot of poison
Burst()
return
visible_message("\The [src] has been [W.get_attack_verb(src, user)] with \the [W][(user ? " by [user]." : ".")]")
- var/damage = W.force / 4.0
+ var/damage = W.damage_force / 4.0
if(istype(W, /obj/item/weldingtool))
var/obj/item/weldingtool/WT = W
diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm
index 31b6dc07961..113ae4f0837 100644
--- a/code/game/objects/effects/chem/foam.dm
+++ b/code/game/objects/effects/chem/foam.dm
@@ -165,8 +165,8 @@
/obj/structure/foamedmetal/legacy_ex_act(severity)
qdel(src)
-/obj/structure/foamedmetal/bullet_act(var/obj/item/projectile/P)
- if(istype(P, /obj/item/projectile/test))
+/obj/structure/foamedmetal/bullet_act(var/obj/projectile/P)
+ if(istype(P, /obj/projectile/test))
return
else if(metal == 1 || prob(50))
qdel(src)
@@ -188,7 +188,7 @@
qdel(src)
return
- if(prob(I.force * 20 - metal * 25))
+ if(prob(I.damage_force * 20 - metal * 25))
user.visible_message("[user] smashes through the foamed metal.", "You smash through the foamed metal with \the [I].")
qdel(src)
else
diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm
index 88af3eb4d65..f0dcb672453 100644
--- a/code/game/objects/effects/decals/contraband.dm
+++ b/code/game/objects/effects/decals/contraband.dm
@@ -5,7 +5,7 @@
name = "contraband item"
desc = "You probably shouldn't be holding this."
icon = 'icons/obj/contraband.dmi'
- force = 0
+ damage_force = 0
/obj/item/contraband/poster
diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm
index cea43b8a4fb..ded7b19719f 100644
--- a/code/game/objects/effects/effect_system.dm
+++ b/code/game/objects/effects/effect_system.dm
@@ -237,8 +237,8 @@ steam.start() -- spawns the effect
/* Not feasile until a later date
/obj/effect/particle_effect/smoke/bad/Crossed(atom/movable/M as mob|obj)
..()
- if(istype(M, /obj/item/projectile/beam))
- var/obj/item/projectile/beam/B = M
+ if(istype(M, /obj/projectile/beam))
+ var/obj/projectile/beam/B = M
if(!(B in projectiles))
B.damage = (B.damage/2)
projectiles += B
@@ -246,7 +246,7 @@ steam.start() -- spawns the effect
to_chat(world, "Damage is: [B.damage]")
return 1
-/obj/effect/particle_effect/smoke/bad/proc/on_projectile_delete(obj/item/projectile/beam/proj)
+/obj/effect/particle_effect/smoke/bad/proc/on_projectile_delete(obj/projectile/beam/proj)
projectiles -= proj
*/
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index 259475ea8c0..56783531d68 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -154,7 +154,7 @@
/obj/effect/mine/frag
mineitemtype = /obj/item/mine/frag
- var/fragment_types = list(/obj/item/projectile/bullet/pellet/fragment)
+ var/fragment_types = list(/obj/projectile/bullet/pellet/fragment)
var/num_fragments = 20 //total number of fragments produced by the grenade
//The radius of the circle used to launch projectiles. Lower values mean less projectiles are used but if set too low gaps may appear in the spread pattern
var/spread_range = 7
@@ -167,7 +167,7 @@
var/turf/O = get_turf(src)
if(!O)
return
- src.fragmentate(O, 20, 7, list(/obj/item/projectile/bullet/pellet/fragment)) //only 20 weak fragments because you're stepping directly on it
+ src.fragmentate(O, 20, 7, list(/obj/projectile/bullet/pellet/fragment)) //only 20 weak fragments because you're stepping directly on it
visible_message("\The [src.name] detonates!")
spawn(0)
qdel(s)
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index 9e04f671516..d5659f4b3c8 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -25,7 +25,7 @@
visible_message("\The [src] has been [W.get_attack_verb(src, user)] with \the [W][(user ? " by [user]." : ".")]")
- var/damage = W.force / 4.0
+ var/damage = W.damage_force / 4.0
if(istype(W, /obj/item/weldingtool))
var/obj/item/weldingtool/WT = W
@@ -37,7 +37,7 @@
health -= damage
healthcheck()
-/obj/effect/spider/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/spider/bullet_act(var/obj/projectile/Proj)
..()
health -= Proj.get_structure_damage()
healthcheck()
@@ -67,7 +67,7 @@
if(prob(50))
to_chat(mover, SPAN_WARNING( "You get stuck in \the [src] for a moment."))
return FALSE
- else if(istype(mover, /obj/item/projectile))
+ else if(istype(mover, /obj/projectile))
return prob(30)
return TRUE
diff --git a/code/game/objects/effects/traps.dm b/code/game/objects/effects/traps.dm
index a70f2f0f81c..f2cbe24bb93 100644
--- a/code/game/objects/effects/traps.dm
+++ b/code/game/objects/effects/traps.dm
@@ -338,7 +338,7 @@ Add those other swinging traps you mentioned above!
playsound(src.loc, projectile_sound, 25, 1)
- var/obj/item/projectile/bullet/shotgun/stake/P = get_projectile()
+ var/obj/projectile/bullet/shotgun/stake/P = get_projectile()
//P.firer = src
P.fire(dir2angle(dir))
@@ -382,32 +382,32 @@ Add those other swinging traps you mentioned above!
//Stake Launcher
/obj/effect/trap/launcher/stake
- projectile_type = /obj/item/projectile/bullet/shotgun/stake
+ projectile_type = /obj/projectile/bullet/shotgun/stake
projectile_sound = 'sound/weapons/punchmiss.ogg'
//Dart Launcher
/obj/effect/trap/launcher/dart
- projectile_type = /obj/item/projectile/energy/bolt
+ projectile_type = /obj/projectile/energy/bolt
projectile_sound = 'sound/weapons/slice.ogg'
//Fireball Launcher
/obj/effect/trap/launcher/fireball
- projectile_type = /obj/item/projectile/bullet/incendiary/flamethrower/large
+ projectile_type = /obj/projectile/bullet/incendiary/flamethrower/large
projectile_sound = 'sound/effects/bamf.ogg'
//Heavy Fireball Launcher
/obj/effect/trap/launcher/fireball_aoe
- projectile_type = /obj/item/projectile/magic/aoe/fireball
+ projectile_type = /obj/projectile/magic/aoe/fireball
projectile_sound = 'sound/weapons/cannon.ogg'
//Web Launcher
/obj/effect/trap/launcher/web
- projectile_type = /obj/item/projectile/webball
+ projectile_type = /obj/projectile/webball
projectile_sound = 'sound/effects/splat.ogg'
//Flesh Launcher
/obj/effect/trap/launcher/flesh
- projectile_type = /obj/item/projectile/bullet/organic
+ projectile_type = /obj/projectile/bullet/organic
projectile_sound = 'sound/effects/squelch1.ogg'
//////////////////
@@ -427,7 +427,7 @@ Add those other swinging traps you mentioned above!
var/health = 200
var/maxhealth = 200
-/obj/effect/trap/pop_up/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/trap/pop_up/bullet_act(var/obj/projectile/Proj)
health -= Proj.damage
..()
healthcheck()
@@ -452,7 +452,7 @@ Add those other swinging traps you mentioned above!
src.visible_message(SPAN_DANGER("\The [src] breaks! It was a trap!"))
return
visible_message("\The [src] has been [W.get_attack_verb(src, user)] with \the [W][(user ? " by [user]." : ".")]")
- var/damage = W.force / 4.0
+ var/damage = W.damage_force / 4.0
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 22a70e81e5f..2fccdd1a8c8 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -33,6 +33,18 @@
/// economic category for items
var/economic_category_item = ECONOMIC_CATEGORY_ITEM_DEFAULT
+ //? Combat
+ /// Amount of damage we do on melee.
+ var/damage_force = 0
+ /// armor flag for melee attacks
+ var/damage_flag = ARMOR_MELEE
+ /// damage tier
+ var/damage_tier = MELEE_TIER_DEFAULT
+ /// damage_mode bitfield - see [code/__DEFINES/combat/damage.dm]
+ var/damage_mode = NONE
+ // todo: port over damtype
+
+
//? unsorted / legacy
/// This saves our blood splatter overlay, which will be processed not to go over the edges of the sprite
var/image/blood_overlay = null
@@ -55,7 +67,6 @@
* Either a list() with equal chances or a single verb.
*/
var/list/attack_verb = "attacked"
- var/force = 0
/// Flags which determine which body parts are protected from heat. Use the HEAD, UPPER_TORSO, LOWER_TORSO, etc. flags. See setup.dm
var/heat_protection = 0
@@ -88,8 +99,6 @@
var/siemens_coefficient = 1
/// How much clothing is slowing you down. Negative values speeds you up
var/slowdown = 0
- var/list/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
- var/list/armorsoak = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
/// Suit storage stuff.
var/list/allowed = null
/// All items can have an uplink hidden inside, just remember to add the triggers.
@@ -137,9 +146,9 @@
//Potential memory optimization: Making embed chance a getter if unset.
if(embed_chance == EMBED_CHANCE_UNSET)
if(sharp)
- embed_chance = max(5, round(force/w_class))
+ embed_chance = max(5, round(damage_force/w_class))
else
- embed_chance = max(5, round(force/(w_class*3)))
+ embed_chance = max(5, round(damage_force/(w_class*3)))
if(hitsound == HITSOUND_UNSET)
if(damtype == "fire")
hitsound = 'sound/items/welder.ogg'
@@ -755,3 +764,24 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_SELF, user)
if(interaction_flags_item & INTERACT_ITEM_ATTACK_SELF)
interact(user)
+
+//? Mob Armor
+
+/**
+ * called to be checked for mob armor
+ *
+ * @returns copy of args with modified values
+ */
+/obj/item/proc/checking_mob_armor(damage, tier, flag, mode, attack_type, datum/weapon, target_zone)
+ damage = fetch_armor().resultant_damage(damage, tier, flag)
+ return args.Copy()
+
+/**
+ * called to be used as mob armor
+ * side effects are allowed
+ *
+ * @returns copy of args with modified values
+ */
+/obj/item/proc/running_mob_armor(damage, tier, flag, mode, attack_type, datum/weapon, target_zone)
+ damage = fetch_armor().resultant_damage(damage, tier, flag)
+ return args.Copy()
diff --git a/code/game/objects/items/bells.dm b/code/game/objects/items/bells.dm
index 6e155d8f9f7..3e5f33dea57 100644
--- a/code/game/objects/items/bells.dm
+++ b/code/game/objects/items/bells.dm
@@ -3,7 +3,7 @@
desc = "An annoying bell. Ring for service."
icon = 'icons/obj/items.dmi'
icon_state = "deskbell"
- force = 2
+ damage_force = 2
throw_force = 2
w_class = 2.0
hitsound = 'sound/effects/deskbell.ogg'
diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm
index 10871291878..1ae44d3caee 100644
--- a/code/game/objects/items/circuitboards/circuitboard.dm
+++ b/code/game/objects/items/circuitboards/circuitboard.dm
@@ -19,7 +19,7 @@
density = FALSE
anchored = FALSE
w_class = ITEMSIZE_SMALL
- force = 5.0
+ damage_force = 5.0
throw_force = 5.0
throw_speed = 3
throw_range = 15
diff --git a/code/game/objects/items/devices/binoculars.dm b/code/game/objects/items/devices/binoculars.dm
index 3476e1fc91d..40caebacdf4 100644
--- a/code/game/objects/items/devices/binoculars.dm
+++ b/code/game/objects/items/devices/binoculars.dm
@@ -3,7 +3,7 @@
desc = "A pair of binoculars."
icon = 'icons/obj/device.dmi'
icon_state = "binoculars"
- force = 5.0
+ damage_force = 5.0
w_class = ITEMSIZE_SMALL
throw_force = 5.0
throw_range = 15
diff --git a/code/game/objects/items/devices/debugger.dm b/code/game/objects/items/devices/debugger.dm
index 126451e4050..65711f02096 100644
--- a/code/game/objects/items/devices/debugger.dm
+++ b/code/game/objects/items/devices/debugger.dm
@@ -9,7 +9,7 @@
desc = "Used to debug electronic equipment."
icon = 'icons/obj/hacktool.dmi'
icon_state = "hacktool-g"
- force = 5.0
+ damage_force = 5.0
w_class = ITEMSIZE_SMALL
throw_force = 5.0
throw_range = 15
diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm
index 7e3b555893e..2c1f23f843b 100644
--- a/code/game/objects/items/devices/defib.dm
+++ b/code/game/objects/items/devices/defib.dm
@@ -10,7 +10,7 @@
icon_state = "defibunit"
item_state = "defibunit"
slot_flags = SLOT_BACK
- force = 5
+ damage_force = 5
throw_force = 6
preserve_item = 1
w_class = ITEMSIZE_LARGE
@@ -193,7 +193,7 @@
icon_state = "defibpaddles"
item_state = "defibpaddles"
gender = PLURAL
- force = 2
+ damage_force = 2
throw_force = 6
w_class = ITEMSIZE_LARGE
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 69ead62cf35..aefb3ead3da 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -263,7 +263,7 @@
name = "maglight"
desc = "A very, very heavy duty flashlight."
icon_state = "maglight"
- force = 10
+ damage_force = 10
slot_flags = SLOT_BELT
w_class = ITEMSIZE_SMALL
attack_verb = list ("smacked", "thwacked", "thunked")
@@ -287,7 +287,7 @@
name = "desk lamp"
desc = "A desk lamp with an adjustable mount."
icon_state = "lamp"
- force = 10
+ damage_force = 10
brightness_on = 5
w_class = ITEMSIZE_LARGE
power_use = 0
@@ -353,7 +353,7 @@
/obj/item/flashlight/flare/proc/turn_off()
on = FALSE
- src.force = initial(src.force)
+ src.damage_force = initial(src.damage_force)
src.damtype = initial(src.damtype)
update_appearance()
@@ -370,14 +370,14 @@
// All good, turn it on.
if(.)
user.visible_message(SPAN_NOTICE("[user] activates the flare."), SPAN_NOTICE("You pull the cord on the flare, activating it!"))
- src.force = on_damage
+ src.damage_force = on_damage
src.damtype = "fire"
START_PROCESSING(SSobj, src)
/obj/item/flashlight/flare/proc/ignite() //Used for flare launchers.
on = !on
update_appearance()
- force = on_damage
+ damage_force = on_damage
damtype = "fire"
START_PROCESSING(SSobj, src)
return TRUE
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index 7ead65e387e..1bdbfe762da 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -42,7 +42,7 @@
name = "light replacer"
desc = "A device to automatically replace lights. Refill with working lightbulbs, broken lightbulbs, or sheets of glass."
- force = 8
+ damage_force = 8
icon = 'icons/obj/janitor.dmi'
icon_state = "lightreplacer0"
slot_flags = SLOT_BELT
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index f1b6fb3d3fb..2b4936b4382 100755
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -10,7 +10,7 @@
description_info = "You can use this on airlocks or APCs to try to hack them without cutting wires."
icon = 'icons/obj/device.dmi'
icon_state = "multitool"
- force = 5.0
+ damage_force = 5.0
w_class = ITEMSIZE_SMALL
throw_force = 5.0
throw_range = 15
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 13eea26f6bf..9cf1565fb58 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -789,7 +789,7 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
icon_state = "radiopack"
item_state = "radiopack"
slot_flags = SLOT_BACK
- force = 5
+ damage_force = 5
throw_force = 6
preserve_item = 1
w_class = ITEMSIZE_LARGE
diff --git a/code/game/objects/items/devices/spy_bug.dm b/code/game/objects/items/devices/spy_bug.dm
index 635b1b81623..3998c7a8e46 100644
--- a/code/game/objects/items/devices/spy_bug.dm
+++ b/code/game/objects/items/devices/spy_bug.dm
@@ -5,7 +5,7 @@
icon_state = "camgrenade"
item_state = "empgrenade"
w_class = ITEMSIZE_SMALL
- force = 0
+ damage_force = 0
throw_force = 5.0
throw_range = 15
throw_speed = 3
@@ -47,7 +47,7 @@
icon = 'icons/obj/grenade.dmi'
icon_state = "camgrenadebroken"
item_state = "empgrenade"
- force = 5.0
+ damage_force = 5.0
w_class = ITEMSIZE_SMALL
throw_force = 5.0
throw_range = 15
@@ -64,7 +64,7 @@
w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
origin_tech = list(TECH_ENGINEERING = 1, TECH_ILLEGAL = 3) //crush it and you lose the data
- force = 0
+ damage_force = 0
throw_force = 5.0
throw_range = 15
throw_speed = 3
@@ -99,7 +99,7 @@
else
to_chat(user, "Error: The device is linked to another monitor.")
else
- if(W.force >= 5)
+ if(W.damage_force >= 5)
visible_message("\The [src] lens shatters!")
new brokentype(get_turf(src))
if(linkedmonitor)
diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm
index 70be2e5f645..5aa2a2d3fbe 100644
--- a/code/game/objects/items/devices/suit_cooling.dm
+++ b/code/game/objects/items/devices/suit_cooling.dm
@@ -7,7 +7,7 @@
slot_flags = SLOT_BACK
//copied from tank.dm
- force = 5.0
+ damage_force = 5.0
throw_force = 10.0
throw_speed = 1
throw_range = 4
diff --git a/code/game/objects/items/devices/tape_recorder/cassette_tape.dm b/code/game/objects/items/devices/tape_recorder/cassette_tape.dm
index 6368accce6a..31498388ed2 100644
--- a/code/game/objects/items/devices/tape_recorder/cassette_tape.dm
+++ b/code/game/objects/items/devices/tape_recorder/cassette_tape.dm
@@ -20,7 +20,7 @@
item_state = "analyzer"
w_class = ITEMSIZE_TINY
matter = list(MAT_STEEL=20, "glass"=5)
- force = 1
+ damage_force = 1
throw_force = 0
/**
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 9e038af7387..e6f10ca3588 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -371,7 +371,7 @@
item_state = "analyzer"
w_class = ITEMSIZE_TINY
matter = list(MAT_STEEL=20, "glass"=5)
- force = 1
+ damage_force = 1
throw_force = 0
var/max_capacity = 1800
var/used_capacity = 0
diff --git a/code/game/objects/items/godfigures.dm b/code/game/objects/items/godfigures.dm
index 8bbba95bf48..a459057dd7d 100644
--- a/code/game/objects/items/godfigures.dm
+++ b/code/game/objects/items/godfigures.dm
@@ -4,7 +4,7 @@
description_info = "Right click to select a new sprite to fit your needs."
icon = 'icons/obj/chaplain.dmi'
icon_state = "mrobe"
- force = 10
+ damage_force = 10
throw_speed = 1
throw_range = 4
throw_force = 10
diff --git a/code/game/objects/items/holosign_creator.dm b/code/game/objects/items/holosign_creator.dm
index 59ec0e9625d..09d282f718a 100644
--- a/code/game/objects/items/holosign_creator.dm
+++ b/code/game/objects/items/holosign_creator.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/device.dmi'
icon_state = "signmaker"
item_state = "electronic"
- force = 0
+ damage_force = 0
w_class = WEIGHT_CLASS_SMALL
throw_force = 0
throw_speed = 3
diff --git a/code/game/objects/items/inducer.dm b/code/game/objects/items/inducer.dm
index 62acc45ade7..cea94322645 100644
--- a/code/game/objects/items/inducer.dm
+++ b/code/game/objects/items/inducer.dm
@@ -13,7 +13,7 @@
SLOT_ID_LEFT_HAND = "inducer_lefthand",
SLOT_ID_RIGHT_HAND = "inducer_righthand"
)
- force = 7
+ damage_force = 7
/// transfer amount per second
var/transfer_rate = 1000
/// type of cell to spawn
diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm
index 14a989e1730..a6f242cc67a 100644
--- a/code/game/objects/items/latexballoon.dm
+++ b/code/game/objects/items/latexballoon.dm
@@ -7,7 +7,7 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_gloves.dmi',
)
item_state = "lgloves"
- force = 0
+ damage_force = 0
throw_force = 0
w_class = ITEMSIZE_SMALL
throw_speed = 1
diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm
index 1da059064eb..f5a60eb0d67 100644
--- a/code/game/objects/items/shooting_range.dm
+++ b/code/game/objects/items/shooting_range.dm
@@ -67,12 +67,12 @@
desc = "A shooting target with a threatening silhouette."
hp = 2350 // alium onest too kinda
-/obj/item/target/bullet_act(var/obj/item/projectile/Proj)
+/obj/item/target/bullet_act(var/obj/projectile/Proj)
var/p_x = Proj.p_x + pick(0,0,0,0,0,-1,1) // really ugly way of coding "sometimes offset Proj.p_x!"
var/p_y = Proj.p_y + pick(0,0,0,0,0,-1,1)
var/decaltype = 1 // 1 - scorch, 2 - bullet
- if(istype(/obj/item/projectile/bullet, Proj))
+ if(istype(/obj/projectile/bullet, Proj))
decaltype = 2
@@ -101,7 +101,7 @@
bmark.pixel_x--
bmark.pixel_y--
- if(Proj.damage >= 20 || istype(Proj, /obj/item/projectile/beam/practice))
+ if(Proj.damage >= 20 || istype(Proj, /obj/projectile/beam/practice))
bmark.icon_state = "scorch"
bmark.setDir(pick(NORTH,SOUTH,EAST,WEST)) // random scorch design
diff --git a/code/game/objects/items/signs.dm b/code/game/objects/items/signs.dm
index 814607251a4..6e3166f33c5 100644
--- a/code/game/objects/items/signs.dm
+++ b/code/game/objects/items/signs.dm
@@ -2,7 +2,7 @@
icon_state = "picket"
name = "blank picket sign"
desc = "It's blank."
- force = 5
+ damage_force = 5
w_class = WEIGHT_CLASS_BULKY
attack_verb = list("bashed","smacked")
@@ -12,7 +12,7 @@
/obj/item/picket_sign/cyborg
name = "metallic nano-sign"
desc = "A high tech picket sign used by silicons that can reprogram its surface at will. Probably hurts to get hit by, too."
- force = 13
+ damage_force = 13
/obj/item/picket_sign/proc/retext(mob/user)
var/txt = stripped_input(user, "What would you like to write on the sign?", "Sign Label", null , 30)
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index bf4cb8a6e43..a9806caced4 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -4,7 +4,7 @@
singular_name = "metal rod"
icon_state = "rods"
w_class = ITEMSIZE_NORMAL
- force = 9.0
+ damage_force = 9.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
diff --git a/code/game/objects/items/stacks/sandbag.dm b/code/game/objects/items/stacks/sandbag.dm
index 9898d057bd5..1a5da66b382 100644
--- a/code/game/objects/items/stacks/sandbag.dm
+++ b/code/game/objects/items/stacks/sandbag.dm
@@ -5,7 +5,7 @@
singular_name = "empty sandbag"
icon_state = "sandbag_empty"
w_class = ITEMSIZE_NORMAL
- force = 1
+ damage_force = 1
throw_force = 1
throw_speed = 5
throw_range = 20
@@ -52,7 +52,7 @@
singular name = "sandbag"
icon_state = "sandbags"
w_class = ITEMSIZE_NORMAL
- force = 10
+ damage_force = 10
throw_force = 15
throw_speed = 3
throw_range = 10
@@ -166,9 +166,9 @@ var/global/list/datum/stack_recipe/sandbags_recipes = list( \
else
switch(W.damtype)
if("fire")
- health -= W.force * 1
+ health -= W.damage_force * 1
if("brute")
- health -= W.force * 0.75
+ health -= W.damage_force * 0.75
playsound(src, 'sound/weapons/smash.ogg', 50, 1)
CheckHealth()
..()
diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm
index ec4577d8694..f53c31ff955 100644
--- a/code/game/objects/items/stacks/telecrystal.dm
+++ b/code/game/objects/items/stacks/telecrystal.dm
@@ -8,7 +8,7 @@
w_class = ITEMSIZE_TINY
max_amount = 240
origin_tech = list(TECH_MATERIAL = 6, TECH_BLUESPACE = 4)
- force = 1 //Needs a token force to ensure you can attack because for some reason you can't attack with 0 force things
+ damage_force = 1 //Needs a token force to ensure you can attack because for some reason you can't attack with 0 force things
/obj/item/stack/telecrystal/attack_mob(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
var/mob/living/L = target
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index 81f904acf48..2fd69714e01 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -32,7 +32,7 @@
singular_name = "grass floor tile"
desc = "A patch of grass like they often use on golf courses."
icon_state = "tile_grass"
- force = 1.0
+ damage_force = 1.0
throw_force = 1.0
throw_speed = 5
throw_range = 20
@@ -72,7 +72,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
singular_name = "wood floor tile"
desc = "An easy to fit wooden floor tile."
icon_state = "tile-wood"
- force = 1.0
+ damage_force = 1.0
throw_force = 1.0
throw_speed = 5
throw_range = 20
@@ -102,7 +102,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
singular_name = "carpet"
desc = "A piece of carpet. It is the same size as a normal floor tile!"
icon_state = "tile-carpet"
- force = 1.0
+ damage_force = 1.0
throw_force = 1.0
throw_speed = 5
throw_range = 20
@@ -163,7 +163,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
singular_name = "floor tile"
desc = "A metal tile fit for covering a section of floor."
icon_state = "tile"
- force = 6.0
+ damage_force = 6.0
matter = list(MAT_STEEL = SHEET_MATERIAL_AMOUNT / 4)
throw_force = 15.0
throw_speed = 5
@@ -254,7 +254,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
singular_name = "linoleum"
desc = "A piece of linoleum. It is the same size as a normal floor tile!"
icon_state = "tile-linoleum"
- force = 1.0
+ damage_force = 1.0
throw_force = 1.0
throw_speed = 5
throw_range = 20
@@ -265,7 +265,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
singular_name = "light marble tile"
desc = "Some white marble tiles used for flooring."
icon_state = "tile-wmarble"
- force = 6.0
+ damage_force = 6.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
@@ -276,7 +276,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
singular_name = "dark marble tile"
desc = "Some black marble tiles used for flooring."
icon_state = "tile-bmarble"
- force = 6.0
+ damage_force = 6.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
@@ -311,7 +311,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
singular_name = "bananium tile"
desc = "The pinnacle of trolling."
icon_state = "tile-bananium"
- force = 6.0
+ damage_force = 6.0
throw_force = 10.0
throw_speed = 5
throw_range = 20
@@ -322,7 +322,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
singular_name = "silencium tile"
desc = "If a tear falls off a mime, and no one's around to see it, does it still not make a sound?"
icon_state = "tile-silencium"
- force = 6.0
+ damage_force = 6.0
throw_force = 10.0
throw_speed = 5
throw_range = 20
@@ -332,7 +332,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
name = "plasteel tile"
singular_name = "plasteel tile"
icon_state = "tile-plasteel"
- force = 6.0
+ damage_force = 6.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
@@ -342,7 +342,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
name = "durasteel tile"
singular_name = "durasteel tile"
icon_state = "tile-durasteel"
- force = 6.0
+ damage_force = 6.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
@@ -352,7 +352,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
name = "silver tile"
singular_name = "silver tile"
icon_state = "tile-silver"
- force = 6.0
+ damage_force = 6.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
@@ -362,7 +362,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
name = "gold tile"
singular_name = "gold tile"
icon_state = "tile-gold"
- force = 6.0
+ damage_force = 6.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
@@ -372,7 +372,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
name = "phoron tile"
singular_name = "phoron tile"
icon_state = "tile-phoron"
- force = 6.0
+ damage_force = 6.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
@@ -382,7 +382,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
name = "uranium tile"
singular_name = "uranium tile"
icon_state = "tile-uranium"
- force = 6.0
+ damage_force = 6.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
@@ -392,7 +392,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
name = "diamond tile"
singular_name = "diamond tile"
icon_state = "tile-diamond"
- force = 6.0
+ damage_force = 6.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
@@ -402,7 +402,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
name = "brass tile"
singular_name = "brass tile"
icon_state = "tile-brass"
- force = 6.0
+ damage_force = 6.0
throw_force = 15.0
throw_speed = 5
throw_range = 20
@@ -412,7 +412,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
name = "wax tile"
singular_name = "wax tile"
icon_state = "tile-wax"
- force = 1
+ damage_force = 1
throw_force = 1
throw_speed = 5
throw_range = 20
@@ -422,7 +422,7 @@ var/global/list/datum/stack_recipe/grass_recipes = list( \
name = "honeycomb tile"
singular_name = "honeycomb tile"
icon_state = "tile-honeycomb"
- force = 1
+ damage_force = 1
throw_force = 1
throw_speed = 5
throw_range = 20
diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm
index eae37f44b3b..ef15bad6dc4 100644
--- a/code/game/objects/items/storage/briefcase.dm
+++ b/code/game/objects/items/storage/briefcase.dm
@@ -2,7 +2,7 @@
name = "briefcase"
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
icon_state = "briefcase"
- force = 8.0
+ damage_force = 8.0
throw_speed = 1
throw_range = 4
w_class = ITEMSIZE_LARGE
@@ -18,14 +18,14 @@
icon = 'icons/obj/clothing/backpack.dmi'
icon_state = "clutch"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "smpurse", SLOT_ID_LEFT_HAND = "smpurse")
- force = 0
+ damage_force = 0
w_class = ITEMSIZE_NORMAL
max_w_class = ITEMSIZE_SMALL
max_storage_space = ITEMSIZE_COST_SMALL * 4
/obj/item/storage/briefcase/crafted
desc = "Hand crafted suitcase made of leather and cloth."
- force = 6
+ damage_force = 6
/obj/item/storage/briefcase/crafted/PopulateContents()
return //So we dont spawn items
diff --git a/code/game/objects/items/storage/misc.dm b/code/game/objects/items/storage/misc.dm
index b23e23049b6..7eeef6c7dca 100644
--- a/code/game/objects/items/storage/misc.dm
+++ b/code/game/objects/items/storage/misc.dm
@@ -78,7 +78,7 @@
max_storage_space = ITEMSIZE_COST_TINY * 3
sharp = 1
edge = 1
- force = 15
+ damage_force = 15
throw_force = 15
attack_verb = list("stabbed", "chopped", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm
index 72639a3ec41..638babe2238 100644
--- a/code/game/objects/items/storage/secure.dm
+++ b/code/game/objects/items/storage/secure.dm
@@ -148,7 +148,7 @@
icon_state = "secure"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "case", SLOT_ID_LEFT_HAND = "case")
desc = "A large briefcase with a digital locking system."
- force = 8.0
+ damage_force = 8.0
throw_speed = 1
throw_range = 4
max_w_class = ITEMSIZE_NORMAL
@@ -190,7 +190,7 @@
icon_state = "securev"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "securev", SLOT_ID_LEFT_HAND = "securev")
desc = "A large briefcase with a digital locking system and a magnetic attachment system."
- force = 0
+ damage_force = 0
throw_speed = 1
throw_range = 4
@@ -205,7 +205,7 @@
icon_opened = "safe0"
icon_locking = "safeb"
icon_sparking = "safespark"
- force = 8.0
+ damage_force = 8.0
w_class = ITEMSIZE_NO_CONTAINER
max_w_class = ITEMSIZE_LARGE // This was 8 previously...
anchored = 1.0
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index 4b2ebbc33a6..67ee29af7b3 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/storage.dmi'
icon_state = "red"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "toolbox_red", SLOT_ID_LEFT_HAND = "toolbox_red")
- force = 10
+ damage_force = 10
throw_force = 10
throw_speed = 1
throw_range = 7
@@ -70,7 +70,7 @@
icon_state = "syndicate"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "toolbox_syndi", SLOT_ID_LEFT_HAND = "toolbox_syndi")
origin_tech = list(TECH_COMBAT = 1, TECH_ILLEGAL = 1)
- force = 14
+ damage_force = 14
starts_with = list(
/obj/item/clothing/gloves/yellow,
/obj/item/tool/screwdriver,
@@ -96,7 +96,7 @@
name = "golden toolbox"
desc = "A gold plated toolbox, fancy and harmless due to the gold plating being on cardboard!"
icon_state = "gold"
- force = 0
+ damage_force = 0
throw_force = 0
/obj/item/storage/toolbox/lunchbox
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index 70540aee139..634dcefa002 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -288,7 +288,7 @@
desc = "A heavy, locked briefcase."
description_fluff = "The container, upon opening, looks to have a few oddly shaped indentations in its packing."
description_antag = "This case will likely contain a charged fuel rod gun, and a few fuel rods to go with it. It can only hold the fuel rod gun, fuel rods, batteries, a screwdriver, and stock machine parts."
- force = 12 //Anti-rad lined i.e. Lead, probably gonna hurt a bit if you get bashed with it.
+ damage_force = 12 //Anti-rad lined i.e. Lead, probably gonna hurt a bit if you get bashed with it.
can_hold = list(/obj/item/gun/magnetic/fuelrod, /obj/item/fuel_assembly, /obj/item/cell, /obj/item/stock_parts, /obj/item/tool/screwdriver)
cant_hold = list(/obj/item/tool/screwdriver/power)
starts_with = list(
diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm
index ee4a6790cec..b578566a9d4 100644
--- a/code/game/objects/items/tools/crowbar.dm
+++ b/code/game/objects/items/tools/crowbar.dm
@@ -10,7 +10,7 @@
item_state = "crowbar"
slot_flags = SLOT_BELT
tool_behaviour = TOOL_CROWBAR
- force = 6
+ damage_force = 6
throw_force = 7
pry = 1
item_state = "crowbar"
@@ -79,7 +79,7 @@
name = "hydraulic crowbar"
desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbars in industrial synthetics."
tool_sound = 'sound/items/jaws_pry.ogg'
- force = 10
+ damage_force = 10
tool_speed = 0.5
/obj/item/tool/crowbar/RIGset
@@ -96,7 +96,7 @@
matter = list(MAT_METAL=150, MAT_SILVER=50)
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
tool_sound = 'sound/items/jaws_pry.ogg'
- force = 15
+ damage_force = 15
tool_speed = 0.25
var/obj/item/tool/wirecutters/power/counterpart = null
@@ -133,7 +133,7 @@
icon = 'icons/obj/tools_vr.dmi'
icon_state = "prybar"
slot_flags = SLOT_BELT
- force = 4
+ damage_force = 4
throw_force = 5
pry = 1
item_state = "crowbar"
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index 99d3c4725f8..fd764485b37 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -9,7 +9,7 @@
item_state = "screwdriver"
slot_flags = SLOT_BELT | SLOT_EARS
tool_behaviour = TOOL_SCREWDRIVER
- force = 6
+ damage_force = 6
w_class = ITEMSIZE_TINY
throw_force = 5
throw_speed = 3
@@ -142,7 +142,7 @@
matter = list(MAT_STEEL = 150, MAT_SILVER = 50)
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
slot_flags = SLOT_BELT
- force = 8
+ damage_force = 8
w_class = ITEMSIZE_SMALL
throw_force = 8
throw_speed = 2
diff --git a/code/game/objects/items/tools/switchtool.dm b/code/game/objects/items/tools/switchtool.dm
index c1ffe547a66..1019eb5effb 100644
--- a/code/game/objects/items/tools/switchtool.dm
+++ b/code/game/objects/items/tools/switchtool.dm
@@ -11,7 +11,7 @@
item_state = "switchtool"
desc = "A multi-deployable, multi-instrument, finely crafted multi-purpose tool. The envy of engineers everywhere."
siemens_coefficient = 1
- force = 3
+ damage_force = 3
w_class = ITEMSIZE_SMALL
item_icons = list(
SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_switchtool.dmi',
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index db0fef02bfb..4b9463fae8e 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -11,7 +11,7 @@
tool_behaviour = TOOL_WELDER
//Amount of OUCH when it's thrown
- force = 3.0
+ damage_force = 3.0
throw_force = 5.0
throw_speed = 1
throw_range = 5
@@ -250,7 +250,7 @@
else if(T)
T.visible_message("\The [src] turns on.")
playsound(loc, acti_sound, 50, 1)
- src.force = 15
+ src.damage_force = 15
src.damtype = "fire"
src.w_class = ITEMSIZE_LARGE
src.hitsound = 'sound/items/welder.ogg'
@@ -272,7 +272,7 @@
else if(T)
T.visible_message("\The [src] turns off.")
playsound(loc, deac_sound, 50, 1)
- src.force = 3
+ src.damage_force = 3
src.damtype = "brute"
src.w_class = initial(src.w_class)
src.welding = 0
diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm
index 2e07741c339..1ac2bc6658b 100644
--- a/code/game/objects/items/tools/wirecutters.dm
+++ b/code/game/objects/items/tools/wirecutters.dm
@@ -9,7 +9,7 @@
item_state = "cutters"
slot_flags = SLOT_BELT
tool_behaviour = TOOL_WIRECUTTER
- force = 6
+ damage_force = 6
throw_speed = 2
throw_range = 9
w_class = ITEMSIZE_SMALL
@@ -123,7 +123,7 @@
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
matter = list(MAT_METAL=150, MAT_SILVER=50)
tool_sound = 'sound/items/jaws_cut.ogg'
- force = 15
+ damage_force = 15
tool_speed = 0.25
random_color = FALSE
var/obj/item/tool/crowbar/power/counterpart = null
diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm
index cf062eae6de..8a640c4fca1 100644
--- a/code/game/objects/items/tools/wrench.dm
+++ b/code/game/objects/items/tools/wrench.dm
@@ -9,7 +9,7 @@
item_state = "wrench"
slot_flags = SLOT_BELT
tool_behaviour = TOOL_WRENCH
- force = 6
+ damage_force = 6
throw_force = 7
w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
@@ -78,7 +78,7 @@
icon = 'icons/obj/tools.dmi'
icon_state = "hybwrench"
slot_flags = SLOT_BELT
- force = 8
+ damage_force = 8
throw_force = 10
w_class = ITEMSIZE_NORMAL
slowdown = 0.1
@@ -98,7 +98,7 @@
as a conventional wrench.\
\
When an object is placed into the head section of the tool, the tool appears \
- to force the object to be turned in a specific direction. The direction can be \
+ to damage_force the object to be turned in a specific direction. The direction can be \
inverted by pressing down on the mechanism on the handle. It is not known if \
this tool was intended by its creators to tighten fasteners or if it has a less obvious \
purpose, however it is very well suited to act in a wrench's capacity regardless."
@@ -123,7 +123,7 @@
tool_sound = 'sound/items/drill_use.ogg'
matter = list(MAT_STEEL = 150, MAT_SILVER = 50)
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
- force = 8
+ damage_force = 8
w_class = ITEMSIZE_SMALL
throw_force = 8
attack_verb = list("drilled", "screwed", "jabbed")
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 01363333912..bd7bc29efd7 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -25,7 +25,7 @@
throw_force = 0
throw_speed = 4
throw_range = 20
- force = 0
+ damage_force = 0
/*
@@ -36,7 +36,7 @@
desc = "A translucent balloon. There's nothing in it."
icon = 'icons/obj/toy.dmi'
icon_state = "waterballoon-e"
- force = 0
+ damage_force = 0
/obj/item/toy/balloon/Initialize(mapload)
. = ..()
@@ -92,7 +92,7 @@
throw_force = 0
throw_speed = 4
throw_range = 20
- force = 0
+ damage_force = 0
icon = 'icons/obj/weapons.dmi'
icon_state = "syndballoon"
w_class = ITEMSIZE_LARGE
@@ -103,7 +103,7 @@
throw_force = 0
throw_speed = 4
throw_range = 20
- force = 0
+ damage_force = 0
icon = 'icons/obj/weapons.dmi'
icon_state = "ntballoon"
w_class = ITEMSIZE_LARGE
@@ -300,7 +300,7 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_material.dmi',
)
slot_flags = SLOT_BELT | SLOT_BACK
- force = 5
+ damage_force = 5
throw_force = 5
w_class = ITEMSIZE_NORMAL
attack_verb = list("attacked", "slashed", "stabbed", "sliced")
@@ -358,7 +358,7 @@
item_state = "sunflower"
var/empty = 0
slot_flags = SLOT_HOLSTER
- force = 0
+ damage_force = 0
/obj/item/toy/waterflower/Initialize(mapload)
. = ..()
@@ -1547,7 +1547,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "tinyxmastree"
w_class = ITEMSIZE_TINY
- force = 1
+ damage_force = 1
throw_force = 1
//Dakimakuras, ported from Main.
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index 42279f4f3c1..17a047bb1a2 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -5,7 +5,7 @@
/obj/item/trash
icon = 'icons/obj/trash.dmi'
w_class = ITEMSIZE_SMALL
- force = 0
+ damage_force = 0
desc = "This is rubbish."
drop_sound = 'sound/items/drop/wrapper.ogg'
pickup_sound = 'sound/items/pickup/wrapper.ogg'
diff --git a/code/game/objects/items/upgradekit.dm b/code/game/objects/items/upgradekit.dm
index 6cfe99b0875..8987baa5908 100644
--- a/code/game/objects/items/upgradekit.dm
+++ b/code/game/objects/items/upgradekit.dm
@@ -4,38 +4,26 @@
icon = 'icons/obj/clothing/modular_armor.dmi' // NO LONGER A PLACEHOLDER
icon_state = "kevlar_upgrade" // RIP PLACEHOLDERS WOOO
-/obj/item/kevlarupgrade/afterattack(atom/A, mob/user)
- var/meleemax = FALSE
- var/bulletmax = FALSE
- var/lasermax = FALSE
- var/used = FALSE
+/obj/item/kevlarupgrade/afterattack(atom/target, mob/user, proximity_flag)
+ if(!proximity_flag)
+ return ..()
- if(isobj(A) && istype(A, /obj/item/clothing/under))
- var/obj/item/clothing/under/C = A
- if(C.armor["melee"] >= 10)
- meleemax = TRUE
- if(C.armor["bullet"] >= 5)
- bulletmax = TRUE
- if(C.armor["laser"] >= 5)
- lasermax = TRUE
-
- if(meleemax != TRUE)
- C.armor["melee"] = 10
- used = TRUE
- if(bulletmax != TRUE)
- C.armor["bullet"] = 5
- used = TRUE
- if(lasermax != TRUE)
- C.armor["laser"] = 5
- used = TRUE
-
- if(used == TRUE)
- to_chat(user, "Armor upgrade successful!")
- qdel(src)
- return
- else
+ if(istype(target, /obj/item/clothing/under))
+ var/obj/item/clothing/under/C = target
+ if(C.fetch_armor().is_atleast(list(
+ ARMOR_MELEE = 40,
+ ARMOR_BULLET = 20,
+ ARMOR_LASER = 20,
+ )))
to_chat(user, "This item cannot be upgraded any further!")
- return
- else
- return
+ return CLICKCHAIN_DO_NOT_PROPAGATE
+ C.set_armor(C.fetch_armor().boosted(list(
+ ARMOR_MELEE = 40,
+ ARMOR_BULLET = 20,
+ ARMOR_LASER = 20,
+ )))
+ to_chat(user, "Armor upgrade successful!")
+ qdel(src)
+ return CLICKCHAIN_DO_NOT_PROPAGATE
+ return ..()
diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm
index 2c1c8523ec1..38f5bb34509 100644
--- a/code/game/objects/items/weapons/AI_modules.dm
+++ b/code/game/objects/items/weapons/AI_modules.dm
@@ -11,7 +11,7 @@ AI MODULES
icon = 'icons/obj/module.dmi'
icon_state = "std_mod"
desc = "An AI Module for transmitting encrypted instructions to the AI."
- force = 5.0
+ damage_force = 5.0
w_class = ITEMSIZE_SMALL
throw_force = 5.0
throw_speed = 3
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 87db9ae6413..94f8397bbd3 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -12,7 +12,7 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand.dmi',
)
item_flags = ITEM_NOBLUDGEON
- force = 10
+ damage_force = 10
throw_force = 10
throw_speed = 1
throw_range = 5
diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm
index efbe021f5c6..bc01512a773 100644
--- a/code/game/objects/items/weapons/RPD.dm
+++ b/code/game/objects/items/weapons/RPD.dm
@@ -18,14 +18,13 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand.dmi',
)
item_flags = ITEM_NOBLUDGEON
- force = 10
+ damage_force = 10
throw_force = 10
throw_speed = 1
throw_range = 5
w_class = ITEMSIZE_NORMAL
slot_flags = SLOT_BELT
matter = list(MAT_STEEL = 50000, MAT_GLASS = 25000)
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0)
///Sparks system used when changing device in the UI
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread
///Direction of the device we are going to spawn, set up in the UI
diff --git a/code/game/objects/items/weapons/bones.dm b/code/game/objects/items/weapons/bones.dm
index 108f63e9327..fb4e892eaa6 100644
--- a/code/game/objects/items/weapons/bones.dm
+++ b/code/game/objects/items/weapons/bones.dm
@@ -4,7 +4,7 @@
desc = "A non-descript bone. It's so old and worn you can barely tell which part of the body it's from."
icon = 'icons/obj/bones.dmi'
icon_state = "bone"
- force = 5
+ damage_force = 5
throw_force = 6
item_state = "bone"
w_class = ITEMSIZE_SMALL
diff --git a/code/game/objects/items/weapons/duct_tape.dm b/code/game/objects/items/weapons/duct_tape.dm
index e45c97503d4..32ed3091c8d 100644
--- a/code/game/objects/items/weapons/duct_tape.dm
+++ b/code/game/objects/items/weapons/duct_tape.dm
@@ -3,7 +3,7 @@
desc = "A roll of sticky tape. Possibly for taping ducks... or was that ducts?"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "taperoll"
- force = 0
+ damage_force = 0
w_class = ITEMSIZE_TINY
drop_sound = 'sound/items/drop/cardboardbox.ogg'
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index 0089701bd68..91fa93cbf90 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -9,7 +9,7 @@
w_class = ITEMSIZE_NORMAL
throw_speed = 2
throw_range = 10
- force = 10
+ damage_force = 10
matter = list(MAT_STEEL = 90)
attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed")
drop_sound = 'sound/items/drop/gascan.ogg'
@@ -30,7 +30,7 @@
hitsound = null //it is much lighter, after all.
throw_force = 2
w_class = ITEMSIZE_SMALL
- force = 3.0
+ damage_force = 3.0
max_water = 150
spray_particles = 3
sprite_name = "miniFE"
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index b8f8e7ea816..a47add502b0 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -8,7 +8,7 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_guns.dmi',
)
item_state = "flamethrower_0"
- force = 3.0
+ damage_force = 3.0
throw_force = 10.0
throw_speed = 1
throw_range = 5
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index b193a18e2c7..96b1452c9bf 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -4,7 +4,7 @@
item_state = "grenade"
desc = "A hand made chemical grenade."
w_class = ITEMSIZE_SMALL
- force = 2.0
+ damage_force = 2.0
det_time = 50
unacidable = 1
diff --git a/code/game/objects/items/weapons/grenades/concussion.dm b/code/game/objects/items/weapons/grenades/concussion.dm
index 893adbebc3b..9628ad7a13d 100644
--- a/code/game/objects/items/weapons/grenades/concussion.dm
+++ b/code/game/objects/items/weapons/grenades/concussion.dm
@@ -76,7 +76,7 @@
name = "concussion-frag grenade"
desc = "A polymer and steel concussion grenade, optimized for disorienting personnel and being accused of war crimes."
icon_state = "conc-frag"
- var/fragment_types = list(/obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong, /obj/item/projectile/bullet/pellet/fragment/rubber, /obj/item/projectile/bullet/pellet/fragment/rubber/strong)
+ var/fragment_types = list(/obj/projectile/bullet/pellet/fragment, /obj/projectile/bullet/pellet/fragment/strong, /obj/projectile/bullet/pellet/fragment/rubber, /obj/projectile/bullet/pellet/fragment/rubber/strong)
var/num_fragments = 40 //total number of fragments produced by the grenade
var/spread_range = 5 // for above and below, see code\game\objects\items\weapons\grenades\explosive.dm
diff --git a/code/game/objects/items/weapons/grenades/explosive.dm b/code/game/objects/items/weapons/grenades/explosive.dm
index e907c928634..a58f16dacad 100644
--- a/code/game/objects/items/weapons/grenades/explosive.dm
+++ b/code/game/objects/items/weapons/grenades/explosive.dm
@@ -5,7 +5,7 @@
icon_state = "frggrenade"
item_state = "grenade"
- var/fragment_types = list(/obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong)
+ var/fragment_types = list(/obj/projectile/bullet/pellet/fragment, /obj/projectile/bullet/pellet/fragment, /obj/projectile/bullet/pellet/fragment, /obj/projectile/bullet/pellet/fragment/strong)
var/num_fragments = 63 //total number of fragments produced by the grenade
var/explosion_size = 2 //size of the center explosion
@@ -35,12 +35,12 @@
icon_state = "frag"
loadable = null
- fragment_types = list(/obj/item/projectile/bullet/pellet/fragment)
+ fragment_types = list(/obj/projectile/bullet/pellet/fragment)
num_fragments = 200 //total number of fragments produced by the grenade
-/obj/proc/fragmentate(var/turf/T=get_turf(src), var/fragment_number = 30, var/spreading_range = 5, var/list/fragtypes=list(/obj/item/projectile/bullet/pellet/fragment/))
+/obj/proc/fragmentate(var/turf/T=get_turf(src), var/fragment_number = 30, var/spreading_range = 5, var/list/fragtypes=list(/obj/projectile/bullet/pellet/fragment/))
set waitfor = 0
var/list/target_turfs = getcircle(T, spreading_range)
var/fragments_per_projectile = round(fragment_number/target_turfs.len)
@@ -48,7 +48,7 @@
for(var/turf/O in target_turfs)
sleep(0)
var/fragment_type = pickweight(fragtypes)
- var/obj/item/projectile/bullet/pellet/fragment/P = new fragment_type(T)
+ var/obj/projectile/bullet/pellet/fragment/P = new fragment_type(T)
P.pellets = fragments_per_projectile
P.shot_from = name
@@ -70,7 +70,7 @@
name = "mini fragmentation grenade"
desc = "A miniaturized fragmentation grenade, this one poses relatively little threat on its own."
icon_state = "minifrag"
- fragment_types = list(/obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong)
+ fragment_types = list(/obj/projectile/bullet/pellet/fragment/weak, /obj/projectile/bullet/pellet/fragment/weak, /obj/projectile/bullet/pellet/fragment, /obj/projectile/bullet/pellet/fragment/strong)
num_fragments = 20
spread_range = 3
explosion_size = 1
@@ -79,7 +79,7 @@
name = "improvised explosive device"
desc = "A crude explosive device made out of common household materials, designed to rupture and send shrapnel out in a wide radius."
icon_state = "ied"
- fragment_types = list(/obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong)
+ fragment_types = list(/obj/projectile/bullet/pellet/fragment/weak, /obj/projectile/bullet/pellet/fragment/weak, /obj/projectile/bullet/pellet/fragment, /obj/projectile/bullet/pellet/fragment/strong)
num_fragments = 20
spread_range = 3
explosion_size = 1
@@ -101,7 +101,7 @@
name = "\improper Tyrmalin mining charge"
desc = "A stick of dynamite with a crude blasting cap and timer assembly attached. These volatile explosives are frequently used by Tyrmalin for blast mining. It does not look safe."
icon_state = "goblincharge"
- fragment_types = list(/obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment/strong)
+ fragment_types = list(/obj/projectile/bullet/pellet/fragment/weak, /obj/projectile/bullet/pellet/fragment/weak, /obj/projectile/bullet/pellet/fragment/strong)
num_fragments = 10
spread_range = 3
explosion_size = 1
@@ -116,7 +116,7 @@
name = "\improper Tyrmalin heavy-duty mining charge"
desc = "A hefty bundle of hastily rigged dynamite. These bulky explosives are preferred for Tyrmalin blast mining operations. It does not look safe."
icon_state = "goblincharge_big"
- fragment_types = list(/obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment/weak, /obj/item/projectile/bullet/pellet/fragment/strong, /obj/item/projectile/bullet/pellet/fragment/strong)
+ fragment_types = list(/obj/projectile/bullet/pellet/fragment/weak, /obj/projectile/bullet/pellet/fragment/weak, /obj/projectile/bullet/pellet/fragment/weak, /obj/projectile/bullet/pellet/fragment/strong, /obj/projectile/bullet/pellet/fragment/strong)
num_fragments = 30
spread_range = 5
explosion_size = 2
diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index 558b0028155..2f14fa2317a 100644
--- a/code/game/objects/items/weapons/grenades/flashbang.dm
+++ b/code/game/objects/items/weapons/grenades/flashbang.dm
@@ -101,7 +101,7 @@
name = "stingbang"
desc = "A hand held grenade, with an adjustable timer, perfect for stopping riots and playing morally unthinkable pranks."
icon_state = "timeg"
- var/fragment_types = list(/obj/item/projectile/bullet/pellet/fragment/rubber, /obj/item/projectile/bullet/pellet/fragment/rubber/strong)
+ var/fragment_types = list(/obj/projectile/bullet/pellet/fragment/rubber, /obj/projectile/bullet/pellet/fragment/rubber/strong)
var/num_fragments = 45 //total number of fragments produced by the grenade
var/spread_range = 6 // for above and below, see code\game\objects\items\weapons\grenades\explosive.dm
@@ -115,7 +115,7 @@
/obj/item/grenade/flashbang/stingbang/shredbang
name = "shredbang"
desc = "A hand held grenade, with an adjustable timer, perfect for handling unruly citizens and getting detained by government officials."
- fragment_types = list(/obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong, /obj/item/projectile/bullet/pellet/fragment)
+ fragment_types = list(/obj/projectile/bullet/pellet/fragment, /obj/projectile/bullet/pellet/fragment/strong, /obj/projectile/bullet/pellet/fragment)
/obj/item/grenade/flashbang/clusterbang//Created by Polymorph, fixed by Sieve
desc = "Use of this weapon may constiute a war crime in your area, consult your local Facility Director."
diff --git a/code/game/objects/items/weapons/grenades/projectile.dm b/code/game/objects/items/weapons/grenades/projectile.dm
index a9f0df99637..3b781ef4611 100644
--- a/code/game/objects/items/weapons/grenades/projectile.dm
+++ b/code/game/objects/items/weapons/grenades/projectile.dm
@@ -3,7 +3,7 @@
icon_state = "frggrenade"
item_state = "grenade"
- var/list/projectile_types = list(/obj/item/projectile/bullet/pistol/rubber) // What sorts of projectiles might we make?
+ var/list/projectile_types = list(/obj/projectile/bullet/pistol/rubber) // What sorts of projectiles might we make?
//The radius of the circle used to launch projectiles. Lower values mean less projectiles are used but if set too low gaps may appear in the spread pattern
var/spread_range = 7
@@ -26,7 +26,7 @@
/obj/item/grenade/shooter/rubber
name = "rubber pellet grenade"
desc = "An anti-riot grenade that fires a cloud of rubber projectiles upon detonation."
- projectile_types = list(/obj/item/projectile/bullet/pistol/rubber)
+ projectile_types = list(/obj/projectile/bullet/pistol/rubber)
// Exists mostly so I don't have to copy+paste the sprite vars to a billion things
/obj/item/grenade/shooter/energy
@@ -37,20 +37,20 @@
/obj/item/grenade/shooter/energy/laser
name = "laser grenade"
desc = "A horrifically dangerous rave in a can."
- projectile_types = list(/obj/item/projectile/beam/midlaser)
+ projectile_types = list(/obj/projectile/beam/midlaser)
/obj/item/grenade/shooter/energy/flash
name = "flash grenade"
desc = "A grenade that creates a large number of flashes upon detonation."
- projectile_types = list(/obj/item/projectile/energy/flash)
+ projectile_types = list(/obj/projectile/energy/flash)
/obj/item/grenade/shooter/energy/tesla
name = "tesla grenade"
- projectile_types = list(/obj/item/projectile/beam/chain_lightning/lesser)
+ projectile_types = list(/obj/projectile/beam/chain_lightning/lesser)
// This is just fragmentate, but less specific. Don't know how to make either of them less awful, at the moment
-/obj/proc/launch_many_projectiles(var/turf/T=get_turf(src), var/spreading_range = 5, var/list/projectiletypes=list(/obj/item/projectile/bullet/pistol/rubber))
+/obj/proc/launch_many_projectiles(var/turf/T=get_turf(src), var/spreading_range = 5, var/list/projectiletypes=list(/obj/projectile/bullet/pistol/rubber))
set waitfor = 0
var/list/target_turfs = getcircle(T, spreading_range)
@@ -58,7 +58,7 @@
sleep(0)
var/shot_type = pick(projectiletypes)
- var/obj/item/projectile/P = new shot_type(T)
+ var/obj/projectile/P = new shot_type(T)
P.shot_from = src.name
P.old_style_target(O)
diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm
index 524fb970df5..484200235e1 100644
--- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm
+++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm
@@ -78,7 +78,7 @@
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
icon_state = "briefcase"
item_state = "briefcase"
- force = 8.0
+ damage_force = 8.0
throw_speed = 1
throw_range = 4
w_class = ITEMSIZE_LARGE
diff --git a/code/game/objects/items/weapons/improvised_components.dm b/code/game/objects/items/weapons/improvised_components.dm
index 364f2d0d2e3..3e7c8864c9a 100644
--- a/code/game/objects/items/weapons/improvised_components.dm
+++ b/code/game/objects/items/weapons/improvised_components.dm
@@ -52,7 +52,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "wiredrod"
item_state = "rods"
- force = 8
+ damage_force = 8
throw_force = 10
w_class = ITEMSIZE_NORMAL
attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
diff --git a/code/game/objects/items/weapons/material/ashtray.dm b/code/game/objects/items/weapons/material/ashtray.dm
index ff3154123d3..f309e806a59 100644
--- a/code/game/objects/items/weapons/material/ashtray.dm
+++ b/code/game/objects/items/weapons/material/ashtray.dm
@@ -77,7 +77,7 @@ var/global/list/ashtray_cache = list()
add_fingerprint(user)
update_icon()
else
- health = max(0,health - W.force)
+ health = max(0,health - W.damage_force)
to_chat(user, "You hit [src] with [W].")
if (health < 1)
shatter()
diff --git a/code/game/objects/items/weapons/material/bats.dm b/code/game/objects/items/weapons/material/bats.dm
index bf69b76824b..ea3696d390e 100644
--- a/code/game/objects/items/weapons/material/bats.dm
+++ b/code/game/objects/items/weapons/material/bats.dm
@@ -39,7 +39,7 @@
desc = "I won't dignify this one with a description."
icon_state = "penbat0"
base_icon = "penbat"
- force = 10
+ damage_force = 10
throw_force = 0
attack_verb = list("smacked", "slapped", "thwapped", "struck", "bapped", "bonked")
default_material = "plastic"
diff --git a/code/game/objects/items/weapons/material/chainsaw.dm b/code/game/objects/items/weapons/material/chainsaw.dm
index 81fe6755c21..64e5c300d23 100644
--- a/code/game/objects/items/weapons/material/chainsaw.dm
+++ b/code/game/objects/items/weapons/material/chainsaw.dm
@@ -40,7 +40,7 @@
//visible_message("[usr] starts \the [src] up with a loud grinding!")
attack_verb = list("shredded", "ripped", "torn")
playsound(src, 'sound/weapons/chainsaw_startup.ogg',40,1)
- force = active_force
+ damage_force = active_force
edge = 1
sharp = 1
on = 1
@@ -52,7 +52,7 @@
to_chat(user, "You switch the gas nozzle on the chainsaw, turning it off.")
attack_verb = list("bluntly hit", "beat", "knocked")
playsound(user, 'sound/weapons/chainsaw_turnoff.ogg',40,1)
- force = inactive_force
+ damage_force = inactive_force
edge = 0
sharp = 0
on = 0
@@ -132,7 +132,7 @@
icon_state = "chainsword0"
item_state = "chainsword0"
slot_flags = SLOT_BELT
- force = 30
+ damage_force = 30
throw_force = 10
w_class = ITEMSIZE_NORMAL
sharp = 1
@@ -156,7 +156,7 @@
//visible_message("[usr] starts \the [src] up with a loud grinding!")
attack_verb = list("shredded", "ripped", "torn")
playsound(src, 'sound/weapons/chainsaw_startup.ogg',40,1)
- force = active_force
+ damage_force = active_force
edge = 1
sharp = 1
on = 1
@@ -168,7 +168,7 @@
to_chat(user, "You release the trigger on the chainsword, turning it off.")
attack_verb = list("bluntly hit", "beat", "knocked")
playsound(user, 'sound/weapons/chainsaw_turnoff.ogg',40,1)
- force = inactive_force
+ damage_force = inactive_force
edge = 0
sharp = 0
on = 0
diff --git a/code/game/objects/items/weapons/material/foam.dm b/code/game/objects/items/weapons/material/foam.dm
index 9ae9adf5f82..4457549bf4a 100644
--- a/code/game/objects/items/weapons/material/foam.dm
+++ b/code/game/objects/items/weapons/material/foam.dm
@@ -4,7 +4,7 @@
/obj/item/material/sword/foam
attack_verb = list("bonked","whacked")
force_divisor = 1
- force = 0
+ damage_force = 0
unbreakable = 1
drop_sound = 'sound/items/drop/device.ogg'
pickup_sound = 'sound/items/pickup/device.ogg'
@@ -14,7 +14,7 @@
attack_verb = list("bonked","whacked")
force_wielded = 0
force_divisor = 1
- force = 0
+ damage_force = 0
unbreakable = 1
drop_sound = 'sound/items/drop/device.ogg'
pickup_sound = 'sound/items/pickup/device.ogg'
@@ -27,7 +27,7 @@
attack_verb = list("bonked","whacked")
force_wielded = 0
force_divisor = 1
- force = 0
+ damage_force = 0
applies_material_colour = 1
base_icon = "spear_mask0"
icon_state = "spear_mask0"
@@ -43,7 +43,7 @@
attack_verb = list("bonked","whacked")
force_wielded = 0
force_divisor = 1
- force = 0
+ damage_force = 0
applies_material_colour = 1
base_icon = "fireaxe_mask0"
icon_state = "fireaxe_mask0"
diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm
index c86441fc091..36997eec063 100644
--- a/code/game/objects/items/weapons/material/knives.dm
+++ b/code/game/objects/items/weapons/material/knives.dm
@@ -16,14 +16,14 @@
if(active)
edge = 1
sharp = 1
- ..() //Updates force.
- throw_force = max(3,force-3)
+ ..() //Updates damage_force.
+ throw_force = max(3,damage_force-3)
hitsound = 'sound/weapons/bladeslice.ogg'
icon_state += "_open"
w_class = ITEMSIZE_NORMAL
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
else
- force = 3
+ damage_force = 3
edge = 0
sharp = 0
hitsound = initial(hitsound)
@@ -75,7 +75,7 @@
name = "kitchen knife"
icon = 'icons/obj/kitchen.dmi'
icon_state = "knife"
- desc = "A general purpose chef's knife. Glithari Exports filet knives, Centauri bread knives, all pale in comparison to NanoTrasen's very own Cookware line of cheap, affordable chef's knives."
+ desc = "A general purpose chef's knife. Glithari Exports filet knives, Centauri bread knives, all pale in comparison to NanoTrasen's very own Cookware line of cheap, affordable chef's knives."
sharp = 1
edge = 1
force_divisor = 0.15 // 9 when wielded with hardness 60 (steel)
diff --git a/code/game/objects/items/weapons/material/material_armor.dm b/code/game/objects/items/weapons/material/material_armor.dm
index b93e6e38e0c..dc29283978b 100644
--- a/code/game/objects/items/weapons/material/material_armor.dm
+++ b/code/game/objects/items/weapons/material/material_armor.dm
@@ -73,8 +73,8 @@ Protectiveness | Armor %
if(!material || unbreakable)
return
- if(istype(source, /obj/item/projectile))
- var/obj/item/projectile/P = source
+ if(istype(source, /obj/projectile))
+ var/obj/projectile/P = source
if(P.check_pass_flags(ATOM_PASS_GLASS))
if(material.opacity - 0.3 <= 0)
return // Lasers ignore 'fully' transparent material.
@@ -132,8 +132,8 @@ Protectiveness | Armor %
return PROJECTILE_FORCE_MISS
if(material.reflectivity)
- if(istype(damage_source, /obj/item/projectile/energy) || istype(damage_source, /obj/item/projectile/beam))
- var/obj/item/projectile/P = damage_source
+ if(istype(damage_source, /obj/projectile/energy) || istype(damage_source, /obj/projectile/beam))
+ var/obj/projectile/P = damage_source
if(P.reflected) // Can't reflect twice
return ..()
@@ -183,11 +183,13 @@ Protectiveness | Armor %
for(var/number in list(melee_armor, bullet_armor, laser_armor, energy_armor, bomb_armor))
number = clamp( number, 0, 100)
- armor["melee"] = melee_armor
- armor["bullet"] = bullet_armor
- armor["laser"] = laser_armor
- armor["energy"] = energy_armor
- armor["bomb"] = bomb_armor
+ set_armor(list(
+ ARMOR_MELEE = melee_armor,
+ ARMOR_BULLET = bullet_armor,
+ ARMOR_LASER = laser_armor,
+ ARMOR_ENERGY = energy_armor,
+ ARMOR_BOMB = bomb_armor,
+ ))
if(!isnull(material.conductivity))
siemens_coefficient = clamp( material.conductivity / 10, 0, 10)
@@ -261,7 +263,7 @@ Protectiveness | Armor %
desc = "It's a bucket with a large hole cut into it. Desperate times require desperate measures, and you can't get more desperate than trusting a CleanMate bucket as a helmet."
inv_hide_flags = HIDEEARS|HIDEEYES|BLOCKHAIR
icon_state = "bucket"
- armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/misc/bucket
/obj/item/clothing/head/helmet/bucket/wood
name = "wooden bucket"
diff --git a/code/game/objects/items/weapons/material/material_weapons.dm b/code/game/objects/items/weapons/material/material_weapons.dm
index b9ec5c0ae5d..3721f581b76 100644
--- a/code/game/objects/items/weapons/material/material_weapons.dm
+++ b/code/game/objects/items/weapons/material/material_weapons.dm
@@ -55,22 +55,22 @@
if(no_force_calculations)
return
if(edge || sharp)
- force = material.get_edge_damage()
+ damage_force = material.get_edge_damage()
else
- force = material.get_blunt_damage()
- force = round(force*force_divisor)
+ damage_force = material.get_blunt_damage()
+ damage_force = round(damage_force*force_divisor)
if(dulled)
- force = round(force*dulled_divisor)
+ damage_force = round(damage_force*dulled_divisor)
throw_force = round(material.get_blunt_damage()*thrown_force_divisor)
// todo: remove, shitcode
if(material.name == "supermatter")
damtype = BURN //its hot
- force = 150 //double the force of a durasteel claymore.
+ damage_force = 150 //double the force of a durasteel claymore.
armor_penetration = 100 //regardless of armor
throw_force = 150
//spawn(1)
- // to_chat(world, "[src] has force [force] and throw_force [throw_force] when made from default material [material.name]")
+ // to_chat(world, "[src] has damage_force [damage_force] and throw_force [throw_force] when made from default material [material.name]")
/obj/item/material/proc/set_material(var/new_material)
material = get_material_by_name(new_material)
diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm
index 2b1393be344..0544fbf267b 100644
--- a/code/game/objects/items/weapons/material/shards.dm
+++ b/code/game/objects/items/weapons/material/shards.dm
@@ -138,7 +138,7 @@
if(affecting)
if(affecting.robotic >= ORGAN_ROBOT)
return
- if(affecting.take_damage(force, 0))
+ if(affecting.take_damage(damage_force, 0))
H.UpdateDamageIcon()
H.updatehealth()
if(affecting.organ_can_feel_pain())
diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm
index b8535917cef..2268542782f 100644
--- a/code/game/objects/items/weapons/material/twohanded.dm
+++ b/code/game/objects/items/weapons/material/twohanded.dm
@@ -34,12 +34,12 @@
var/mob/living/M = loc
if(istype(M) && M.can_wield_item(src) && is_held_twohanded(M))
wielded = 1
- force = force_wielded
+ damage_force = force_wielded
name = "[base_name] (wielded)"
update_icon()
else
wielded = 0
- force = force_unwielded
+ damage_force = force_unwielded
name = "[base_name]"
update_icon()
..()
@@ -52,7 +52,7 @@
force_unwielded = 150 //double the force of a durasteel claymore.
armor_penetration = 100 //regardless of armor
throw_force = 150
- force = force_unwielded
+ damage_force = force_unwielded
return
if(sharp || edge)
force_wielded = material.get_edge_damage()
@@ -60,9 +60,9 @@
force_wielded = material.get_blunt_damage()
force_wielded = round(force_wielded*force_divisor)
force_unwielded = round(force_wielded*unwielded_force_divisor)
- force = force_unwielded
- throw_force = round(force*thrown_force_divisor)
- //to_chat(world, "[src] has unwielded force [force_unwielded], wielded force [force_wielded] and throw_force [throw_force] when made from default material [material.name]")
+ damage_force = force_unwielded
+ throw_force = round(damage_force*thrown_force_divisor)
+ //to_chat(world, "[src] has unwielded damage_force [force_unwielded], wielded damage_force [force_wielded] and throw_force [throw_force] when made from default material [material.name]")
/obj/item/material/twohanded/Initialize(mapload, material_key)
. = ..()
@@ -115,13 +115,13 @@
if(istype(M) && M.can_wield_item(src) && M.is_holding(src) && !M.hands_full())
wielded = 1
pry = 1
- force = force_wielded
+ damage_force = force_wielded
name = "[base_name] (wielded)"
update_icon()
else
wielded = 0
pry = 0
- force = force_unwielded
+ damage_force = force_unwielded
name = "[base_name]"
update_icon()
..()
@@ -143,7 +143,7 @@
attack_verb = list("bonked","whacked")
force_wielded = 0
force_divisor = 0
- force = 0
+ damage_force = 0
applies_material_colour = 1
icon_state = "fireaxe_mask0"
base_icon = "fireaxe_mask"
@@ -202,7 +202,7 @@
name = "spear"
desc = "A haphazardly-constructed yet still deadly weapon of ancient design."
description_info = "This weapon can strike from two tiles away, and over certain objects such as tables, or other people."
- force = 10
+ damage_force = 10
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BACK
force_divisor = 0.35 // 10 when wielded with hardness 30 (glass)
@@ -316,13 +316,13 @@
if(istype(M) && M.can_wield_item(src) && M.is_holding(src) && !M.hands_full())
wielded = 1
pry = 1
- force = force_wielded
+ damage_force = force_wielded
name = "[base_name] (wielded)"
update_icon()
else
wielded = 0
pry = 0
- force = force_unwielded
+ damage_force = force_unwielded
name = "[base_name]"
update_icon()
..()
diff --git a/code/game/objects/items/weapons/material/whetstone.dm b/code/game/objects/items/weapons/material/whetstone.dm
index 3fb30e86d6c..e5e5568c8ee 100644
--- a/code/game/objects/items/weapons/material/whetstone.dm
+++ b/code/game/objects/items/weapons/material/whetstone.dm
@@ -6,7 +6,7 @@
desc = "A simple, fine grit stone, useful for sharpening dull edges and polishing out dents."
icon = 'icons/obj/weapons.dmi'
icon_state = "whetstone"
- force = 3
+ damage_force = 3
w_class = ITEMSIZE_SMALL
var/repair_amount = 5
var/repair_time = 40
diff --git a/code/game/objects/items/weapons/melee/deflect.dm b/code/game/objects/items/weapons/melee/deflect.dm
index 774e21dee2e..bbebdc1e8c7 100644
--- a/code/game/objects/items/weapons/melee/deflect.dm
+++ b/code/game/objects/items/weapons/melee/deflect.dm
@@ -21,7 +21,7 @@
/obj/item/melee/unique_parry_check(mob/user, mob/attacker, atom/damage_source)
if(.)
return .
- if(user.incapacitated() || !istype(damage_source, /obj/item/projectile))
+ if(user.incapacitated() || !istype(damage_source, /obj/projectile))
return 0
var/bad_arc = REVERSE_DIR(user.dir)
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index 7f7a628b98c..50d8337d6d0 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -33,7 +33,7 @@
else
item_state = "[icon_state]_blade"
embed_chance = active_embed_chance
- force = active_force
+ damage_force = active_force
throw_force = active_throwforce
sharp = 1
edge = 1
@@ -50,7 +50,7 @@
item_state = "[icon_state]"
active = 0
embed_chance = initial(embed_chance)
- force = initial(force)
+ damage_force = initial(damage_force)
throw_force = initial(throw_force)
sharp = initial(sharp)
edge = initial(edge)
@@ -196,9 +196,9 @@
active_force = 60
active_throwforce = 35
active_w_class = ITEMSIZE_HUGE
- //force = 40
+ //damage_force = 40
//throw_force = 25
- force = 20
+ damage_force = 20
throw_force = 10
throw_speed = 1
throw_range = 5
@@ -229,7 +229,7 @@
desc = "An energised axe."
active_force = 35
active_throwforce = 20
- force = 15
+ damage_force = 15
use_cell = TRUE
hitcost = 120
@@ -243,13 +243,13 @@
/obj/item/melee/energy/sword
color
name = "energy sword"
- desc = "May the force be within you."
+ desc = "May the damage_force be within you."
icon_state = "esword"
item_state = "esword"
active_force = 30
active_throwforce = 20
active_w_class = ITEMSIZE_LARGE
- force = 3
+ damage_force = 3
throw_force = 5
throw_speed = 1
throw_range = 5
@@ -302,7 +302,7 @@
return 0
/obj/item/melee/energy/sword/unique_parry_check(mob/user, mob/attacker, atom/damage_source)
- if(user.incapacitated() || !istype(damage_source, /obj/item/projectile/))
+ if(user.incapacitated() || !istype(damage_source, /obj/projectile/))
return 0
var/bad_arc = REVERSE_DIR(user.dir)
@@ -340,14 +340,13 @@
desc = "Handle with care."
icon_state = "dualsaber"
item_state = "dualsaber"
- force = 3
+ damage_force = 3
active_force = 60
throw_force = 5
throw_speed = 3
armor_penetration = 35
colorable = TRUE
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
projectile_parry_chance = 85
/obj/item/melee/energy/sword/dualsaber/pre_attack(atom/target, mob/user, clickchain_flags, list/params)
@@ -404,14 +403,14 @@
// Do some extra damage. Not a whole lot more since emp_act() is pretty nasty on FBPs already.
L.emp_act(3) // A weaker severity is used because this has infinite uses.
playsound(get_turf(L), 'sound/effects/EMPulse.ogg', 100, 1)
- L.adjustFireLoss(force * 3) // 15 Burn, for 20 total.
+ L.adjustFireLoss(damage_force * 3) // 15 Burn, for 20 total.
playsound(get_turf(L), 'sound/weapons/blade1.ogg', 100, 1)
// Make lesser robots really mad at us.
if(L.mob_class & MOB_CLASS_SYNTHETIC)
if(L.has_AI())
L.taunt(user)
- L.adjustFireLoss(force * 6) // 30 Burn, for 50 total.
+ L.adjustFireLoss(damage_force * 6) // 30 Burn, for 50 total.
/obj/item/melee/energy/sword/ionic_rapier/lance
name = "zero-point lance"
@@ -458,14 +457,13 @@
desc = "Make sure you bought batteries."
icon_state = "dualsaber"
item_state = "dualsaber"
- force = 3
+ damage_force = 3
active_force = 50
throw_force = 5
throw_speed = 3
armor_penetration = 30
colorable = TRUE
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
projectile_parry_chance = 65
hitcost = 150
@@ -489,7 +487,7 @@
desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
icon_state = "blade"
item_state = "blade"
- force = 40 //Normal attacks deal very high damage - about the same as wielded fire axe
+ damage_force = 40 //Normal attacks deal very high damage - about the same as wielded fire axe
armor_penetration = 100
sharp = 1
edge = 1
@@ -565,7 +563,7 @@
/obj/item/melee/energy/blade/unique_parry_check(mob/user, mob/attacker, atom/damage_source)
- if(user.incapacitated() || !istype(damage_source, /obj/item/projectile/))
+ if(user.incapacitated() || !istype(damage_source, /obj/projectile/))
return 0
var/bad_arc = REVERSE_DIR(user.dir)
@@ -583,7 +581,7 @@
armor_penetration = 75
sharp = 1
edge = 1
- force = 5
+ damage_force = 5
throw_force = 10
throw_speed = 7
throw_range = 11
@@ -626,7 +624,7 @@
icon_state = "hfmachete0"
sharp = TRUE
edge = TRUE
- force = 20 // You can be crueler than that, Jack.
+ damage_force = 20 // You can be crueler than that, Jack.
throw_force = 40
throw_speed = 8
throw_range = 8
@@ -659,7 +657,7 @@
else
active = !active
if(active)
- force = 40
+ damage_force = 40
throw_force = 20
throw_speed = 3
// sharpness = 1.7
@@ -670,7 +668,7 @@
w_class = WEIGHT_CLASS_BULKY
// user.lazy_register_event(/lazy_event/on_moved, src, .proc/mob_moved)
else
- force = initial(force)
+ damage_force = initial(damage_force)
throw_force = initial(throw_force)
throw_speed = initial(throw_speed)
// sharpness = initial(sharpness)
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
index fd580541285..68cc5b7b0d9 100644
--- a/code/game/objects/items/weapons/melee/misc.dm
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -4,7 +4,7 @@
icon_state = "chain"
icon = 'icons/obj/weapons.dmi'
slot_flags = SLOT_BELT
- force = 10
+ damage_force = 10
throw_force = 7
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_COMBAT = 4)
@@ -21,7 +21,7 @@
hitsound = "swing_hit"
icon_state = "sabre"
hitsound = 'sound/weapons/rapierhit.ogg'
- force = 35
+ damage_force = 35
throw_force = 15
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_COMBAT = 4)
@@ -39,7 +39,7 @@
icon_state = "umbrella_closed"
addblends = "umbrella_closed_a"
slot_flags = SLOT_BELT
- force = 5
+ damage_force = 5
throw_force = 5
w_class = ITEMSIZE_NORMAL
var/open = FALSE
@@ -75,7 +75,7 @@
desc = "The red crystal blade's polished surface glints in the light, giving off a faint glow."
icon_state = "soulblade"
slot_flags = SLOT_BELT | SLOT_BACK
- force = 30
+ damage_force = 30
throw_force = 10
w_class = ITEMSIZE_NORMAL
sharp = 1
@@ -114,7 +114,7 @@
icon = 'icons/obj/weapons.dmi'
w_class = ITEMSIZE_HUGE
slot_flags = SLOT_BELT
- force = 10
+ damage_force = 10
throw_force = 7
var/board_item_type = null
@@ -131,7 +131,7 @@
icon_state = "skateboard"
icon = 'icons/obj/weapons.dmi'
slot_flags = SLOT_BELT
- force = 10
+ damage_force = 10
board_item_type = /obj/vehicle_old/skateboard/improv
throw_force = 7
@@ -172,7 +172,7 @@
desc = "This deadly halberd is wielded by Columbina's melee specialists. The curved blade at the end has been painted to look like a banana, disguising its deadly edge."
icon_state = "clownstaff"
slot_flags = SLOT_BELT | SLOT_BACK
- force = 30
+ damage_force = 30
throw_force = 10
w_class = ITEMSIZE_NORMAL
sharp = 1
@@ -199,7 +199,7 @@
icon_state = "writhing"
item_state = "knife"
slot_flags = SLOT_BELT
- force = 30
+ damage_force = 30
throw_force = 10
w_class = ITEMSIZE_NORMAL
sharp = 1
@@ -242,7 +242,7 @@
desc = "A sharp sword crafted from knapped bone. In spite of its primitive appearance, it is still incredibly deadly."
icon_state = "bonesword"
hitsound = 'sound/weapons/bladeslice.ogg'
- force = 20
+ damage_force = 20
throw_force = 10
w_class = ITEMSIZE_NORMAL
slot_flags = SLOT_BELT
@@ -300,7 +300,7 @@
/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.force = 20
+ src.damage_force = 20
src.damtype = "fire"
src.w_class = ITEMSIZE_LARGE
src.hitsound = 'sound/weapons/gun_flamethrower2.ogg'
@@ -310,7 +310,7 @@
/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.force = 20
+ src.damage_force = 20
src.damtype = "brute"
src.w_class = initial(src.w_class)
src.hitsound = initial(src.hitsound)
@@ -330,7 +330,7 @@
item_state = "knife"
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "stabbed", "sliced", "diced", "cut")
- force = 8
+ damage_force = 8
throw_force = 5
w_class = ITEMSIZE_SMALL
sharp = 1
@@ -379,7 +379,7 @@
desc = "A long, heavy hammer. This weapons crackles with barely contained energy."
icon_state = "mjollnir"
hitsound = 'sound/effects/lightningbolt.ogg'
- force = 0
+ damage_force = 0
throw_force = 30
force_wielded = 75
force_unwielded = 50
@@ -550,7 +550,7 @@
else if(T)
T.visible_message("\The [src] turns on.")
playsound(loc, acti_sound, 50, 1)
- src.force = 15
+ src.damage_force = 15
src.damtype = "fire"
src.w_class = ITEMSIZE_LARGE
src.hitsound = 'sound/items/welder.ogg'
@@ -569,7 +569,7 @@
else if(T)
T.visible_message("\The [src] turns off.")
playsound(loc, deac_sound, 50, 1)
- src.force = 3
+ src.damage_force = 3
src.damtype = "brute"
src.w_class = initial(src.w_class)
src.active = 0
diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm
index d1684c42244..c36e4fcc130 100644
--- a/code/game/objects/items/weapons/mop.dm
+++ b/code/game/objects/items/weapons/mop.dm
@@ -7,7 +7,7 @@ GLOBAL_LIST_BOILERPLATE(all_mops, /obj/item/mop)
name = "mop"
icon = 'icons/obj/janitor.dmi'
icon_state = "mop"
- force = 5.0
+ damage_force = 5.0
throw_force = 10.0
throw_speed = 5
throw_range = 10
@@ -145,7 +145,7 @@ GLOBAL_LIST_BOILERPLATE(all_mops, /obj/item/mop)
name = "advanced mop"
icon_state = "advmop"
item_state = "mop"
- force = 6
+ damage_force = 6
throw_force = 11
mopspeed = 15
var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water.
diff --git a/code/game/objects/items/weapons/mop_deploy.dm b/code/game/objects/items/weapons/mop_deploy.dm
index 8d855866eb1..b2087410724 100644
--- a/code/game/objects/items/weapons/mop_deploy.dm
+++ b/code/game/objects/items/weapons/mop_deploy.dm
@@ -2,7 +2,7 @@
name = "mop"
desc = "Deployable mop."
icon_state = "mop"
- force = 3
+ damage_force = 3
anchored = 1 // Never spawned outside of inventory, should be fine.
throw_force = 1 //Throwing or dropping the item deletes it.
throw_speed = 1
diff --git a/code/game/objects/items/weapons/nullrod.dm b/code/game/objects/items/weapons/nullrod.dm
index 6a615b2e55d..3fbe29acc18 100644
--- a/code/game/objects/items/weapons/nullrod.dm
+++ b/code/game/objects/items/weapons/nullrod.dm
@@ -5,7 +5,7 @@
icon_state = "nullrod"
item_state = "nullrod"
slot_flags = SLOT_BELT
- force = 15
+ damage_force = 15
throw_speed = 1
throw_range = 4
throw_force = 10
@@ -121,7 +121,7 @@
item_state = "godstaff-red"
name = "red holy staff"
desc = "It has a mysterious, protective aura."
- force = 5
+ damage_force = 5
slot_flags = SLOT_BACK
defend_chance = 50
var/shield_icon = "shield-red"
@@ -184,7 +184,7 @@
slot_flags = SLOT_BELT
/obj/item/nullrod/claymore/multiverse/attack_mob(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
- force = rand(1, 30)
+ damage_force = rand(1, 30)
return ..()
/obj/item/nullrod/claymore/saber
@@ -213,7 +213,7 @@
icon_state = "sord"
item_state = "sord"
slot_flags = SLOT_BELT
- force = 4.13
+ damage_force = 4.13
throw_force = 1
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
@@ -281,7 +281,7 @@
item_state = "pride"
name = "Pride-struck Hammer"
desc = "It resonates an aura of Pride."
- force = 16
+ damage_force = 16
throw_force = 15
w_class = 4
slot_flags = SLOT_BACK
@@ -304,7 +304,7 @@
icon_state = "chain"
item_state = "chain"
slot_flags = SLOT_BELT
- force = 12
+ damage_force = 12
reach = 2
attack_verb = list("whipped", "lashed")
hitsound = 'sound/weapons/towelwhip.ogg'
@@ -316,7 +316,7 @@
item_state = "fedora"
slot_flags = SLOT_HEAD
icon = 'icons/obj/clothing/hats.dmi'
- force = 0
+ damage_force = 0
throw_speed = 4
throw_range = 7
throw_force = 30
@@ -351,7 +351,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "basecarp"
item_state = "basecarp"
- force = 15
+ damage_force = 15
attack_verb = list("bitten", "eaten", "fin slapped")
hitsound = 'sound/weapons/bite.ogg'
var/used_blessing = FALSE
@@ -369,7 +369,7 @@
/obj/item/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking
name = "monk's staff"
desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, it is now used to harass the clown."
- force = 15
+ damage_force = 15
defend_chance = 40
slot_flags = SLOT_BACK
sharp = 1
@@ -435,7 +435,7 @@
item_state = null
name = "prayer beads"
desc = "A set of prayer beads used by many of the more traditional religions in space"
- force = 4
+ damage_force = 4
throw_force = 0
attack_verb = list("whipped", "repented", "lashed", "flagellated")
drop_sound = 'sound/items/drop/card.ogg'
diff --git a/code/game/objects/items/weapons/other.dm b/code/game/objects/items/weapons/other.dm
index a1548fcb157..cc109805c90 100644
--- a/code/game/objects/items/weapons/other.dm
+++ b/code/game/objects/items/weapons/other.dm
@@ -5,7 +5,7 @@
desc = "Should anything ever go wrong..."
icon = 'icons/obj/items.dmi'
icon_state = "red_phone"
- force = 3.0
+ damage_force = 3.0
throw_force = 2.0
throw_speed = 1
throw_range = 4
@@ -123,7 +123,7 @@
SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_melee.dmi',
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_melee.dmi',
)
- force = 5.0
+ damage_force = 5.0
throw_force = 7.0
w_class = ITEMSIZE_NORMAL
matter = list(MAT_STEEL = 50)
@@ -204,7 +204,7 @@
)
slot_flags = SLOT_BELT
w_class = ITEMSIZE_SMALL
- force = 3
+ damage_force = 3
var/on = 0
/obj/item/cane/whitecane/collapsible/attack_self(mob/user)
@@ -221,7 +221,7 @@
icon_state = "whitecane1out"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "whitecane", SLOT_ID_LEFT_HAND = "whitecane")
w_class = ITEMSIZE_NORMAL
- force = 5
+ damage_force = 5
attack_verb = list("smacked", "struck", "cracked", "beaten")
else
user.visible_message(
@@ -232,7 +232,7 @@
icon_state = "whitecane1in"
item_state_slots = list(SLOT_ID_RIGHT_HAND = null, SLOT_ID_LEFT_HAND = null)
w_class = ITEMSIZE_SMALL
- force = 3
+ damage_force = 3
attack_verb = list("hit", "poked", "prodded")
if(istype(user,/mob/living/carbon/human))
@@ -291,7 +291,7 @@
name = "wet floor sign"
icon = 'icons/obj/janitor.dmi'
icon_state = "caution"
- force = 1.0
+ damage_force = 1.0
throw_force = 3.0
throw_speed = 1
throw_range = 5
@@ -363,7 +363,7 @@
SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_melee.dmi',
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_melee.dmi',
)
- force = 3.0
+ damage_force = 3.0
throw_force = 5.0
throw_speed = 1
throw_range = 5
@@ -388,7 +388,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "stick"
item_state = "cane"
- force = 3.0
+ damage_force = 3.0
throw_force = 5.0
throw_speed = 1
throw_range = 5
diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm
index 72992c19c1d..d746575ecc6 100644
--- a/code/game/objects/items/weapons/shields.dm
+++ b/code/game/objects/items/weapons/shields.dm
@@ -5,8 +5,8 @@
/proc/check_shield_arc(mob/user, var/bad_arc, atom/damage_source = null, mob/attacker = null)
//check attack direction
var/attack_dir = 0 //direction from the user to the source of the attack
- if(istype(damage_source, /obj/item/projectile))
- var/obj/item/projectile/P = damage_source
+ if(istype(damage_source, /obj/projectile))
+ var/obj/projectile/P = damage_source
attack_dir = get_dir(get_turf(user), P.starting)
else if(attacker)
attack_dir = get_dir(get_turf(user), get_turf(attacker))
@@ -19,7 +19,7 @@
/proc/default_parry_check(mob/user, mob/attacker, atom/damage_source)
//parry only melee attacks
- if(istype(damage_source, /obj/item/projectile) || (attacker && get_dist(user, attacker) > 1) || user.incapacitated())
+ if(istype(damage_source, /obj/projectile) || (attacker && get_dist(user, attacker) > 1) || user.incapacitated())
return 0
//block as long as they are not directly behind us
@@ -62,7 +62,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "riot"
slot_flags = SLOT_BACK
- force = 5.0
+ damage_force = 5.0
throw_force = 5.0
throw_speed = 1
throw_range = 4
@@ -82,9 +82,9 @@
if(prob(get_block_chance(user, damage, damage_source, attacker)))
//At this point, we succeeded in our roll for a block attempt, however these kinds of shields struggle to stand up
//to strong bullets and lasers. They still do fine to pistol rounds of all kinds, however.
- if(istype(damage_source, /obj/item/projectile))
- var/obj/item/projectile/P = damage_source
- if((is_sharp(P) && P.armor_penetration >= 10) || istype(P, /obj/item/projectile/beam))
+ if(istype(damage_source, /obj/projectile))
+ var/obj/projectile/P = damage_source
+ if((is_sharp(P) && P.armor_penetration >= 10) || istype(P, /obj/projectile/beam))
//If we're at this point, the bullet/beam is going to go through the shield, however it will hit for less damage.
//Bullets get slowed down, while beams are diffused as they hit the shield, so these shields are not /completely/
//useless. Extremely penetrating projectiles will go through the shield without less damage.
@@ -178,21 +178,19 @@
/obj/item/shield/makeshift
name = "metal shield"
desc = "A large shield made of wired and welded sheets of metal. The handle is made of cloth and leather, making it unwieldy."
- armor = list("melee" = 25, "bullet" = 25, "laser" = 5, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 80)
icon = 'icons/obj/weapons.dmi'
icon_state = "makeshift_shield"
item_state = "metal"
slot_flags = null
- force = 10
+ damage_force = 10
throw_force = 7
/obj/item/shield/riot/tower
name = "tower shield"
desc = "An immense tower shield. Designed to ensure maximum protection to the user, at the expense of mobility."
- armor = list("melee" = 95, "bullet" = 95, "laser" = 75, "energy" = 60, "bomb" = 90, "bio" = 90, "rad" = 0, "fire" = 90, "acid" = 10) //Armor for the item, dosnt transfer to user
item_state = "metal"
icon_state = "metal"
- force = 16
+ damage_force = 16
slowdown = 2
throw_force = 15 //Massive piece of metal
w_class = ITEMSIZE_HUGE
@@ -248,13 +246,11 @@
/obj/item/shield/riot/energy_proof
name = "energy resistant shield"
desc = "An ablative shield designed to absorb and disperse energy attacks. This comes at significant cost to its ability to withstand ballistics and kinetics, breaking apart easily."
- armor = list("melee" = 30, "bullet" = -10, "laser" = 80, "energy" = 80, "bomb" = -40, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
icon_state = "riot_laser"
/obj/item/shield/riot/kinetic_proof
name = "kinetic resistant shield"
desc = "A polymer and ceramic shield designed to absorb ballistic projectiles and kinetic force. It doesn't do very well into energy attacks, especially from weapons that inflict burns."
- armor = list("melee" = 30, "bullet" = 80, "laser" = 0, "energy" = 0, "bomb" = -40, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
icon_state = "riot_bullet"
//Exotics/Costume Shields
@@ -294,7 +290,7 @@
item_state = "eshield"
slot_flags = SLOT_EARS
atom_flags = NOCONDUCT
- force = 3.0
+ damage_force = 3.0
throw_force = 5.0
throw_speed = 1
throw_range = 4
@@ -322,9 +318,9 @@
playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1)
/obj/item/shield/energy/get_block_chance(mob/user, var/damage, atom/damage_source = null, mob/attacker = null)
- if(istype(damage_source, /obj/item/projectile))
- var/obj/item/projectile/P = damage_source
- if((is_sharp(P) && damage > 10) || istype(P, /obj/item/projectile/beam))
+ if(istype(damage_source, /obj/projectile))
+ var/obj/projectile/P = damage_source
+ if((is_sharp(P) && damage > 10) || istype(P, /obj/projectile/beam))
return (base_block_chance - round(damage / 3)) //block bullets and beams using the old block chance
return base_block_chance
@@ -338,7 +334,7 @@
H?.take_organ_damage(5)
active = !active
if (active)
- force = 10
+ damage_force = 10
update_icon()
w_class = ITEMSIZE_LARGE
slot_flags = null
@@ -346,7 +342,7 @@
to_chat(user, "\The [src] is now active.")
else
- force = 3
+ damage_force = 3
update_icon()
w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
@@ -396,7 +392,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "teleriot0"
slot_flags = null
- force = 3
+ damage_force = 3
throw_force = 3
throw_speed = 3
throw_range = 4
@@ -418,14 +414,14 @@
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
if(active)
- force = 8
+ damage_force = 8
throw_force = 5
throw_speed = 2
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BACK
to_chat(user, "You extend \the [src].")
else
- force = 3
+ damage_force = 3
throw_force = 3
throw_speed = 3
w_class = ITEMSIZE_NORMAL
@@ -453,7 +449,7 @@
icon = 'icons/obj/weapons_vr.dmi'
icon_state = "wolfgirlshield"
slot_flags = SLOT_BACK | SLOT_OCLOTHING
- force = 5.0
+ damage_force = 5.0
throw_force = 5.0
throw_speed = 2
throw_range = 6
@@ -472,7 +468,7 @@
SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_melee.dmi',
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_melee.dmi',
)
- force = 5.0
+ damage_force = 5.0
throw_force = 5.0
throw_speed = 2
throw_range = 6
@@ -485,7 +481,7 @@
icon_state = "foamriot"
slot_flags = SLOT_BACK
base_block_chance = 5
- force = 0
+ damage_force = 0
throw_force = 0
throw_speed = 2
throw_range = 6
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index 455019ec849..724dd88be19 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -7,7 +7,7 @@
item_state = "baton"
rad_flags = RAD_BLOCK_CONTENTS
slot_flags = SLOT_BELT
- force = 15
+ damage_force = 15
sharp = 0
edge = 0
throw_force = 7
@@ -196,7 +196,7 @@
desc = "An improvised stun baton."
icon_state = "stunprod"
item_state = "prod"
- force = 3
+ damage_force = 3
throw_force = 5
stunforce = 0
agonyforce = 60 //same force as a stunbaton, but uses way more charge.
@@ -248,7 +248,7 @@
desc = "An improvised stun baton with a bluespace crystal attached to the tip."
icon_state = "teleprod"
item_state = "prod"
- force = 3
+ damage_force = 3
throw_force = 5
stunforce = 0
agonyforce = 60 //same force as a stunbaton, but uses way more charge.
@@ -268,7 +268,7 @@
description_info = "Hitting a lesser lifeform with this while it is on will compel them to attack you above other nearby targets. Otherwise \
it works like a regular stun baton, just less effectively."
icon_state = "shocker"
- force = 10
+ damage_force = 10
throw_force = 5
agonyforce = 25 // Less efficent than a regular baton.
attack_verb = list("poked")
@@ -308,7 +308,7 @@
icon_state = "mini_baton"
item_state = "mini_baton"
w_class = ITEMSIZE_SMALL
- force = 5
+ damage_force = 5
stunforce = 5
throw_force = 2
agonyforce = 120 //one-hit
diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index b2807b2bde7..b7ada53617f 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -60,7 +60,7 @@
icon_state = "drill"
hitsound = 'sound/weapons/circsawhit.ogg'
matter = list(MAT_STEEL = 15000, MAT_GLASS = 10000)
- force = 15.0
+ damage_force = 15.0
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
attack_verb = list("drilled")
@@ -80,7 +80,7 @@
name = "scalpel"
desc = "Cut, cut, and once more cut."
icon_state = "scalpel"
- force = 10.0
+ damage_force = 10.0
sharp = 1
edge = 1
w_class = ITEMSIZE_TINY
@@ -113,27 +113,27 @@
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced."
icon_state = "scalpel_laser2_on"
damtype = "fire"
- force = 12.0
+ damage_force = 12.0
/obj/item/surgical/scalpel/laser3
name = "laser scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!"
icon_state = "scalpel_laser3_on"
damtype = "fire"
- force = 15.0
+ damage_force = 15.0
/obj/item/surgical/scalpel/manager
name = "incision management system"
desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps."
icon_state = "scalpel_manager_on"
- force = 7.5
+ damage_force = 7.5
/obj/item/surgical/scalpel/ripper
name = "organ pincers"
desc = "A horrifying bladed tool with a large metal spike in its center. The tool is used for rapidly removing organs from hopefully willing patients."
icon_state = "organ_ripper"
item_state = "bone_setter"
- force = 15.0
+ damage_force = 15.0
tool_speed = 0.75
origin_tech = list(TECH_MATERIAL = 5, TECH_BIO = 3, TECH_ILLEGAL = 2)
@@ -145,7 +145,7 @@
desc = "For heavy duty cutting."
icon_state = "saw3"
hitsound = 'sound/weapons/circsawhit.ogg'
- force = 15.0
+ damage_force = 15.0
w_class = ITEMSIZE_NORMAL
throw_force = 9.0
throw_speed = 3
@@ -174,14 +174,14 @@
name = "bone gel"
desc = "For fixing bones."
icon_state = "bone-gel"
- force = 0
+ damage_force = 0
throw_force = 1.0
/obj/item/surgical/FixOVein
name = "FixOVein"
desc = "Like bone gel. For veins."
icon_state = "fixovein"
- force = 0
+ damage_force = 0
throw_force = 1.0
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 3)
var/usage_amount = 10
@@ -190,7 +190,7 @@
name = "bone setter"
desc = "Put them in their place."
icon_state = "bone_setter"
- force = 8.0
+ damage_force = 8.0
throw_force = 9.0
throw_speed = 3
throw_range = 5
@@ -200,7 +200,7 @@
name = "bone clamp"
desc = "The best way to get a bone fixed fast."
icon_state = "bone_clamp"
- force = 8
+ damage_force = 8
throw_force = 9
throw_speed = 3
throw_range = 5
@@ -308,7 +308,7 @@
name = "primitive scalpel"
desc = "Finely knapped glass attached to a carved bone by sinew. It seems like it'd be good at cutting."
icon_state = "scalpel_bone"
- force = 10.0
+ damage_force = 10.0
sharp = 1
edge = 1
w_class = ITEMSIZE_TINY
@@ -331,7 +331,7 @@
name = "primitive bone saw"
desc = "An admittedly complex, yet still inferior tool, this bone saw uses knapped volcanic glass as cutting teeth."
icon_state = "saw_bone"
- force = 15.0
+ damage_force = 15.0
w_class = ITEMSIZE_NORMAL
throw_force = 9.0
throw_speed = 3
diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm
index d1225cb5f10..48bbf3f2b8d 100644
--- a/code/game/objects/items/weapons/swords_axes_etc.dm
+++ b/code/game/objects/items/weapons/swords_axes_etc.dm
@@ -15,7 +15,7 @@
icon_state = "baton"
item_state = "classic_baton"
slot_flags = SLOT_BELT
- force = 10
+ damage_force = 10
drop_sound = 'sound/items/drop/crowbar.ogg'
pickup_sound = 'sound/items/pickup/crowbar.ogg'
@@ -23,12 +23,12 @@
if ((MUTATION_CLUMSY in user.mutations) && prob(50) && isliving(user))
var/mob/living/L = user
to_chat(user, "You club yourself over the head.")
- user.Weaken(3 * force)
+ user.Weaken(3 * damage_force)
if(ishuman(user))
var/mob/living/carbon/human/H = user
- H.apply_damage(2*force, BRUTE, BP_HEAD)
+ H.apply_damage(2*damage_force, BRUTE, BP_HEAD)
else
- L.take_organ_damage(2*force)
+ L.take_organ_damage(2*damage_force)
return
return ..()
@@ -48,7 +48,7 @@
icon_state = "telebaton"
slot_flags = SLOT_BELT
w_class = ITEMSIZE_SMALL
- force = 3
+ damage_force = 3
var/on = 0
var/off_force = 3
var/on_force = 15
@@ -68,7 +68,7 @@
src.icon_state = "[icon_state]_1"
src.item_state = "[item_state]_1"
w_class = ITEMSIZE_NORMAL
- force = on_force //quite robust
+ damage_force = on_force //quite robust
attack_verb = list("struck", "beat")
else
on = 0
@@ -78,7 +78,7 @@
src.icon_state = initial(icon_state)
src.item_state = initial(item_state)
w_class = ITEMSIZE_SMALL
- force = off_force //not so robust now
+ damage_force = off_force //not so robust now
attack_verb = list("poked", "jabbed")
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
@@ -99,25 +99,25 @@
if(on)
if ((MUTATION_CLUMSY in user.mutations) && prob(50))
to_chat(user, "You club yourself over the head.")
- user.Weaken(3 * force)
+ user.Weaken(3 * damage_force)
if(ishuman(user))
var/mob/living/carbon/human/H = user
- H.apply_damage(2*force, BRUTE, BP_HEAD)
+ H.apply_damage(2*damage_force, BRUTE, BP_HEAD)
else if(isliving(user))
var/mob/living/L = user
- L.take_organ_damage(2*force)
+ L.take_organ_damage(2*damage_force)
return
var/old_damtype = damtype
var/old_attack_verb = attack_verb
- var/old_force = force
+ var/old_force = damage_force
if(user.a_intent != INTENT_HARM)
damtype = HALLOSS
attack_verb = list("suppressed")
- force = on_pain_force
+ damage_force = on_pain_force
. = ..()
damtype = old_damtype
attack_verb = old_attack_verb
- force = old_force
+ damage_force = old_force
else
return ..()
@@ -143,7 +143,7 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_material.dmi',
)
item_state = "armblade"
- force = 15 // same force as a drill
+ damage_force = 15 // same damage_force as a drill
defend_chance = 20 // did you know melee weapons have a default 5% chance to block frontal melee?
sharp = TRUE
edge = TRUE
@@ -164,7 +164,7 @@
name = "jagged spike"
desc = "A polished spike with miniscule edges all over its surface. You won't be holding onto it for long if you stab someone with it."
embed_chance = 100 // these should probably come in a bandolier or have some sort of fabricator, tbf
- force = 5 // HAVING A STICK JAMMED INTO YOU IS LIKELY BAD FOR YOUR HEALTH // well to be fair most of the damage comes from the embed not the stab
+ damage_force = 5 // HAVING A STICK JAMMED INTO YOU IS LIKELY BAD FOR YOUR HEALTH // well to be fair most of the damage comes from the embed not the stab
w_class = WEIGHT_CLASS_SMALL
matter = list(MAT_STEEL = 2500)
sharp = TRUE
@@ -184,12 +184,12 @@
desc = "Apply munchkin cat."
icon = 'icons/obj/furniture.dmi'
icon_state = "cn_stool_c"
- force = 10
+ damage_force = 10
throw_force = 10
w_class = ITEMSIZE_SMALL
var/on = 0
slot_flags = null
- force = 0
+ damage_force = 0
hitsound = "sound/items/bikehorn.ogg"
/obj/item/melee/stool/faiza/attack_self(mob/user)
@@ -216,7 +216,7 @@
icon_state = "bokken"
slot_flags = SLOT_BELT | SLOT_BACK
damtype = HALLOSS
- force = 5
+ damage_force = 5
throw_force = 5
attack_verb = list("whacked", "smacked", "struck")
hitsound = 'sound/weapons/genhit3.ogg'
@@ -241,7 +241,7 @@
var/obj/item/stack/rods/R = I
if(!reinforced)
if(R.use(1))
- src.force = (force + 5)
+ src.damage_force = (damage_force + 5)
reinforced = TRUE
to_chat(user, "You slide a metal rod into [src]\'s hilt. It feels a little heftier in your hands.")
else
@@ -258,20 +258,20 @@
name = "hardwood bokken"
desc = "A blunt katana made from hardwood, a dense organic wood."
icon_state = "bokken_hard"
- force = 10
+ damage_force = 10
/obj/item/melee/bokken/waki
name = "wakizashi bokken"
desc = "A space-Japanese training sword made of wood and shaped like a wakizashi."
icon_state = "wakibokken"
slot_flags = SLOT_BELT
- force = 5
+ damage_force = 5
/obj/item/melee/bokken/waki/hardwood
name = "wakizashi hardwood bokken"
desc = "A blunt wakizashi made from hardwood, a dense organic wood."
icon_state = "wakibokken_hard"
- force = 10
+ damage_force = 10
/obj/item/bokken_hilt
name = "bokken hilt"
@@ -303,7 +303,7 @@
desc = "A thick rod of hardened wood, useful as a walking stick, as much as a defensive tool."
icon = 'icons/obj/weapons.dmi'
icon_state = "wakibokken_blade_h"
- force = 15
+ damage_force = 15
slot_flags = SLOT_BACK
sharp = 1
hitsound = "swing_hit"
@@ -345,7 +345,7 @@
icon_state = "kanabo"
slot_flags = SLOT_BACK
damtype = BRUTE
- force = 15
+ damage_force = 15
throw_force = 5
attack_verb = list("battered", "hammered", "struck")
hitsound = 'sound/weapons/genhit3.ogg'
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index 147f6a69192..038463b6409 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -140,7 +140,7 @@
gauge_cap = 3
slot_flags = SLOT_BELT
w_class = ITEMSIZE_SMALL
- force = 4
+ damage_force = 4
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
volume = 2 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 0359ae6cb39..08d3c83148d 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -20,7 +20,7 @@ var/list/global/tank_gauge_cache = list()
slot_flags = SLOT_BACK
w_class = ITEMSIZE_NORMAL
- force = 5.0
+ damage_force = 5.0
throw_force = 10.0
throw_speed = 1
throw_range = 4
@@ -438,7 +438,7 @@ var/list/global/tank_gauge_cache = list()
var/num_fragments = round(rand(8,10) * sqrt(strength * mult))
- src.fragmentate(T, num_fragments, rand(5) + 7, list(/obj/item/projectile/bullet/pellet/fragment/tank/small = 7,/obj/item/projectile/bullet/pellet/fragment/tank = 2,/obj/item/projectile/bullet/pellet/fragment/strong = 1))
+ src.fragmentate(T, num_fragments, rand(5) + 7, list(/obj/projectile/bullet/pellet/fragment/tank/small = 7,/obj/projectile/bullet/pellet/fragment/tank = 2,/obj/projectile/bullet/pellet/fragment/strong = 1))
if(istype(loc, /obj/item/transfer_valve))
var/obj/item/transfer_valve/TTV = loc
@@ -475,7 +475,7 @@ var/list/global/tank_gauge_cache = list()
var/mult = (air_contents.total_moles**2/3)/((29*0.64) **2/3) //tanks appear to be experiencing a reduction on scale of about 0.64 total moles
var/num_fragments = round(rand(6,8) * sqrt(strength * mult)) //Less chunks, but bigger
- src.fragmentate(T, num_fragments, 7, list(/obj/item/projectile/bullet/pellet/fragment/tank/small = 1,/obj/item/projectile/bullet/pellet/fragment/tank = 5,/obj/item/projectile/bullet/pellet/fragment/strong = 4))
+ src.fragmentate(T, num_fragments, 7, list(/obj/projectile/bullet/pellet/fragment/tank/small = 1,/obj/projectile/bullet/pellet/fragment/tank = 5,/obj/projectile/bullet/pellet/fragment/strong = 4))
if(istype(loc, /obj/item/transfer_valve))
var/obj/item/transfer_valve/TTV = loc
diff --git a/code/game/objects/items/weapons/towels.dm b/code/game/objects/items/weapons/towels.dm
index 5452dd4659f..db30f12ff88 100644
--- a/code/game/objects/items/weapons/towels.dm
+++ b/code/game/objects/items/weapons/towels.dm
@@ -3,7 +3,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "towel"
slot_flags = SLOT_HEAD | SLOT_BELT | SLOT_OCLOTHING
- force = 3.0
+ damage_force = 3.0
clothing_flags = CLOTHING_IGNORE_BELTLINK
w_class = ITEMSIZE_NORMAL
attack_verb = list("whipped")
diff --git a/code/game/objects/items/weapons/trays.dm b/code/game/objects/items/weapons/trays.dm
index 8b3489bd065..e36eb2c1bda 100644
--- a/code/game/objects/items/weapons/trays.dm
+++ b/code/game/objects/items/weapons/trays.dm
@@ -178,7 +178,7 @@
return
for(var/obj/item/I in loc)
- if( I != src && !I.anchored && !istype(I, /obj/item/clothing/under) && !istype(I, /obj/item/clothing/suit) && !istype(I, /obj/item/projectile) )
+ if( I != src && !I.anchored && !istype(I, /obj/item/clothing/under) && !istype(I, /obj/item/clothing/suit) && !istype(I, /obj/projectile) )
var/add = 0
if(I.w_class == ITEMSIZE_TINY)
add = 1
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 84c03d8b87f..f04c660a58d 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -4,7 +4,7 @@
icon = 'icons/effects/effects.dmi'
icon_state = "energynet"
throw_force = 0
- force = 0
+ damage_force = 0
var/net_type = /obj/effect/energy_net
/obj/item/energy_net/dropped(mob/user, flags, atom/newLoc)
diff --git a/code/game/objects/misc.dm b/code/game/objects/misc.dm
index d63dc3978f6..43c61dc7f5c 100644
--- a/code/game/objects/misc.dm
+++ b/code/game/objects/misc.dm
@@ -49,7 +49,7 @@
density = 0
anchored = 0
w_class = ITEMSIZE_LARGE
- force = 0.0
+ damage_force = 0.0
throw_force = 0.0
throw_speed = 1
throw_range = 20
diff --git a/code/game/objects/mob_spawner.dm b/code/game/objects/mob_spawner.dm
index 171cedb7af8..a995fc9782b 100644
--- a/code/game/objects/mob_spawner.dm
+++ b/code/game/objects/mob_spawner.dm
@@ -74,15 +74,15 @@
spawned_mobs.Remove(L)
/obj/structure/mob_spawner/attackby(var/obj/item/I, var/mob/living/user)
- if(!I.force || I.item_flags & ITEM_NOBLUDGEON || !destructible)
+ if(!I.damage_force || I.item_flags & ITEM_NOBLUDGEON || !destructible)
return
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
user.do_attack_animation(src)
visible_message("\The [src] has been [I.get_attack_verb(src, user)] with \the [I] by [user].")
- take_damage(I.force)
+ take_damage(I.damage_force)
-/obj/structure/mob_spawner/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/mob_spawner/bullet_act(var/obj/projectile/Proj)
..()
if(destructible)
take_damage(Proj.get_structure_damage())
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 3e8cd9bf12a..f2607afb7ec 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -21,6 +21,7 @@
var/pry = 0 //Used in attackby() to open doors
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
var/preserve_item = 0 //whether this object is preserved when its owner goes into cryo-storage, gateway, etc
diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm
index 8d0f6a51ca7..340445319b9 100644
--- a/code/game/objects/structures/catwalk.dm
+++ b/code/game/objects/structures/catwalk.dm
@@ -94,7 +94,7 @@
if(do_after(user, 20, src))
health = maxhealth
else
- take_damage(C.force)
+ take_damage(C.damage_force)
user.setClickCooldown(user.get_attack_speed(C))
return ..()
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 7d94049c9d6..a7884ab5c4c 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -245,7 +245,7 @@
A.forceMove(src.loc)
qdel(src)
-/obj/structure/closet/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/closet/bullet_act(var/obj/projectile/Proj)
var/proj_damage = Proj.get_structure_damage()
if(!proj_damage)
return
diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm
index 86aa5b615b3..0903f9a1e88 100644
--- a/code/game/objects/structures/crates_lockers/closets/coffin.dm
+++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm
@@ -152,7 +152,7 @@
.=..()
alpha = 255 // Needed because of grave hiding
-/obj/structure/closet/grave/bullet_act(var/obj/item/projectile/P)
+/obj/structure/closet/grave/bullet_act(var/obj/projectile/P)
return PROJECTILE_CONTINUE // It's a hole in the ground, doesn't usually stop or even care about bullets
/obj/structure/closet/grave/return_air_for_internal_lifeform(var/mob/living/L)
diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
index 7828532b0c1..a9f1f316601 100644
--- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
@@ -49,7 +49,7 @@
return
else
playsound(user, 'sound/effects/Glasshit.ogg', 100, 1) //We don't want this playing every time
- if(W.force < 15)
+ if(W.damage_force < 15)
to_chat(user, "The cabinet's protective glass glances off the hit.")
else
src.hitstaken++
diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm
index 3ac2d338936..0a4918d80e7 100644
--- a/code/game/objects/structures/crates_lockers/closets/statue.dm
+++ b/code/game/objects/structures/crates_lockers/closets/statue.dm
@@ -81,7 +81,7 @@
for(var/mob/M in src)
shatter(M)
-/obj/structure/closet/statue/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/closet/statue/bullet_act(var/obj/projectile/Proj)
health -= Proj.get_structure_damage()
check_health()
@@ -99,7 +99,7 @@
check_health()
/obj/structure/closet/statue/attackby(obj/item/I as obj, mob/user as mob)
- health -= I.force
+ health -= I.damage_force
user.do_attack_animation(src)
visible_message("[user] strikes [src] with [I].")
check_health()
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 7142ccc54a2..cf96c4efa79 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -251,7 +251,7 @@
req_access += pick(get_all_station_access())
..()
-/obj/structure/closet/crate/secure/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/closet/crate/secure/bullet_act(var/obj/projectile/Proj)
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
return
diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm
index e47d9cd2b8e..e9d92d54ca0 100644
--- a/code/game/objects/structures/curtains.dm
+++ b/code/game/objects/structures/curtains.dm
@@ -13,7 +13,7 @@
layer = 3.3 //3.3 so its above windows, not the same as them. anything below 3.3 puts the curtain beneath the window sprite in current build
opacity = 0
-/obj/structure/curtain/bullet_act(obj/item/projectile/P, def_zone)
+/obj/structure/curtain/bullet_act(obj/projectile/P, def_zone)
if(!P.nodamage)
visible_message("[P] tears [src] down!")
qdel(src)
diff --git a/code/game/objects/structures/decorations.dm b/code/game/objects/structures/decorations.dm
index 9d4b8f6eeca..f7c5260e74e 100644
--- a/code/game/objects/structures/decorations.dm
+++ b/code/game/objects/structures/decorations.dm
@@ -6,7 +6,7 @@
layer = 3.3 //3.3 so its above windows, not the same as them. anything below 3.3 puts the curtain beneath the window sprite in current build
opacity = 0
-/obj/structure/shrine_seal/bullet_act(obj/item/projectile/P, def_zone)
+/obj/structure/shrine_seal/bullet_act(obj/projectile/P, def_zone)
if(!P.nodamage)
visible_message("[P] tears [src] down!")
qdel(src)
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 1491b7a4259..a07cbf3373f 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -28,7 +28,7 @@
src.healthcheck()
-/obj/structure/displaycase/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/displaycase/bullet_act(var/obj/projectile/Proj)
health -= Proj.get_structure_damage()
..()
src.healthcheck()
@@ -58,7 +58,7 @@
user.setClickCooldown(user.get_attack_speed(W))
user.do_attack_animation(src)
playsound(loc, 'sound/effects/Glasshit.ogg', 50, 1)
- src.health -= W.force
+ src.health -= W.damage_force
src.healthcheck()
..()
return
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index 56446303be8..e102652d3d5 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -324,7 +324,7 @@
// Airlock frames are indestructable, so bullets hitting them would always be stopped.
// To fix this, airlock assemblies will sometimes let bullets pass through, since generally the sprite shows them partially open.
-/obj/structure/door_assembly/bullet_act(var/obj/item/projectile/P)
+/obj/structure/door_assembly/bullet_act(var/obj/projectile/P)
if(prob(40)) // Chance for the frame to let the bullet keep going.
return PROJECTILE_CONTINUE
return ..()
diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm
index 009c4df4b9a..e81f848a46e 100644
--- a/code/game/objects/structures/fence.dm
+++ b/code/game/objects/structures/fence.dm
@@ -67,7 +67,7 @@
// Projectiles can pass through fences.
/obj/structure/fence/CanAllowThrough(atom/movable/mover, turf/target)
- if(istype(mover, /obj/item/projectile))
+ if(istype(mover, /obj/projectile))
return TRUE
return ..()
diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm
index d6724055711..d3789a8e505 100644
--- a/code/game/objects/structures/fireaxe.dm
+++ b/code/game/objects/structures/fireaxe.dm
@@ -46,7 +46,7 @@
return
else
playsound(user, 'sound/effects/Glasshit.ogg', 100, 1) //We don't want this playing every time
- if(W.force < 15)
+ if(W.damage_force < 15)
to_chat(user, "The cabinet's protective glass glances off the hit.")
else
hitstaken++
diff --git a/code/game/objects/structures/flora/trees.dm b/code/game/objects/structures/flora/trees.dm
index 6fe2eecc55b..14b65b56142 100644
--- a/code/game/objects/structures/flora/trees.dm
+++ b/code/game/objects/structures/flora/trees.dm
@@ -53,7 +53,7 @@
visible_message("\The [user] hits \the [src] with \the [W]!")
- var/damage_to_do = W.force
+ var/damage_to_do = W.damage_force
if(!W.sharp && !W.edge)
damage_to_do = round(damage_to_do / 4)
if(damage_to_do > 0)
@@ -121,7 +121,7 @@
/obj/structure/flora/tree/legacy_ex_act(var/severity)
adjust_health(-(max_health / severity), TRUE)
-/obj/structure/flora/tree/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/flora/tree/bullet_act(var/obj/projectile/Proj)
if(Proj.get_structure_damage())
adjust_health(-Proj.get_structure_damage(), TRUE)
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index 183009d3366..88611ebdef7 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -91,7 +91,7 @@
spawn(1) dismantle()
return 1
-/obj/structure/girder/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/girder/bullet_act(var/obj/projectile/Proj)
//Girders only provide partial cover. There's a chance that the projectiles will just pass through. (unless you are trying to shoot the girder)
if(Proj.original != src && !prob(cover))
return PROJECTILE_CONTINUE //pass through
@@ -100,7 +100,7 @@
if(!damage)
return
- if(!istype(Proj, /obj/item/projectile/beam))
+ if(!istype(Proj, /obj/projectile/beam))
damage *= 0.4 //non beams do reduced damage
else if(girder_material && girder_material.reflectivity >= 0.5) // Reflect lasers.
diff --git a/code/game/objects/structures/gravemarker.dm b/code/game/objects/structures/gravemarker.dm
index 888e8409d14..36ff5259622 100644
--- a/code/game/objects/structures/gravemarker.dm
+++ b/code/game/objects/structures/gravemarker.dm
@@ -74,7 +74,7 @@
dismantle()
..()
-/obj/structure/gravemarker/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/gravemarker/bullet_act(var/obj/projectile/Proj)
var/proj_damage = Proj.get_structure_damage()
if(!proj_damage)
return
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index a07ba2865cf..93760174f18 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -56,11 +56,11 @@
attack_generic(user,damage_dealt,attack_message)
/obj/structure/grille/CanAllowThrough(atom/movable/mover, turf/target)
- if(istype(mover, /obj/item/projectile) && prob(30))
+ if(istype(mover, /obj/projectile) && prob(30))
return TRUE
return ..()
-/obj/structure/grille/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/grille/bullet_act(var/obj/projectile/Proj)
if(!Proj) return
//Flimsy grilles aren't so great at stopping projectiles. However they can absorb some of the impact
@@ -147,9 +147,9 @@
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
switch(W.damtype)
if("fire")
- health -= W.force
+ health -= W.damage_force
if("brute")
- health -= W.force * 0.1
+ health -= W.damage_force * 0.1
healthcheck()
..()
return
diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm
index 709c63eb032..faf0cfe2021 100644
--- a/code/game/objects/structures/inflatable.dm
+++ b/code/game/objects/structures/inflatable.dm
@@ -46,7 +46,7 @@
update_nearby_tiles()
return ..()
-/obj/structure/inflatable/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/inflatable/bullet_act(var/obj/projectile/Proj)
var/proj_damage = Proj.get_structure_damage()
if(!proj_damage) return
@@ -83,7 +83,7 @@
visible_message("[user] pierces [src] with [W]!")
puncture()
if(W.damtype == BRUTE || W.damtype == BURN)
- hit(W.force)
+ hit(W.damage_force)
..()
return
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index fe08d81c02b..0a694b925ae 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -277,7 +277,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
L.pixel_x = -13
L.pixel_y = 7
-/obj/structure/bed/chair/janicart/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/bed/chair/janicart/bullet_act(var/obj/projectile/Proj)
if(has_buckled_mobs())
if(prob(85))
var/mob/living/L = pick(buckled_mobs)
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 4dee12fca20..df8f872b105 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -39,7 +39,7 @@
desc = "Oh no, seven years of bad luck!"
-/obj/structure/mirror/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/mirror/bullet_act(var/obj/projectile/Proj)
if(prob(Proj.get_structure_damage() * 2))
if(!shattered)
@@ -91,7 +91,7 @@
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return
- if(prob(I.force * 2))
+ if(prob(I.damage_force * 2))
visible_message("[user] smashes [src] with [I]!")
if(glass)
shatter()
diff --git a/code/game/objects/structures/props/beam_prism.dm b/code/game/objects/structures/props/beam_prism.dm
index 4850a49b322..5cdbe697ddf 100644
--- a/code/game/objects/structures/props/beam_prism.dm
+++ b/code/game/objects/structures/props/beam_prism.dm
@@ -19,7 +19,7 @@
var/compass_directions = list("North" = 0, "South" = 180, "East" = 90, "West" = 270, "Northwest" = 315, "Northeast" = 45, "Southeast" = 135, "Southwest" = 225)
var/interaction_sound = 'sound/mecha/mechmove04.ogg'
- var/redirect_type = /obj/item/projectile/beam
+ var/redirect_type = /obj/projectile/beam
var/dialID = null
var/obj/structure/prop/prismcontrol/remote_dial = null
@@ -117,7 +117,7 @@
else
animate(src, transform = turn(src.transform, rotate_degrees), time = 6)
-/obj/structure/prop/prism/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/prop/prism/bullet_act(var/obj/projectile/Proj)
if(istype(Proj, redirect_type))
visible_message("\The [src] redirects \the [Proj]!")
flick("[initial(icon_state)]+glow", src)
diff --git a/code/game/objects/structures/props/projectile_lock.dm b/code/game/objects/structures/props/projectile_lock.dm
index 5c3fcd2ba07..1bd5eaad95d 100644
--- a/code/game/objects/structures/props/projectile_lock.dm
+++ b/code/game/objects/structures/props/projectile_lock.dm
@@ -32,18 +32,18 @@
name = "beam lock"
desc = "An esoteric object that responds to high intensity light."
- var/projectile_key = /obj/item/projectile/beam
+ var/projectile_key = /obj/projectile/beam
var/timed = 0
var/timing = 0
var/time_limit = 1500 // In ticks. Ten is one second.
interaction_message = "The object remains inert to your touch."
-/obj/structure/prop/lock/projectile/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/prop/lock/projectile/bullet_act(var/obj/projectile/Proj)
if(!istype(Proj, projectile_key) || timing)
return
- if(istype(Proj, /obj/item/projectile/beam/heavylaser/cannon) || istype(Proj, /obj/item/projectile/beam/emitter) || (Proj.damage >= 80 && Proj.damtype == BURN))
+ if(istype(Proj, /obj/projectile/beam/heavylaser/cannon) || istype(Proj, /obj/projectile/beam/emitter) || (Proj.damage >= 80 && Proj.damtype == BURN))
toggle_lock()
visible_message("\The [src] [enabled ? "disengages" : "engages"] its locking mechanism.")
diff --git a/code/game/objects/structures/props/puzzledoor.dm b/code/game/objects/structures/props/puzzledoor.dm
index 8e6064aea4e..cd5899b6481 100644
--- a/code/game/objects/structures/props/puzzledoor.dm
+++ b/code/game/objects/structures/props/puzzledoor.dm
@@ -26,8 +26,8 @@
return 0
return 1
-/obj/machinery/door/blast/puzzle/bullet_act(var/obj/item/projectile/Proj)
- if(!istype(Proj, /obj/item/projectile/test))
+/obj/machinery/door/blast/puzzle/bullet_act(var/obj/projectile/Proj)
+ if(!istype(Proj, /obj/projectile/test))
visible_message("\The [src] is completely unaffected by \the [Proj].")
qdel(Proj) //No piercing. No.
diff --git a/code/game/objects/structures/props/swarm.dm b/code/game/objects/structures/props/swarm.dm
index f1d518af4ba..f5ee42172f1 100644
--- a/code/game/objects/structures/props/swarm.dm
+++ b/code/game/objects/structures/props/swarm.dm
@@ -16,8 +16,8 @@
var/mob/living/L = mover
if(L.faction == "swarmer")
return TRUE
- else if(istype(mover, /obj/item/projectile))
- var/obj/item/projectile/P = mover
+ else if(istype(mover, /obj/projectile))
+ var/obj/projectile/P = mover
if(istype(P.firer) && P.firer.faction == "swarmer")
return TRUE
return ..()
diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm
index cd25a37a563..b1268ebb25c 100644
--- a/code/game/objects/structures/railing.dm
+++ b/code/game/objects/structures/railing.dm
@@ -259,7 +259,7 @@
else
playsound(loc, 'sound/effects/grillehit.ogg', 50, 1)
- take_damage(W.force)
+ take_damage(W.damage_force)
user.setClickCooldown(user.get_attack_speed(W))
return ..()
diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm
index f0ab370ec1c..4c645033c62 100644
--- a/code/game/objects/structures/simple_doors.dm
+++ b/code/game/objects/structures/simple_doors.dm
@@ -133,7 +133,7 @@
visible_message("[user] finished digging [src]!")
Dismantle()
else if(istype(W,/obj/item)) //not sure, can't not just weapons get passed to this proc?
- hardness -= W.force/10
+ hardness -= W.damage_force/10
visible_message("[user] hits [src] with [W]!")
if(material == get_material_by_name("resin"))
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
@@ -150,8 +150,8 @@
attack_hand(user)
return
-/obj/structure/simple_door/bullet_act(var/obj/item/projectile/Proj)
- hardness -= Proj.force/10
+/obj/structure/simple_door/bullet_act(var/obj/projectile/Proj)
+ hardness -= Proj.damage/10
CheckHardness()
/obj/structure/simple_door/take_damage(var/damage)
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 1b76dd5654f..e0eb3adcc74 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -78,7 +78,7 @@
Dismantle(1)
else
- hardness -= W.force/100
+ hardness -= W.damage_force/100
..()
CheckHardness()
@@ -87,7 +87,7 @@
user.visible_message("[user] rubs some dust off from the [name]'s surface.", \
"You rub some dust off from the [name]'s surface.")
-/obj/structure/statue/bullet_act(obj/item/projectile/Proj)
+/obj/structure/statue/bullet_act(obj/projectile/Proj)
hardness -= Proj.damage
..()
CheckHardness()
diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
index ad2089daa02..3e96369860f 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
@@ -71,7 +71,7 @@
"You hear squelching...")
/obj/structure/bed/nest/attackby(obj/item/W as obj, mob/user as mob)
- var/aforce = W.force
+ var/aforce = W.damage_force
health = max(0, health - aforce)
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
for(var/mob/M in viewers(src, 7))
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index ccb3d01d909..c1d82ffd457 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -590,7 +590,7 @@
icon_state = "folding_chair0"
base_icon = "folding_chair"
attack_verb = list("bashed", "battered", "chaired")
- force = 1
+ damage_force = 1
throw_force = 3
sharp = null
edge = 0
diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
index 8dbc1a17665..4a8e0dca1e7 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
@@ -6,7 +6,7 @@ var/global/list/stool_cache = list() //haha stool
desc = "Apply butt."
icon = 'icons/obj/furniture_vr.dmi'
icon_state = "stool_preview" //set for the map
- force = 10
+ damage_force = 10
throw_force = 10
w_class = ITEMSIZE_HUGE
var/base_icon = "stool_base"
@@ -26,7 +26,7 @@ var/global/list/stool_cache = list() //haha stool
if(!istype(material))
qdel(src)
return
- force = round(material.get_blunt_damage()*0.4)
+ damage_force = round(material.get_blunt_damage()*0.4)
update_icon()
/obj/item/stool/padded/Initialize(mapload, new_material)
diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm
index 34fc442d987..a0038c1d1c9 100644
--- a/code/game/objects/structures/target_stake.dm
+++ b/code/game/objects/structures/target_stake.dm
@@ -47,7 +47,7 @@
else
return ..()
-/obj/structure/target_stake/bullet_act(obj/item/projectile/P, def_zone)
+/obj/structure/target_stake/bullet_act(obj/projectile/P, def_zone)
if(pinned_target)
return pinned_target.bullet_act(P, def_zone)
else
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index ae92701ab9b..b2ac3c465e7 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -155,7 +155,7 @@
return
-/obj/structure/window/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/window/bullet_act(var/obj/projectile/Proj)
var/proj_damage = Proj.get_structure_damage()
if(!proj_damage) return
@@ -352,7 +352,7 @@
user.setClickCooldown(user.get_attack_speed(W))
if(W.damtype == BRUTE || W.damtype == BURN)
user.do_attack_animation(src)
- hit(W.force)
+ hit(W.damage_force)
if(health <= 7)
anchored = 0
update_nearby_icons()
diff --git a/code/game/turfs/simulated/sky.dm b/code/game/turfs/simulated/sky.dm
index 50b1b9dfb4a..5692b8b83b9 100644
--- a/code/game/turfs/simulated/sky.dm
+++ b/code/game/turfs/simulated/sky.dm
@@ -28,7 +28,7 @@
return //Being thrown over, not fallen yet
if(!(AM.can_fall()))
return // Phased shifted kin should not fall
- if(istype(AM, /obj/item/projectile))
+ if(istype(AM, /obj/projectile))
return // pewpew should not fall out of the sky. pew.
if(istype(AM, /obj/effect/projectile))
return // ...neither should the effects be falling
diff --git a/code/game/turfs/simulated/wall.dm b/code/game/turfs/simulated/wall.dm
index 0f60586ba02..a6f8d26b8cb 100644
--- a/code/game/turfs/simulated/wall.dm
+++ b/code/game/turfs/simulated/wall.dm
@@ -92,10 +92,10 @@
/turf/simulated/wall/proc/get_default_material()
. = /datum/material/steel
-/turf/simulated/wall/bullet_act(var/obj/item/projectile/Proj)
- if(istype(Proj,/obj/item/projectile/beam))
+/turf/simulated/wall/bullet_act(var/obj/projectile/Proj)
+ if(istype(Proj,/obj/projectile/beam))
burn(2500)
- else if(istype(Proj,/obj/item/projectile/ion))
+ else if(istype(Proj,/obj/projectile/ion))
burn(500)
var/proj_damage = Proj.get_structure_damage()
@@ -107,7 +107,7 @@
if(thermite)
thermitemelt()
- if(istype(Proj,/obj/item/projectile/beam))
+ if(istype(Proj,/obj/projectile/beam))
if(material && material.reflectivity >= 0.5) // Time to reflect lasers.
var/new_damage = damage * material.reflectivity
var/outgoing_damage = damage - new_damage
diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm
index 806e2d19c04..53bd8b60c8b 100644
--- a/code/game/turfs/simulated/wall_attacks.dm
+++ b/code/game/turfs/simulated/wall_attacks.dm
@@ -222,7 +222,7 @@
for(var/obj/effect/overlay/wallrot/WR in src)
qdel(WR)
return
- else if(!is_sharp(W) && W.force >= 10 || W.force >= 20)
+ else if(!is_sharp(W) && W.damage_force >= 10 || W.damage_force >= 20)
to_chat(user, "\The [src] crumbles away under the force of your [W.name].")
src.dismantle_wall(1)
return
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 9e0135aa742..52ce836d24d 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -30,7 +30,7 @@
to_chat(user, "You need to have something in your active hand, to use this verb.")
return
var/weapon_attack_speed = user.get_attack_speed(I) / 10
- var/weapon_damage = I.force
+ var/weapon_damage = I.damage_force
var/modified_damage_percent = 1
for(var/datum/modifier/M in user.modifiers)
@@ -40,7 +40,7 @@
if(istype(I, /obj/item/gun))
var/obj/item/gun/G = I
- var/obj/item/projectile/P
+ var/obj/projectile/P
if(istype(I, /obj/item/gun/energy))
var/obj/item/gun/energy/energy_gun = G
diff --git a/code/modules/blob/blob.dm b/code/modules/blob/blob.dm
index 790f16a152e..3d43306c62c 100644
--- a/code/modules/blob/blob.dm
+++ b/code/modules/blob/blob.dm
@@ -122,7 +122,7 @@
return
B.pulse(forceLeft - 1, dirs)
-/obj/effect/blob/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/blob/bullet_act(var/obj/projectile/Proj)
if(!Proj)
return
@@ -140,11 +140,11 @@
var/damage = 0
switch(W.damtype)
if("fire")
- damage = (W.force / fire_resist)
+ damage = (W.damage_force / fire_resist)
if(istype(W, /obj/item/weldingtool))
playsound(src, W.tool_sound, 100, 1)
if("brute")
- damage = (W.force / brute_resist)
+ damage = (W.damage_force / brute_resist)
take_damage(damage)
return
diff --git a/code/modules/blob2/blobs/base_blob.dm b/code/modules/blob2/blobs/base_blob.dm
index 4df5fdf26ca..10210e8f8a3 100644
--- a/code/modules/blob2/blobs/base_blob.dm
+++ b/code/modules/blob2/blobs/base_blob.dm
@@ -55,8 +55,8 @@ var/list/blobs = list()
var/mob/living/L = mover
if(L.faction == "blob")
return TRUE
- else if(istype(mover, /obj/item/projectile))
- var/obj/item/projectile/P = mover
+ else if(istype(mover, /obj/projectile))
+ var/obj/projectile/P = mover
if(istype(P.firer) && P.firer.faction == "blob")
return TRUE
return FALSE
@@ -223,7 +223,7 @@ var/list/blobs = list()
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
playsound(loc, 'sound/effects/attackblob.ogg', 50, 1)
visible_message("\The [src] has been attacked with \the [W][(user ? " by [user]." : ".")]")
- var/damage = W.force
+ var/damage = W.damage_force
switch(W.damtype)
if(BURN)
if(overmind)
@@ -250,7 +250,7 @@ var/list/blobs = list()
adjust_integrity(-damage)
return
-/obj/structure/blob/bullet_act(var/obj/item/projectile/P)
+/obj/structure/blob/bullet_act(var/obj/projectile/P)
if(!P)
return
diff --git a/code/modules/blob2/mobs/spore.dm b/code/modules/blob2/mobs/spore.dm
index 7fede56754f..206773860e8 100644
--- a/code/modules/blob2/mobs/spore.dm
+++ b/code/modules/blob2/mobs/spore.dm
@@ -89,8 +89,7 @@
is_infesting = TRUE
if(H.wear_suit)
var/obj/item/clothing/suit/A = H.wear_suit
- if(A.armor && A.armor["melee"])
- maxHealth += A.armor["melee"] //That zombie's got armor, I want armor!
+ maxHealth += A.fetch_armor().raw(ARMOR_MELEE) * 100 //That zombie's got armor, I want armor!
maxHealth += 40
health = maxHealth
diff --git a/code/modules/blob2/overmind/types.dm b/code/modules/blob2/overmind/types.dm
index 124b126b343..327a4f6cbd1 100644
--- a/code/modules/blob2/overmind/types.dm
+++ b/code/modules/blob2/overmind/types.dm
@@ -36,7 +36,7 @@
var/ranged_spores = FALSE // For proper spores of the type above.
var/spore_firesound = 'sound/effects/slime_squish.ogg'
var/spore_range = 7 // The range the spore can fire.
- var/spore_projectile = /obj/item/projectile/energy/blob
+ var/spore_projectile = /obj/projectile/energy/blob
var/factory_type = /obj/structure/blob/factory
var/resource_type = /obj/structure/blob/resource
@@ -617,7 +617,7 @@
spore_type = /mob/living/simple_mob/blob/spore/weak
ranged_spores = TRUE
spore_range = 3
- spore_projectile = /obj/item/projectile/energy/blob/splattering
+ spore_projectile = /obj/projectile/energy/blob/splattering
factory_type = /obj/structure/blob/factory/sluggish
resource_type = /obj/structure/blob/resource/sluggish
diff --git a/code/modules/catalogue/cataloguer.dm b/code/modules/catalogue/cataloguer.dm
index 511e70d3aa7..dcbb58fbe45 100644
--- a/code/modules/catalogue/cataloguer.dm
+++ b/code/modules/catalogue/cataloguer.dm
@@ -24,7 +24,7 @@ GLOBAL_LIST_EMPTY(all_cataloguers)
icon_state = "cataloguer"
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_MATERIAL = 2, TECH_DATA = 3, TECH_MAGNET = 3)
- force = 0
+ damage_force = 0
var/points_stored = 0 // Amount of 'exploration points' this device holds.
var/scan_range = 3 // How many tiles away it can scan. Changing this also changes the box size.
var/credit_sharing_range = INFINITY // If another person is within this radius, they will also be credited with a successful scan.
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 1cdcc22371c..49ab8b5948e 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -432,12 +432,12 @@
matter = list()
fire_sound = 'sound/weapons/Gunshot1.ogg'
- projectile_type = /obj/item/projectile/chameleon
+ projectile_type = /obj/projectile/chameleon
charge_meter = 0
charge_cost = 48 //uses next to no power, since it's just holograms
battery_lock = 1
- var/obj/item/projectile/copy_projectile
+ var/obj/projectile/copy_projectile
var/global/list/gun_choices
/obj/item/gun/energy/chameleon/Initialize(mapload)
@@ -450,7 +450,7 @@
src.gun_choices[initial(G.name)] = gun_type
/obj/item/gun/energy/chameleon/consume_next_projectile()
- var/obj/item/projectile/P = ..()
+ var/obj/projectile/P = ..()
if(P && ispath(copy_projectile))
P.name = initial(copy_projectile.name)
P.icon = initial(copy_projectile.icon)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 405de19a841..b56858f5ccc 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -66,6 +66,23 @@
if(enables_planes)
user.recalculate_vis()
+/obj/item/clothing/examine_more(mob/user)
+ . = ..()
+ if(user.using_perspective?.eye && get_dist(user.using_perspective?.eye, src) <= 2)
+ . += "From this distance you can determine its armor with a close examination."
+
+/obj/item/clothing/Topic(href, list/href_list)
+ . = ..()
+ if(.)
+ return
+ if(href_list["examine_armor"])
+ if(!usr.using_perspective || get_dist(usr.using_perspective?.eye, src) > 2)
+ to_chat(usr, SPAN_WARNING("You are too far away!"))
+ return TRUE
+ var/list/assembled = fetch_armor().describe_list()
+ to_chat(usr, SPAN_BLOCKQUOTE("--- Armor: [src] ---
[jointext(assembled, "
")]", null))
+ return TRUE
+
/obj/item/clothing/can_equip(mob/M, slot, mob/user, flags)
. = ..()
diff --git a/code/modules/clothing/gloves/arm_guards.dm b/code/modules/clothing/gloves/arm_guards.dm
index 6b2b0cbc9b2..6a6c6cc3a67 100644
--- a/code/modules/clothing/gloves/arm_guards.dm
+++ b/code/modules/clothing/gloves/arm_guards.dm
@@ -34,7 +34,7 @@
icon_state = "arm_guards_laser"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
siemens_coefficient = 0.4 //This is worse than the other ablative pieces, to avoid this from becoming the poor warden's insulated gloves.
- armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ablative
/obj/item/clothing/gloves/arm_guard/bulletproof
name = "bullet resistant arm guards"
@@ -42,7 +42,7 @@
icon_state = "arm_guards_bullet"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
siemens_coefficient = 0.7
- armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ballistic
/obj/item/clothing/gloves/arm_guard/riot
name = "riot arm guards"
@@ -50,7 +50,7 @@
icon_state = "arm_guards_riot"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
siemens_coefficient = 0.5
- armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/riot
/obj/item/clothing/gloves/arm_guard/combat
name = "combat arm guards"
@@ -58,7 +58,7 @@
icon_state = "arm_guards_combat"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
siemens_coefficient = 0.6
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/combat
/obj/item/clothing/gloves/arm_guard/flexitac
name = "tactical arm guards"
@@ -66,7 +66,7 @@
icon_state = "arm_guards_flexitac"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
siemens_coefficient = 0.6
- armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/tactical
min_cold_protection_temperature = T0C - 20
cold_protection = ARMS
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 93675580417..dbcc462ce53 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -46,13 +46,13 @@
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
+ armor_type = /datum/armor/gloves/combat
/obj/item/clothing/gloves/combat/advanced //punchy combat glubbs
name = "advanced combat gloves"
desc = "These advanced tactical gloves are fire and impact resistant, with the addition of weighted knuckles and durable synthetics."
- force = 5
+ damage_force = 5
punch_force = 5
- armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
/obj/item/clothing/gloves/sterile
name = "sterile gloves"
@@ -97,18 +97,18 @@
name = "work gloves"
icon_state = "work"
item_state = "wgloves"
- armor = list(melee = 10, bullet = 10, laser = 10, energy = 5, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/gloves/padded
/obj/item/clothing/gloves/tactical
desc = "These brown tactical gloves are made from a durable synthetic, and have hardened knuckles."
name = "tactical gloves"
icon_state = "work"
item_state = "wgloves"
- force = 5
+ damage_force = 5
punch_force = 3
siemens_coefficient = 0.75
permeability_coefficient = 0.05
- armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
+ armor_type = /datum/armor/gloves/combat
/obj/item/clothing/gloves/vox
desc = "These bizarre gauntlets seem to be fitted for... bird claws?"
@@ -137,7 +137,7 @@
siemens_coefficient = 1
fingerprint_chance = 100
overgloves = 1
- force = 5
+ damage_force = 5
punch_force = 5
drop_sound = 'sound/items/drop/metalboots.ogg'
pickup_sound = 'sound/items/pickup/toolbox.ogg'
@@ -285,7 +285,7 @@
name = "armwraps of unyielding resolve"
desc = "A series of armwraps, soaked in holy water. Makes you pretty keen to smite evil magic users."
resistance_flags = FIRE_PROOF | ACID_PROOF
- enhancement = 2 //It is not magic that makes you punch harder, but force of will. Trust me.
+ enhancement = 2 //It is not magic that makes you punch harder, but damage_force of will. Trust me.
secondary_trait = TRAIT_ANTIMAGIC
var/chaplain_spawnable = TRUE
@@ -629,7 +629,7 @@
body_cover_flags = ARMS
cold_protection = HANDS
heat_protection = HANDS
- armor = list("melee" = 15, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 15, "acid" = 0)
+ armor_type = /datum/armor/general/bone
/obj/item/clothing/gloves/hasie
name = "Hasie fingerless gloves"
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index 40a8b41ae4c..9ce78e2ca5b 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -4,7 +4,7 @@
icon_state = "hardhat0_yellow"
brightness_on = 4 //luminosity when on
light_overlay = "hardhat_light"
- armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20)
+ armor_type = /datum/armor/head/hardhat
inv_hide_flags = 0
siemens_coefficient = 0.9
action_button_name = "Toggle Head-light"
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index df88a06dc9e..330749b5c09 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -5,7 +5,7 @@
valid_accessory_slots = (ACCESSORY_SLOT_HELM_C)
restricted_accessory_slots = (ACCESSORY_SLOT_HELM_C)
clothing_flags = THICKMATERIAL
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/medium
inv_hide_flags = HIDEEARS|BLOCKHEADHAIR
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_COLD_PROTECTION_TEMPERATURE
@@ -21,7 +21,7 @@
name = "\improper Orion Confederation Government helmet"
desc = "A helmet painted in Peacekeeper blue. Stands out like a sore thumb."
icon_state = "helmet_sol"
- armor = list(melee = 50, bullet = 50, laser = 50,energy = 25, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/oricon/peacekeeper
valid_accessory_slots = null
/obj/item/clothing/head/helmet/oricon/command
@@ -48,22 +48,22 @@
name = "tactical helmet"
desc = "A tan helmet made from advanced ceramic. Comfortable and robust."
icon_state = "helmet_tac"
- armor = list(melee = 50, bullet = 60, laser = 60, energy = 45, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/tactical
siemens_coefficient = 0.6
/obj/item/clothing/head/helmet/merc
name = "combat helmet"
desc = "A heavily reinforced helmet painted with red markings. Feels like it could take a lot of punishment."
icon_state = "helmet_merc"
- armor = list(melee = 70, bullet = 70, laser = 70, energy = 35, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/merc/heavy
siemens_coefficient = 0.5
/obj/item/clothing/head/helmet/riot
name = "riot helmet"
desc = "It's a helmet specifically designed to protect against close range attacks."
icon_state = "riot"
+ armor_type = /datum/armor/station/riot
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
- armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.7
valid_accessory_slots = null
action_button_name = "Toggle Visor"
@@ -85,7 +85,7 @@
desc = "It's a helmet specifically designed to protect against energy projectiles."
icon_state = "helmet_reflec"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "helmet", SLOT_ID_LEFT_HAND = "helmet")
- armor = list(melee = 10, bullet = 10, laser = 80 ,energy = 50, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ablative
siemens_coefficient = 0.1
valid_accessory_slots = null
@@ -94,7 +94,7 @@
desc = "It's a helmet specifically designed to protect against ballistic projectiles."
icon_state = "helmet_bulletproof"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "helmet", SLOT_ID_LEFT_HAND = "helmet")
- armor = list(melee = 10, bullet = 80, laser = 10 ,energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ballistic
siemens_coefficient = 0.7
valid_accessory_slots = null
@@ -103,7 +103,7 @@
desc = "It's a general purpose combat helmet, designed to protect against typical dangers to your head."
icon_state = "helmet_combat"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "helmet", SLOT_ID_LEFT_HAND = "helmet")
- armor = list(melee = 50, bullet = 50, laser = 50 ,energy = 30, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/combat
inv_hide_flags = HIDEEARS|HIDEEYES|BLOCKHEADHAIR
siemens_coefficient = 0.6
valid_accessory_slots = null
@@ -112,7 +112,7 @@
name = "tactical light helmet"
desc = "A tan helmet made from advanced ceramic with an integrated tactical flashlight."
icon_state = "flexitac"
- armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/tactical
siemens_coefficient = 0.6
brightness_on = 6
light_overlay = "helmet_light_dual_green"
@@ -124,7 +124,7 @@
name = "\improper SWAT helmet"
desc = "They're often used by highly trained SWAT Officers."
icon_state = "swat"
- armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
+ armor_type = /datum/armor/centcom/deathsquad
inv_hide_flags = HIDEEARS|HIDEEYES|BLOCKHEADHAIR
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
@@ -135,18 +135,18 @@
desc = "It's quite larger than your head, but it might still protect it."
icon_state = "alienhelmet"
siemens_coefficient = 0.4
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 0, rad = 40)
+ armor_type = /datum/armor/alien/medium
valid_accessory_slots = null
/obj/item/clothing/head/helmet/alien/tank
name = "alien warhelm"
- armor = list(melee = 70, bullet = 70, laser = 70, energy = 70, bomb = 70, bio = 0, rad = 40)
+ armor_type = /datum/armor/alien/heavy
/obj/item/clothing/head/helmet/thunderdome
name = "\improper Thunderdome helmet"
desc = "'Let the battle commence!'"
icon_state = "thunderdome"
- armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0)
+ armor_type = /datum/armor/thunderdome
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 1
@@ -173,7 +173,7 @@
desc = "This bronze helmet is wrapped in Goliath hide. Dull bronze plates connected by dry sinew are mounted to the exterior for protection."
icon = 'icons/clothing/suit/ashlander.dmi'
icon_state = "lamellarhelm"
- armor = list(melee = 15, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/lavaland/ashlander
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
/obj/item/clothing/head/helmet/tactical
@@ -181,8 +181,7 @@
desc = "An armored helmet capable of being fitted with a multitude of attachments."
icon_state = "swathelm"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
-
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/tactical
inv_hide_flags = HIDEEARS|BLOCKHAIR
siemens_coefficient = 0.7
valid_accessory_slots = null
@@ -192,7 +191,7 @@
desc = "A helmet with optical and cranial augments coupled to it."
icon_state = "v62"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "head_m", SLOT_ID_LEFT_HAND = "head_m")
- armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
+ armor_type = /datum/armor/head/augment_helmet
inv_hide_flags = HIDEEARS|HIDEEYES|BLOCKHEADHAIR
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
@@ -204,7 +203,7 @@
desc = "The 'head' of an Eraticator Artillery Platform, ripped off of the chassis. May be worn for totemic purposes."
icon_state = "eraticator-head"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "helmet", SLOT_ID_LEFT_HAND = "helmet")
- armor = list(melee = 10, bullet = 80, laser = 10 ,energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/head/eraticator_helmet
inv_hide_flags = HIDEEARS|HIDEEYES|BLOCKHEADHAIR
siemens_coefficient = 0.7
valid_accessory_slots = null
@@ -223,7 +222,7 @@
name = "kabuto"
desc = "An authentic antique, this helmet from old Earth belongs to an ancient martial tradition. The advent of firearms made this style of protection obsolete. Unfortunately, this remains the case."
icon_state = "kabuto"
- armor = list(melee = 100, bullet = 00, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/general/samurai
//Non-hardsuit ERT helmets.
/obj/item/clothing/head/helmet/ert
@@ -231,7 +230,7 @@
desc = "An in-atmosphere helmet worn by members of the NanoTrasen Emergency Response Team. Protects the head from impacts."
icon_state = "erthelmet_cmd"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-green", SLOT_ID_LEFT_HAND = "syndicate-helm-green")
- armor = list(melee = 62, bullet = 50, laser = 50,energy = 35, bomb = 10, bio = 2, rad = 0)
+ armor_type = /datum/armor/centcom/ert
valid_accessory_slots = null
//Commander
@@ -264,7 +263,7 @@
desc = "This specialty visor, nicknamed the 'MAW' by PMD agents, grants trained Agents the ability to view Paracausal events without suffering memetic hazards."
icon_state = "para_ert_helmet"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-green", SLOT_ID_LEFT_HAND = "syndicate-helm-green")
- armor = list(melee = 60, bullet = 60, laser = 60,energy = 60, bomb = 20, bio = 0, rad = 0)
+ armor_type = /datum/armor/centcom/ert/paracausal
valid_accessory_slots = null
action_button_name = "Cycle MAW"
@@ -298,7 +297,7 @@
desc = "This wide brimmed hat projects authority and a vaguely mystical presence. It also grants its bearer the ability to view Paracausal events without suffering memetic hazards."
icon_state = "witchhunterhat"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "beret_black", SLOT_ID_LEFT_HAND = "beret_black")
- armor = list(melee = 40, bullet = 30, laser = 30,energy = 10, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/centcom/ert/paracausal
action_button_name = "Enable Wards"
/obj/item/clothing/head/helmet/para/inquisitor/attack_self(mob/user)
@@ -323,7 +322,7 @@
name = "riding helmet"
desc = "Safety gear designed to protect the head from impacts. It's a bit dorky."
icon_state = "sport"
- armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/head/hardhat
color = "#ffffff"
@@ -387,7 +386,7 @@
icon = 'icons/clothing/suit/armor/utilitarian.dmi'
icon_state = "tauhelm"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-green", SLOT_ID_LEFT_HAND = "syndicate-helm-green")
- armor = list(melee = 15, bullet = 40, laser = 60, energy = 30, bomb = 20, bio = 0, rad = 0)
+ armor_type = /datum/armor/general/utilitarian_military
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
/obj/item/clothing/head/helmet/duraskull
@@ -395,5 +394,5 @@
desc = "The process of working durasteel into such a shape is no small feat. Whoever commissioned this wanted to send a serious message."
icon = 'icons/clothing/head/duraskull.dmi'
icon_state = "ahelm"
- armor = list(melee = 40, bullet = 40, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
+ armor_type = /datum/armor/head/duraskull_mask
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
diff --git a/code/modules/clothing/head/hood.dm b/code/modules/clothing/head/hood.dm
index a5afe0677b7..05cf5701179 100644
--- a/code/modules/clothing/head/hood.dm
+++ b/code/modules/clothing/head/hood.dm
@@ -140,7 +140,7 @@
clothing_flags = THICKMATERIAL
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 0.9
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 35, bio = 75, rad = 35)
+ armor_type = /datum/armor/exploration/soft
/obj/item/clothing/head/hood/miner
name = "miner hood"
@@ -151,7 +151,7 @@
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 0.9
- armor = list(melee = 50, bullet = 5, laser = 10, energy = 0, bomb = 55, bio = 50, rad = 65)
+ armor_type = /datum/armor/cargo/mining/soft
// Eldritch suit
/obj/item/clothing/head/hood/eldritch
@@ -160,7 +160,7 @@
icon_state = "eldritch"
clothing_flags = THICKMATERIAL
siemens_coefficient = 0.9
- armor = list(melee = 20, bullet = 0, laser = 40, energy = 40, bomb = 20, bio = 30, rad = 20)
+ armor_type = /datum/armor/lavaland/eldritch
// Costumes
/obj/item/clothing/head/hood/carp_hood
@@ -194,7 +194,7 @@
name = "goliath cloak hood"
icon_state = "golhood"
desc = "A protective & concealing hood."
- armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60)
+ armor_type = /datum/armor/lavaland/goliath
heat_protection = HEAD
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -202,7 +202,7 @@
name = "drake helm"
icon_state = "dragon"
desc = "The skull of a dragon."
- armor = list("melee" = 70, "bullet" = 20, "laser" = 35, "energy" = 25, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
+ armor_type = /datum/armor/lavaland/drake
heat_protection = HEAD
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 50ff415ad2b..197ac14d510 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -143,7 +143,7 @@
desc = "A brown fedora - either the cornerstone of a detective's style or a poor attempt at looking cool, depending on the person wearing it."
icon_state = "detective"
allowed = list(/obj/item/reagent_containers/food/snacks/candy_corn, /obj/item/pen)
- armor = list(melee = 10, bullet = 10, laser = 15, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/light_formalwear
siemens_coefficient = 0.9
valid_accessory_slots = null
show_examine = FALSE
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 5af72040eff..80cb652787d 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -19,7 +19,7 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "welding", SLOT_ID_LEFT_HAND = "welding")
matter = list(MAT_STEEL = 3000, MAT_GLASS = 1000)
var/up = 0
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/head/hardhat
inv_hide_flags = (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE)
body_cover_flags = HEAD|FACE|EYES
action_button_name = "Flip Welding Mask"
@@ -136,12 +136,12 @@
return
onfire = !(onfire)
if (onfire)
- force = 3
+ damage_force = 3
damtype = "fire"
icon_state = "cake1"
START_PROCESSING(SSobj, src)
else
- force = null
+ damage_force = 0
damtype = "brute"
icon_state = "cake0"
return
@@ -305,4 +305,3 @@
item_state = "cone"
body_cover_flags = HEAD
attack_verb = list("warned", "cautioned", "smashed")
- armor = list("melee" = 5)
diff --git a/code/modules/clothing/head/oricon.dm b/code/modules/clothing/head/oricon.dm
index d755e8baf2b..75edb93a524 100644
--- a/code/modules/clothing/head/oricon.dm
+++ b/code/modules/clothing/head/oricon.dm
@@ -36,6 +36,7 @@
SLOT_ID_LEFT_HAND = "helmet",
SLOT_ID_RIGHT_HAND = "helmet",
)
+ armor_type = /datum/armor/uniform/utility
siemens_coefficient = 0.9
body_cover_flags = 0
@@ -43,14 +44,12 @@
name = "fleet utility cover"
desc = "A navy blue utility cover bearing the crest of a OCG Fleet."
icon_state = "navyutility"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 10, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.7
/obj/item/clothing/head/utility/marine
name = "marine utility cover"
desc = "A grey utility cover bearing the crest of the OCG Marine Corps."
icon_state = "greyutility"
- armor = list(melee = 10, bullet = 0, laser = 10,energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/head/utility/marine/tan
name = "tan utility cover"
diff --git a/code/modules/clothing/head/pilot_helmet.dm b/code/modules/clothing/head/pilot_helmet.dm
index bc442789188..27ccc93ef29 100644
--- a/code/modules/clothing/head/pilot_helmet.dm
+++ b/code/modules/clothing/head/pilot_helmet.dm
@@ -6,7 +6,7 @@
icon_state = "pilot_helmet1"
item_icons = list(SLOT_ID_HEAD = 'icons/mob/clothing/pilot_helmet.dmi')
clothing_flags = THICKMATERIAL
- armor = list(melee = 20, bullet = 10, laser = 10, energy = 5, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/exploration/space/pilot
inv_hide_flags = HIDEEARS
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_COLD_PROTECTION_TEMPERATURE
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index d5fded56465..7cde8a2e8d9 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -10,9 +10,9 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
siemens_coefficient = 0.9
+ armor_type = /datum/armor/mask/gas
var/gas_filter_strength = 1 //For gas mask filters
var/list/filtered_gases = list(/datum/gas/phoron, /datum/gas/nitrous_oxide)
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 75, rad = 0)
/obj/item/clothing/mask/gas/filter_air(datum/gas_mixture/air)
var/datum/gas_mixture/gas_filtered = new
@@ -46,7 +46,6 @@
siemens_coefficient = 0.7
body_cover_flags = FACE
w_class = ITEMSIZE_SMALL
- armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 55, rad = 0)
var/hanging = FALSE
inv_hide_flags = HIDEFACE
action_button_name = "Adjust Face Mask"
@@ -60,7 +59,7 @@
body_cover_flags = body_cover_flags & ~FACE
clothing_flags &= ~(BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS)
inv_hide_flags = 0
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ set_armor(/datum/armor/none)
icon_state = "halfgas_up"
to_chat(usr, "Your mask is now hanging on your neck.")
else
@@ -69,7 +68,7 @@
body_cover_flags = initial(body_cover_flags)
clothing_flags = initial(clothing_flags)
inv_hide_flags = initial(inv_hide_flags)
- armor = initial(armor)
+ reset_armor()
icon_state = initial(icon_state)
to_chat(usr, "You pull the mask up to cover your face.")
update_worn_icon()
@@ -92,7 +91,6 @@
desc = "A modernised version of the classic design, this mask will not only filter out phoron but it can also be connected to an air supply."
icon_state = "plaguedoctor"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "gas", SLOT_ID_LEFT_HAND = "gas")
- armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 90, rad = 0)
body_cover_flags = HEAD|FACE|EYES
/obj/item/clothing/mask/gas/swat
@@ -152,7 +150,6 @@
desc = "A military-grade gas mask that can be connected to an air supply."
icon_state = "explorer"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "gas", SLOT_ID_LEFT_HAND = "gas")
- armor = list(melee = 10, bullet = 5, laser = 5,energy = 5, bomb = 0, bio = 50, rad = 0)
siemens_coefficient = 0.9
/obj/item/clothing/mask/gas/commando
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index 50174a3cf6f..1fcd5d8f966 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -35,7 +35,7 @@
clothing_flags = FLEXIBLEMATERIAL
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.01
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 0)
+ armor_type = /datum/armor/mask/surgical
var/hanging = 0
/obj/item/clothing/mask/surgical/proc/adjust_mask(mob_user)
@@ -44,14 +44,14 @@
if (src.hanging)
gas_transfer_coefficient = 1
body_cover_flags = body_cover_flags & ~FACE
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ set_armor(/datum/armor/none)
icon_state = "steriledown"
to_chat(usr, "You pull the mask below your chin.")
else
gas_transfer_coefficient = initial(gas_transfer_coefficient)
body_cover_flags = initial(body_cover_flags)
icon_state = initial(icon_state)
- armor = initial(armor)
+ reset_armor()
to_chat(usr, "You pull the mask up to cover your face.")
update_worn_icon()
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index a9598aae315..212ed0ce8e1 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -26,7 +26,7 @@
permeability_coefficient = 0.50
slowdown = SHOES_SLOWDOWN
- force = 2
+ damage_force = 2
var/overshoes = 0
species_restricted = list("exclude",SPECIES_TESHARI, SPECIES_VOX)
drop_sound = 'sound/items/drop/shoes.ogg'
diff --git a/code/modules/clothing/shoes/boots.dm b/code/modules/clothing/shoes/boots.dm
index 29fdcf2e6ea..0ca57f2f4ad 100644
--- a/code/modules/clothing/shoes/boots.dm
+++ b/code/modules/clothing/shoes/boots.dm
@@ -2,7 +2,8 @@
name = "boots"
desc = "Generic boots."
icon_state = "workboots"
- force = 3
+ armor_type = /datum/armor/shoes/boots
+ damage_force = 3
can_hold_knife = 1
step_volume_mod = 1.2
@@ -25,7 +26,6 @@
name = "jackboots"
desc = "Standard-issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
icon_state = "jackboots"
- armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
siemens_coefficient = 0.7
drop_sound = 'sound/items/drop/boots.ogg'
pickup_sound = 'sound/items/pickup/boots.ogg'
@@ -68,7 +68,6 @@
name = "workboots"
desc = "A pair of steel-toed work boots designed for use in industrial settings. Safety first."
icon_state = "workboots"
- armor = list(melee = 40, bullet = 0, laser = 0, energy = 15, bomb = 20, bio = 0, rad = 20)
siemens_coefficient = 0.7
/obj/item/clothing/shoes/boots/workboots/toeless
@@ -93,7 +92,7 @@
name = "security winter boots"
desc = "A pair of winter boots. These ones are lined with grey fur, and coloured an angry red."
icon_state = "winterboots_sec"
- armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/low
/obj/item/clothing/shoes/boots/winter/science
name = "science winter boots"
@@ -139,7 +138,7 @@
name = "explorer winter boots"
desc = "Steel-toed winter boots for mining or exploration in hazardous environments. Very good at keeping toes warm and uncrushed."
icon_state = "explorer"
- armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
+ armor_type = /datum/armor/exploration/soft
// Allows the wearer to climb cliffs, which could allow for shortcuts or sequence-breaking.
/obj/item/clothing/shoes/boots/winter/climbing
@@ -152,28 +151,25 @@
name = "tactical boots"
desc = "Tan boots with extra padding and armor."
icon_state = "jungle"
- armor = list(melee = 40, bullet = 30, laser = 40,energy = 25, bomb = 50, bio = 0, rad = 0)
siemens_coefficient = 0.7
/obj/item/clothing/shoes/boots/duty
name = "duty boots"
desc = "A pair of steel-toed synthleather boots with a mirror shine."
icon_state = "duty"
- armor = list(melee = 40, bullet = 0, laser = 0, energy = 15, bomb = 20, bio = 0, rad = 20)
siemens_coefficient = 0.7
/obj/item/clothing/shoes/boots/jungle
name = "jungle boots"
desc = "A pair of durable brown boots. Waterproofed for use planetside."
icon_state = "jungle"
- armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 10, rad = 0)
siemens_coefficient = 0.7
/obj/item/clothing/shoes/boots/swat
name = "\improper SWAT shoes"
desc = "When you want to turn up the heat."
icon_state = "swat"
- armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
+ armor_type = /datum/armor/shoes/boots/swat
clothing_flags = NOSLIP
siemens_coefficient = 0.6
@@ -181,8 +177,8 @@
name = "combat boots"
desc = "When you REALLY want to turn up the heat"
icon_state = "swat"
- force = 5
- armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
+ damage_force = 5
+ armor_type = /datum/armor/shoes/boots/swat
clothing_flags = NOSLIP
siemens_coefficient = 0.6
@@ -196,7 +192,7 @@
name = "combat boots"
desc = "Standard issue combat boots for combat scenarios or combat situations. All combat, all the time. It can hold a Strategical knife."
icon_state = "jackboots"
- armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
+ armor_type = /datum/armor/shoes/boots/swat
siemens_coefficient = 0.6
/obj/item/clothing/shoes/cowboyboots/black
@@ -244,7 +240,6 @@
desc = "These boots seem to have been designed for a cloven foot. They're honestly pretty uncomfortable to wear."
icon = 'icons/clothing/suit/armor/utilitarian.dmi'
icon_state = "tauboots"
- armor = list(melee = 10, bullet = 20, laser = 20, energy = 15, bomb = 20, bio = 0, rad = 0)
siemens_coefficient = 0.7
drop_sound = 'sound/items/drop/boots.ogg'
pickup_sound = 'sound/items/pickup/boots.ogg'
@@ -255,7 +250,6 @@
desc = "These sturdy leather boots have been augmented with tarnished steel plate armor. The soles have been refurbished many times."
icon = 'icons/clothing/suit/armor/medieval/paladin.dmi'
icon_state = "paladinboot"
- armor = list(melee = 20, bullet = 10, laser = 10, energy = 10, bomb = 20, bio = 0, rad = 0)
siemens_coefficient = 0.7
drop_sound = 'sound/items/drop/boots.ogg'
pickup_sound = 'sound/items/pickup/boots.ogg'
diff --git a/code/modules/clothing/shoes/leg_guards.dm b/code/modules/clothing/shoes/leg_guards.dm
index afc17572a49..796ab26807a 100644
--- a/code/modules/clothing/shoes/leg_guards.dm
+++ b/code/modules/clothing/shoes/leg_guards.dm
@@ -36,7 +36,7 @@
icon_state = "leg_guards_laser"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "jackboots", SLOT_ID_LEFT_HAND = "jackboots")
siemens_coefficient = 0.1
- armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ablative
/obj/item/clothing/shoes/leg_guard/bulletproof
name = "bullet resistant leg guards"
@@ -44,7 +44,7 @@
icon_state = "leg_guards_bullet"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "jackboots", SLOT_ID_LEFT_HAND = "jackboots")
siemens_coefficient = 0.7
- armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ballistic
/obj/item/clothing/shoes/leg_guard/riot
name = "riot leg guards"
@@ -52,7 +52,7 @@
icon_state = "leg_guards_riot"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "jackboots", SLOT_ID_LEFT_HAND = "jackboots")
siemens_coefficient = 0.5
- armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/riot
/obj/item/clothing/shoes/leg_guard/combat
name = "combat leg guards"
@@ -60,7 +60,7 @@
icon_state = "leg_guards_combat"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "jackboots", SLOT_ID_LEFT_HAND = "jackboots")
siemens_coefficient = 0.6
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/combat
/obj/item/clothing/shoes/leg_guard/flexitac
name = "tactical leg guards"
@@ -69,6 +69,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "jackboots", SLOT_ID_LEFT_HAND = "jackboots")
siemens_coefficient = 0.6
slowdown = SHOES_SLOWDOWN+0.2
- armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/tactical
min_cold_protection_temperature = T0C - 20
cold_protection = LEGS
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index de3ae363ce6..6078fb9c8a6 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -5,7 +5,7 @@
clothing_flags = PHORONGUARD
item_state_slots = list(SLOT_ID_RIGHT_HAND = "magboots", SLOT_ID_LEFT_HAND = "magboots")
species_restricted = null
- force = 3
+ damage_force = 3
overshoes = 1
shoes_under_pants = -1 //These things are huge
preserve_item = 1
@@ -30,14 +30,14 @@
clothing_flags &= ~NOSLIP
magpulse = 0
set_slowdown()
- force = 3
+ damage_force = 3
if(icon_base) icon_state = "[icon_base]0"
to_chat(user, "You disable the mag-pulse traction system.")
else
clothing_flags |= NOSLIP
magpulse = 1
set_slowdown()
- force = 5
+ damage_force = 5
if(icon_base) icon_state = "[icon_base]1"
to_chat(user, "You enable the mag-pulse traction system.")
user.update_inv_shoes() //so our mob-overlays update
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index 2be49f8b74b..ba2881c363a 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -66,7 +66,7 @@
name = "clown shoes"
icon_state = "clown"
slowdown = SHOES_SLOWDOWN+1
- force = 0
+ damage_force = 0
var/footstep = 1 //used for squeeks whilst walking
species_restricted = null
@@ -85,7 +85,7 @@
desc = "A pair of boots worn by the followers of Nar-Sie."
icon_state = "cult"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "cult", SLOT_ID_LEFT_HAND = "cult")
- force = 2
+ damage_force = 2
siemens_coefficient = 0.7
origin_tech = list(TECH_ARCANE = 2)
@@ -116,7 +116,7 @@
desc = "Fluffy..."
icon_state = "slippers_worn"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "slippers", SLOT_ID_LEFT_HAND = "slippers")
- force = 0
+ damage_force = 0
w_class = ITEMSIZE_SMALL
/obj/item/clothing/shoes/laceup
@@ -171,7 +171,7 @@
desc = "A roll of treated canvas used for wrapping claws or paws"
icon_state = "clothwrap"
item_state = "clothwrap"
- force = 0
+ damage_force = 0
w_class = ITEMSIZE_SMALL
species_restricted = null
drop_sound = 'sound/items/drop/clothing.ogg'
diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm
index e11ca1962a1..7689c4b2df4 100644
--- a/code/modules/clothing/spacesuits/alien.dm
+++ b/code/modules/clothing/spacesuits/alien.dm
@@ -2,7 +2,7 @@
/obj/item/clothing/head/helmet/space/skrell
name = "Skrellian helmet"
desc = "Smoothly contoured and polished to a shine. Still looks like a fishbowl."
- armor = list(melee = 20, bullet = 20, laser = 20, energy = 50, bomb = 50, bio = 100, rad = 50)
+ armor_type = /datum/armor/skrell/space/light
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
species_restricted = list(SPECIES_SKRELL,SPECIES_HUMAN)
@@ -15,7 +15,7 @@
/obj/item/clothing/suit/space/skrell
name = "Skrellian voidsuit"
desc = "Seems like a wetsuit with reinforced plating seamlessly attached to it. Very chic."
- armor = list(melee = 20, bullet = 20, laser = 20, energy = 50, bomb = 50, bio = 100, rad = 50)
+ armor_type = /datum/armor/skrell/space/light
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/bag/ore,/obj/item/t_scanner,/obj/item/pickaxe, /obj/item/rcd)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -34,14 +34,14 @@
atom_flags = PHORONGUARD
clothing_flags = THICKMATERIAL
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)
- armor = list(melee = 60, bullet = 50, laser = 40,energy = 15, bomb = 30, bio = 100, rad = 50)
+ armor_type = /datum/armor/vox/space/armored
siemens_coefficient = 0.2
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
species_restricted = list(SPECIES_VOX)
/obj/item/clothing/head/helmet/space/vox
- armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 50)
+ armor_type = /datum/armor/vox/space/armored
siemens_coefficient = 0.2
atom_flags = PHORONGUARD
clothing_flags = THICKMATERIAL | ALLOWINTERNALS
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 7a04f691aba..03cad97f99a 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -6,7 +6,7 @@
clothing_flags = 0
inv_hide_flags = HIDEFACE|BLOCKHAIR
permeability_coefficient = 0.01
- armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50)
+ armor_type = /datum/armor/security/captain/space
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
min_pressure_protection = 0 * ONE_ATMOSPHERE
@@ -24,7 +24,7 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/energy, /obj/item/gun/ballistic, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/melee/baton,/obj/item/handcuffs)
slowdown = 1.5
- armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
+ armor_type = /datum/armor/security/captain
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
@@ -38,7 +38,7 @@
desc = "That's not red paint. That's real blood."
icon_state = "deathsquad"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black-red", SLOT_ID_LEFT_HAND = "syndicate-helm-black-red")
- armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 100, rad = 60)
+ armor_type = /datum/armor/centcom/deathsquad
clothing_flags = THICKMATERIAL
inv_hide_flags = BLOCKHAIR
siemens_coefficient = 0.6
@@ -49,7 +49,6 @@
desc = "An armored beret commonly used by special operations officers."
icon_state = "beret_badge"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "beret", SLOT_ID_LEFT_HAND = "beret")
- armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
clothing_flags = 0
inv_hide_flags = BLOCKHAIR
siemens_coefficient = 0.9
@@ -76,7 +75,7 @@
name = "pirate hat"
desc = "Yarr."
icon_state = "pirate"
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
+ armor_type = /datum/armor/pirate/medium
clothing_flags = 0
inv_hide_flags = BLOCKHAIR
body_cover_flags = 0
@@ -89,7 +88,7 @@
w_class = ITEMSIZE_NORMAL
allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/tank/emergency/oxygen)
slowdown = 0
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
+ armor_type = /datum/armor/pirate/medium
siemens_coefficient = 0.9
inv_hide_flags = HIDETAIL|HIDEHOLSTER
body_cover_flags = UPPER_TORSO|ARMS
diff --git a/code/modules/clothing/spacesuits/plasman.dm b/code/modules/clothing/spacesuits/plasman.dm
index 223e76be96b..1f4723332f8 100644
--- a/code/modules/clothing/spacesuits/plasman.dm
+++ b/code/modules/clothing/spacesuits/plasman.dm
@@ -8,7 +8,7 @@
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. Seems like it doesn't protect from much else."
slowdown = 1
clothing_flags = ALLOWINTERNALS
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
+ armor_type = /datum/armor/phoronoid
allowed = list(/obj/item/tank)
can_breach = 0 // w h y ?
valid_accessory_slots = (\
@@ -33,7 +33,7 @@
icon_override = 'icons/mob/plasmeme/helmet.dmi'
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. Comes with a little light built in!"
clothing_flags = ALLOWINTERNALS | FLEXIBLEMATERIAL
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
+ armor_type = /datum/armor/phoronoid
light_overlay = "plasmaman_overlay"
//
@@ -42,7 +42,7 @@
/obj/item/clothing/suit/space/plasman/sec
icon_state = "plasmaman_suitsecurity"
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is armored for security use."
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 0)
+ armor_type = /datum/armor/phoronoid/security
/obj/item/clothing/suit/space/plasman/sec/detective
icon_state = "plasmaman_suitdetective"
@@ -54,7 +54,7 @@
/obj/item/clothing/suit/space/plasman/sec/hos
icon_state = "plasmaman_suithos"
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is armored for the Head of Security!"
- armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 100, rad = 0)
+ armor_type = /datum/armor/phoronoid/security/head
/obj/item/clothing/suit/space/plasman/sec/hop
icon_state = "plasmaman_suithop"
@@ -66,7 +66,7 @@
/obj/item/clothing/head/helmet/space/plasman/sec
icon_state = "plasmaman_helmetsecurity"
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 0)
+ armor_type = /datum/armor/phoronoid/security
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is armored for security use."
/obj/item/clothing/head/helmet/space/plasman/sec/detective
@@ -75,7 +75,7 @@
/obj/item/clothing/head/helmet/space/plasman/sec/hos
icon_state = "plasmaman_helmethos"
- armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 100, rad = 0)
+ armor_type = /datum/armor/phoronoid/security/head
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is armored for the Head of Security!"
/obj/item/clothing/head/helmet/space/plasman/sec/hop
@@ -92,11 +92,12 @@
/obj/item/clothing/suit/space/plasman/med
icon_state = "plasmaman_suitmedical"
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is painted in medical colors."
+ armor_type = /datum/armor/phoronoid/medical
/obj/item/clothing/suit/space/plasman/med/rescue
icon_state = "plasmaman_suitparamedic"
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is painted in medical colors, and is thicker."
- armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 50)
+ armor_type = /datum/armor/phoronoid/medical/paramedic
/obj/item/clothing/suit/space/plasman/med/chemist
icon_state = "plasmaman_suitchemist"
@@ -105,7 +106,6 @@
/obj/item/clothing/suit/space/plasman/med/viro
icon_state = "plasmaman_suitvirologist"
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is painted in virology colors."
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 40)
/obj/item/clothing/suit/space/plasman/med/cmo
icon_state = "plasmaman_suitcmo"
@@ -114,11 +114,12 @@
/obj/item/clothing/head/helmet/space/plasman/med
icon_state = "plasmaman_helmetmedical"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is painted in medical colors."
+ armor_type = /datum/armor/phoronoid/medical
/obj/item/clothing/head/helmet/space/plasman/med/rescue
icon_state = "plasmaman_helmetparamedic"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is painted in medical colors, and is thicker."
- armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 50)
+ armor_type = /datum/armor/phoronoid/medical/paramedic
/obj/item/clothing/head/helmet/space/plasman/med/chemist
icon_state = "plasmaman_helmetchemist"
@@ -127,11 +128,11 @@
/obj/item/clothing/head/helmet/space/plasman/med/viro
icon_state = "plasmaman_helmetvirologist"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is painted in virology colors."
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 40)
/obj/item/clothing/head/helmet/space/plasman/med/cmo
icon_state = "plasmaman_helmetcmo"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is for the Chief Medical Officer!"
+ armor_type = /datum/armor/phoronoid/head
//
// SCIENCE
@@ -140,28 +141,28 @@
/obj/item/clothing/suit/space/plasman/science
icon_state = "plasmaman_suitscience"
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is painted in science colors."
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 20, bio = 100, rad = 100)
+ armor_type = /datum/armor/phoronoid/science
/obj/item/clothing/suit/space/plasman/science/explorer
- armor = list(melee = 40, bullet = 15, laser = 25,energy = 35, bomb = 30, bio = 100, rad = 70)
+ armor_type = /datum/armor/phoronoid/science
/obj/item/clothing/suit/space/plasman/science/rd
icon_state = "plasmaman_suitrd"
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is for the Research Director!"
- armor = list(melee = 45, bullet = 5, laser = 45, energy = 80, bomb = 60, bio = 100, rad = 100)
+ armor_type = /datum/armor/phoronoid/head
/obj/item/clothing/head/helmet/space/plasman/science
icon_state = "plasmaman_helmetscience"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is painted in science colors."
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 20, bio = 100, rad = 100)
+ armor_type = /datum/armor/phoronoid/science
/obj/item/clothing/head/helmet/space/plasman/science/explorer
- armor = list(melee = 40, bullet = 15, laser = 25,energy = 35, bomb = 30, bio = 100, rad = 70)
+ armor_type = /datum/armor/phoronoid/science
/obj/item/clothing/head/helmet/space/plasman/science/rd
icon_state = "plasmaman_helmetrd"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is for the Research Director!"
- armor = list(melee = 45, bullet = 5, laser = 45, energy = 80, bomb = 60, bio = 100, rad = 100)
+ armor_type = /datum/armor/phoronoid/head
//
// ENGINEERING
@@ -170,35 +171,35 @@
/obj/item/clothing/suit/space/plasman/engi
icon_state = "plasmaman_suitengineer"
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is in engineering colors, and radiation-proof."
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 100)
+ armor_type = /datum/armor/phoronoid/engineering
/obj/item/clothing/suit/space/plasman/engi/atmos
icon_state = "plasmaman_suitatmos"
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is in atmospherics colors, and more resilient to higher temperatures."
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 60)
+ armor_type = /datum/armor/phoronoid/engineering
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/suit/space/plasman/engi/ce
icon_state = "plasmaman_suitce"
desc = "A suit designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is for the Chief Engineer!"
- armor = list(melee = 30, bullet = 15, laser = 10, energy = 10, bomb = 30, bio = 100, rad = 100)
+ armor_type = /datum/armor/phoronoid/engineering
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/head/helmet/space/plasman/engi
icon_state = "plasmaman_helmetengineer"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is in engineering colors, and radiation-proof."
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 100)
+ armor_type = /datum/armor/phoronoid/engineering
/obj/item/clothing/head/helmet/space/plasman/engi/atmos
icon_state = "plasmaman_helmetatmos"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is in atmospherics colors, and more resilient to higher temperatures."
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 60)
+ armor_type = /datum/armor/phoronoid/engineering
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/head/helmet/space/plasman/engi/ce
icon_state = "plasmaman_helmetce"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is for the Chief Engineer!"
- armor = list(melee = 30, bullet = 15, laser = 10, energy = 10, bomb = 30, bio = 100, rad = 100)
+ armor_type = /datum/armor/phoronoid/head
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
//
@@ -212,7 +213,7 @@
/obj/item/clothing/suit/space/plasman/cargo/miner
icon_state = "plasmaman_suitminer"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is for miners, and seems to have some light armor."
- armor = list(melee = 50, bullet = 5, laser = 20, energy = 5, bomb = 55, bio = 100, rad = 20)
+ armor_type = /datum/armor/phoronoid/miner
/obj/item/clothing/head/helmet/space/plasman/cargo
icon_state = "plasmaman_helmetcargo"
@@ -221,7 +222,7 @@
/obj/item/clothing/head/helmet/space/plasman/cargo/miner
icon_state = "plasmaman_helmetminer"
desc = "A helmet designed by NT to keep phoronoids from coming into contact with incompatible atmosphere. This one is for miners, and seems to have some light armor."
- armor = list(melee = 50, bullet = 5, laser = 20, energy = 5, bomb = 55, bio = 100, rad = 20)
+ armor_type = /datum/armor/phoronoid/miner
//
// OTHER (Service, IAA, etc.)
diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm
index 970cb889553..ec2a0ad00d1 100644
--- a/code/modules/clothing/spacesuits/spacesuits.dm
+++ b/code/modules/clothing/spacesuits/spacesuits.dm
@@ -9,7 +9,7 @@
atom_flags = PHORONGUARD
clothing_flags = THICKMATERIAL | ALLOWINTERNALS | ALLOW_SURVIVALFOOD
permeability_coefficient = 0.01
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
+ armor_type = /datum/armor/general/space
inv_hide_flags = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR
body_cover_flags = HEAD|FACE|EYES
cold_protection = HEAD
@@ -74,7 +74,7 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/flashlight,/obj/item/tank/emergency/oxygen,/obj/item/suit_cooling_unit)
slowdown = 1
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
+ armor_type = /datum/armor/general/space
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index 078e1912b4e..2f1a9d05605 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -3,7 +3,7 @@
name = "red space helmet"
icon_state = "syndicate"
desc = "A crimson helmet sporting clean lines and durable plating. Engineered to look menacing."
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
+ armor_type = /datum/armor/agent/space
siemens_coefficient = 0.6
/obj/item/clothing/suit/space/syndicate
@@ -13,7 +13,7 @@
w_class = ITEMSIZE_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)
slowdown = 1
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
+ armor_type = /datum/armor/agent/space
siemens_coefficient = 0.6
//Green syndicate space suit
diff --git a/code/modules/clothing/spacesuits/void/event.dm b/code/modules/clothing/spacesuits/void/event.dm
index 0d99f4823c2..fcfbc95dd36 100644
--- a/code/modules/clothing/spacesuits/void/event.dm
+++ b/code/modules/clothing/spacesuits/void/event.dm
@@ -9,7 +9,7 @@
desc = "A refurbished early contact era voidsuit helmet of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. The visor has a bad habit of fogging up and collecting condensation, but it beats sucking hard vacuum. This one is devoid of any identifying markings or rank indicators."
icon_state = "rig0-vintagecrew"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black")
- armor = list(melee = 30, bullet = 15, laser = 15,energy = 5, bomb = 20, bio = 100, rad = 50)
+ armor_type = /datum/armor/vintage/space
light_overlay = "helmet_light"
/obj/item/clothing/suit/space/void/refurb
@@ -18,7 +18,7 @@
icon_state = "rig-vintagecrew"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
slowdown = 0.5
- armor = list(melee = 30, bullet = 15, laser = 15,energy = 5, bomb = 20, bio = 100, rad = 50)
+ armor_type = /datum/armor/vintage/space
allowed = list(/obj/item/flashlight,
/obj/item/tank,
/obj/item/suit_cooling_unit,
@@ -37,7 +37,7 @@
desc = "A refurbished early contact era voidsuit helmet of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. This one in particular seems to be an ode to the Ship of Theseus, but the insulation and radiation proofing are top-notch, and it has several oily stains that seem to be impossible to scrub off."
icon_state = "rig0-vintageengi"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black")
- armor = list(melee = 40, bullet = 20, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 100)
+ armor_type = /datum/armor/vintage/space/engi
min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 15 * ONE_ATMOSPHERE
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -48,7 +48,7 @@
icon_state = "rig-vintageengi"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
slowdown = 1
- armor = list(melee = 40, bullet = 20, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 100)
+ armor_type = /datum/armor/vintage/space/engi
min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 15 * ONE_ATMOSPHERE
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -81,7 +81,7 @@
desc = "A refurbished early contact era voidsuit helmet of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. The visor has a bad habit of fogging up and collecting condensation, but it beats sucking hard vacuum. The green and white markings indicate this as a medic's suit."
icon_state = "rig0-vintagemedic"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black")
- armor = list(melee = 30, bullet = 15, laser = 15, energy = 5, bomb = 25, bio = 100, rad = 75)
+ armor_type = /datum/armor/vintage/space/med
/obj/item/clothing/head/helmet/space/void/refurb/medical/alt
name = "vintage medical voidsuit bubble helmet"
@@ -94,7 +94,7 @@
icon_state = "rig-vintagemedic"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
slowdown = 0.5
- armor = list(melee = 30, bullet = 15, laser = 15, energy = 5, bomb = 25, bio = 100, rad = 75)
+ armor_type = /datum/armor/vintage/space/med
allowed = list(/obj/item/flashlight,
/obj/item/tank,
/obj/item/suit_cooling_unit,
@@ -116,7 +116,7 @@
desc = "A refurbished early contact era voidsuit helmet of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. The visor has a bad habit of fogging up and collecting condensation, but it beats sucking hard vacuum. The blue markings indicate this as the marine/guard variant, likely from a merchant ship."
icon_state = "rig0-vintagemarine"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black")
- armor = list(melee = 40, bullet = 35, laser = 35, energy = 5, bomb = 40, bio = 100, rad = 50)
+ armor_type = /datum/armor/vintage/space/marine
siemens_coefficient = 0.8
/obj/item/clothing/suit/space/void/refurb/marine
@@ -125,7 +125,7 @@
icon_state = "rig-vintagemarine"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
slowdown = 1
- armor = list(melee = 40, bullet = 35, laser = 35, energy = 5, bomb = 40, bio = 100, rad = 50)
+ armor_type = /datum/armor/vintage/space/marine
siemens_coefficient = 0.8
allowed = list(/obj/item/gun,
/obj/item/flashlight,
@@ -152,7 +152,7 @@
desc = "A refurbished early contact era voidsuit helmet of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. The visor has a bad habit of fogging up and collecting condensation, but it beats sucking hard vacuum. This variant appears to be an officer's, and has the best protection of all the old models."
icon_state = "rig0-vintageofficer"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black")
- armor = list(melee = 50, bullet = 45, laser = 45, energy = 10, bomb = 30, bio = 100, rad = 60)
+ armor_type = /datum/armor/vintage/space/officer
siemens_coefficient = 0.7
/obj/item/clothing/suit/space/void/refurb/officer
@@ -161,7 +161,7 @@
icon_state = "rig-vintageofficer"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
slowdown = 1
- armor = list(melee = 50, bullet = 45, laser = 45, energy = 10, bomb = 30, bio = 100, rad = 60)
+ armor_type = /datum/armor/vintage/space/officer
siemens_coefficient = 0.7
allowed = list(/obj/item/gun,
/obj/item/flashlight,
@@ -187,7 +187,7 @@
desc = "A refurbished early contact era voidsuit helmet of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. The standard pilot model has a nice clear bubble helmet that doesn't fog up easily and has much better visibility, at the cost of relatively poor protection."
icon_state = "rig0-vintagepilot"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black")
- armor = list(melee = 25, bullet = 20, laser = 20, energy = 5, bomb = 20, bio = 100, rad = 50)
+ armor_type = /datum/armor/vintage/space/pilot
siemens_coefficient = 0.9
//fluff alt-variant helmet, no changes to protection or anything despite the desc (and it wouldn't matter unless you found a base-type since armor values aren't transferred during refits)
@@ -202,7 +202,7 @@
icon_state = "rig-vintagepilot"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
slowdown = 0.25
- armor = list(melee = 25, bullet = 20, laser = 20, energy = 5, bomb = 20, bio = 100, rad = 50)
+ armor_type = /datum/armor/vintage/space/pilot
siemens_coefficient = 0.9
allowed = list(/obj/item/flashlight,
/obj/item/tank,
@@ -219,7 +219,7 @@
desc = "A refurbished early contact era voidsuit helmet of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. The visor has a bad habit of fogging up and collecting condensation, but it beats sucking hard vacuum. The purple markings indicate this as a scientist's helmet. Got your crowbar handy?"
icon_state = "rig0-vintagescientist"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black")
- armor = list(melee = 25, bullet = 10, laser = 10, energy = 50, bomb = 10, bio = 100, rad = 100)
+ armor_type = /datum/armor/vintage/space/science
siemens_coefficient = 0.8
/obj/item/clothing/head/helmet/space/void/refurb/research/alt
@@ -233,7 +233,7 @@
icon_state = "rig-vintagescientist"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
slowdown = 0.5
- armor = list(melee = 25, bullet = 10, laser = 10, energy = 50, bomb = 10, bio = 100, rad = 100)
+ armor_type = /datum/armor/vintage/space/science
siemens_coefficient = 0.8
allowed = list(/obj/item/flashlight,
/obj/item/tank,
@@ -265,7 +265,7 @@
desc = "A refurbished early contact era voidsuit helmet of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. The visor has a bad habit of fogging up and collecting condensation, but it beats sucking hard vacuum. The red markings indicate this as the mercenary variant. The company ID has been scratched off."
icon_state = "rig0-vintagemerc"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black")
- armor = list(melee = 55, bullet = 45, laser = 45, energy = 25, bomb = 50, bio = 100, rad = 50)
+ armor_type = /datum/armor/vintage/space/merc
siemens_coefficient = 0.6
/obj/item/clothing/suit/space/void/refurb/mercenary
@@ -274,11 +274,12 @@
icon_state = "rig-vintagemerc"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
slowdown = 1.5 //the tradeoff for being hot shit almost on par with a crimson suit is that it slows you down even more
- armor = list(melee = 55, bullet = 45, laser = 45, energy = 25, bomb = 50, bio = 100, rad = 50)
+ armor_type = /datum/armor/vintage/space/merc
siemens_coefficient = 0.6
allowed = list(/obj/item/gun,
/obj/item/flashlight,
/obj/item/tank,
+
/obj/item/suit_cooling_unit,
/obj/item/melee,
/obj/item/grenade,
diff --git a/code/modules/clothing/spacesuits/void/merc.dm b/code/modules/clothing/spacesuits/void/merc.dm
index 7c4741d5a2c..84d6c50b211 100644
--- a/code/modules/clothing/spacesuits/void/merc.dm
+++ b/code/modules/clothing/spacesuits/void/merc.dm
@@ -4,7 +4,7 @@
desc = "An advanced helmet designed for work in special operations. Property of Gorlex Marauders."
icon_state = "rig0-syndie"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_helm", SLOT_ID_LEFT_HAND = "syndie_helm")
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60)
+ armor_type = /datum/armor/merc/space
siemens_coefficient = 0.6
camera_networks = list(NETWORK_MERCENARY)
light_overlay = "helmet_light_green" //todo: species-specific light overlays
@@ -16,7 +16,7 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_voidsuit", SLOT_ID_LEFT_HAND = "syndie_voidsuit")
slowdown = 1
w_class = ITEMSIZE_NORMAL
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60)
+ 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)
siemens_coefficient = 0.6
@@ -24,7 +24,7 @@
icon_state = "rig0-firebug"
name = "soot-covered voidsuit helmet"
desc = "A blackened helmet 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 = list(melee = 40, bullet = 40, laser = 60, energy = 20, bomb = 50, bio = 100, rad = 50)
+ armor_type = /datum/armor/merc/space/ghostrider
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
siemens_coefficient = 0.7
light_overlay = "helmet_light_fire"
@@ -33,7 +33,7 @@
icon_state = "rig-firebug"
name = "soot-covered voidsuit"
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 = list(melee = 40, bullet = 40, laser = 60, energy = 20, bomb = 50, bio = 100, rad = 50)
+ 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)
siemens_coefficient = 0.7
@@ -43,28 +43,28 @@
name = "ancient red helmet"
desc = "An antique helmet which served as one of the inspirations for Gorlex's designs, a faded logo on the interior resembles a shattered sickle."
icon_state = "void_soviet"
- armor = list(melee = 40, bullet = 60, laser = 20,energy = 15, bomb = 45, bio = 100, rad = 100)
+ armor_type = /datum/armor/merc/space/soviet
light_overlay = "sr_overlay"
/obj/item/clothing/suit/space/void/merc/soviet
name = "antique red voidsuit"
desc = "A well maintained antique voidsuit, the scent of stale sweat and vodka is impossible to remove. Many features of this suit bear morphological similarities to more modern Gorlex voidsuits."
icon_state = "void_soviet"
- armor = list(melee = 40, bullet = 60, laser = 20, energy = 15, bomb = 45, bio = 100, rad = 100)
+ armor_type = /datum/armor/merc/space/soviet
//'Werewolf' Void Suit
/obj/item/clothing/head/helmet/space/void/merc/wulf
name = "antique werwulf helmet"
desc = "An antique helmet designed by a long-forgotten corporation. Their dreams of conquest were no match against their competitors. Few of these helmets remain."
icon_state = "void_wulf"
- armor = list(melee = 40, bullet = 60, laser = 20,energy = 15, bomb = 45, bio = 100, rad = 100)
+ armor_type = /datum/armor/merc/space/wulf
light_overlay = "sr_overlay"
/obj/item/clothing/suit/space/void/merc/wulf
name = "antique werwulf voidsuit"
desc = "A well maintained antique, this armored voidsuit cuts an imposing silhouette. Many such suits used to be found in scrap heaps across the Frontier, although few now remain."
icon_state = "void_wulf"
- armor = list(melee = 40, bullet = 60, laser = 20, energy = 15, bomb = 45, bio = 100, rad = 100)
+ armor_type = /datum/armor/merc/space/wulf
// Honk Op Rig
/obj/item/clothing/head/helmet/space/void/clownop
@@ -72,7 +72,7 @@
desc = "An advanced helmet designed for work in special operations. An intricate bananium wafer in the shape of a banana bears the crest of Columbina."
icon_state = "rig0-clownop"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_helm", SLOT_ID_LEFT_HAND = "syndie_helm")
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60)
+ armor_type = /datum/armor/merc/space/clown
siemens_coefficient = 0.6
camera_networks = list(NETWORK_MERCENARY)
light_overlay = "gk_overlay" //todo: species-specific light overlays
@@ -88,6 +88,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_voidsuit", SLOT_ID_LEFT_HAND = "syndie_voidsuit")
slowdown = 1
w_class = ITEMSIZE_NORMAL
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60)
+ 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)
siemens_coefficient = 0.6
diff --git a/code/modules/clothing/spacesuits/void/outsider.dm b/code/modules/clothing/spacesuits/void/outsider.dm
index e72f15def2b..723318ad6e6 100644
--- a/code/modules/clothing/spacesuits/void/outsider.dm
+++ b/code/modules/clothing/spacesuits/void/outsider.dm
@@ -91,7 +91,7 @@
name = "Pirate voidsuit helmet"
desc = "Pirates come from many walks of life. Drawn by the allure of easy riches, many pirates must come to terms with the realities of funding their own expeditions. As such, they find their fun where they can, like with decorative helmet elements."
icon_state = "spacepirate"
- armor = list(melee = 50, bullet = 20, laser = 30, energy = 5, bomb = 20, bio = 100, rad = 70)
+ armor_type = /datum/armor/pirate/space
/obj/item/clothing/head/helmet/space/void/pirate/alt
name = "Pirate voidsuit helmet"
@@ -101,7 +101,7 @@
name = "Pirate voidsuit"
desc = "The majority of pirate crews purchase bulk or surplus voidsuits and attempt to improve their armor themselves to cut costs. Although effective when facing their preferred targets, this often leaves pirate bands vulnerable to retaliation from SDF and Security forces. Pirate voidsuits sport a wide array of cosmetic paint jobs, usually related to the band its owner belongs to. These suits are sometimes recovered and collected as pieces of art."
icon_state = "spacepirate"
- armor = list(melee = 50, bullet = 20, laser = 30, energy = 5, bomb = 20, bio = 100, rad = 70)
+ armor_type = /datum/armor/pirate/space
//Pirate Red Mining Suit variant.
/obj/item/clothing/head/helmet/space/void/pirate/scrapper
diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm
index fff8373e2b2..28e57278417 100644
--- a/code/modules/clothing/spacesuits/void/station.dm
+++ b/code/modules/clothing/spacesuits/void/station.dm
@@ -5,7 +5,7 @@
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
icon_state = "rig0-engineering"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_helm", SLOT_ID_LEFT_HAND = "eng_helm")
- armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 100)
+ armor_type = /datum/armor/engineering/space
min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 15 * ONE_ATMOSPHERE
@@ -15,7 +15,7 @@
icon_state = "rig-engineering"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_voidsuit", SLOT_ID_LEFT_HAND = "eng_voidsuit")
slowdown = 1
- armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 100)
+ armor_type = /datum/armor/engineering/space
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/t_scanner,/obj/item/pickaxe, /obj/item/rcd)
min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 15 * ONE_ATMOSPHERE
@@ -27,14 +27,14 @@
desc = "A engineering helmet designed for work in a low-pressure environment. Extra radiation shielding appears to have been installed at the price of comfort."
icon_state = "rig0-engineering_rad"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_helm_rad", SLOT_ID_LEFT_HAND = "eng_helm_rad")
- armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 50, bio = 100, rad = 100)
+ armor_type = /datum/armor/engineering/space/hazmat
/obj/item/clothing/suit/space/void/engineering/hazmat
name = "HAZMAT voidsuit"
desc = "A engineering voidsuit that protects against hazardous, low pressure environments. Has enhanced radiation shielding compared to regular engineering voidsuits."
icon_state = "rig-engineering_rad"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_voidsuit_rad", SLOT_ID_LEFT_HAND = "eng_voidsuit_rad")
- armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 50, bio = 100, rad = 100)
+ armor_type = /datum/armor/engineering/space/hazmat
//Engineering Construction Voidsuit
@@ -54,14 +54,14 @@
name = "reinforced engineering voidsuit helmet"
desc = "A heavy, radiation-shielded voidsuit helmet with a surprisingly comfortable interior."
icon_state = "rig0-engineeringalt"
- armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 45, bio = 100, rad = 100)
+ armor_type = /datum/armor/engineering/space/heavy
light_overlay = "helmet_light_dual"
/obj/item/clothing/suit/space/void/engineering/alt
name = "reinforced engineering voidsuit"
desc = "A bulky industrial voidsuit. It's a few generations old, but a reliable design and radiation shielding make up for the lack of climate control."
icon_state = "rig-engineeringalt"
- armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 45, bio = 100, rad = 100)
+ armor_type = /datum/armor/engineering/space/heavy
/obj/item/clothing/head/helmet/space/void/engineering/salvage
name = "salvage voidsuit helmet"
@@ -71,13 +71,13 @@
SLOT_ID_LEFT_HAND = "eng_helm",
SLOT_ID_RIGHT_HAND = "eng_helm",
)
- armor = list(melee = 50, bullet = 10, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 80)
+ armor_type = /datum/armor/engineering/space/salvage
/obj/item/clothing/suit/space/void/engineering/salvage
name = "salvage voidsuit"
desc = "A hand-me-down salvage voidsuit. It has obviously had a lot of repair work done to its radiation shielding."
icon_state = "rig-engineeringsav"
- armor = list(melee = 50, bullet = 10, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 80)
+ armor_type = /datum/armor/engineering/space/salvage
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/toolbox,/obj/item/storage/briefcase/inflatable,/obj/item/t_scanner,/obj/item/rcd)
//Mining
@@ -86,7 +86,7 @@
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating."
icon_state = "rig0-mining"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "mining_helm", SLOT_ID_LEFT_HAND = "mining_helm")
- armor = list(melee = 50, bullet = 5, laser = 20, energy = 5, bomb = 55, bio = 100, rad = 65)
+ armor_type = /datum/armor/cargo/mining/space
light_overlay = "helmet_light_dual"
/obj/item/clothing/suit/space/void/mining
@@ -95,7 +95,7 @@
icon_state = "rig-mining"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "mining_voidsuit", SLOT_ID_LEFT_HAND = "mining_voidsuit")
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/pickaxe)
- armor = list(melee = 50, bullet = 5, laser = 20, energy = 5, bomb = 55, bio = 100, rad = 65)
+ armor_type = /datum/armor/cargo/mining/space
//Mining Surplus Voidsuit
@@ -103,13 +103,13 @@
name = "frontier mining voidsuit helmet"
desc = "An armored cheap voidsuit helmet. Someone must have through they were pretty cool when they painted a mohawk on it."
icon_state = "rig0-miningalt"
- armor = list(melee = 50, bullet = 15, laser = 20,energy = 5, bomb = 55, bio = 100, rad = 20)
+ armor_type = /datum/armor/cargo/mining/space/armored
/obj/item/clothing/suit/space/void/mining/alt
icon_state = "rig-miningalt"
name = "frontier mining voidsuit"
desc = "A cheap prospecting voidsuit. What it lacks in comfort it makes up for in armor plating and street cred."
- armor = list(melee = 50, bullet = 15, laser = 20,energy = 5, bomb = 55, bio = 100, rad = 20)
+ armor_type = /datum/armor/cargo/mining/space/armored
//Medical
/obj/item/clothing/head/helmet/space/void/medical
@@ -117,7 +117,7 @@
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding."
icon_state = "rig0-medical"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_helm", SLOT_ID_LEFT_HAND = "medical_helm")
- armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 50)
+ armor_type = /datum/armor/medical/space
/obj/item/clothing/suit/space/void/medical
name = "medical voidsuit"
@@ -125,7 +125,7 @@
icon_state = "rig-medical"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_voidsuit", SLOT_ID_LEFT_HAND = "medical_voidsuit")
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/firstaid,/obj/item/healthanalyzer,/obj/item/stack/medical)
- armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 50)
+ armor_type = /datum/armor/medical/space
//Medical EMT Voidsuit
@@ -146,28 +146,28 @@
desc = "A special helmet that protects against hazardous environments. Has minor radiation shielding."
icon_state = "rig0-medical_bio"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_helm_bio", SLOT_ID_LEFT_HAND = "medical_helm_bio")
- armor = list(melee = 45, bullet = 5, laser = 20, energy = 5, bomb = 15, bio = 100, rad = 75)
+ armor_type = /datum/armor/medical/space
/obj/item/clothing/suit/space/void/medical/bio
name = "biohazard voidsuit"
desc = "A special suit that protects against hazardous, environments. It feels heavier than the standard suit with extra protection around the joints."
icon_state = "rig-medical_bio"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_voidsuit_bio", SLOT_ID_LEFT_HAND = "medical_voidsuit_bio")
- armor = list(melee = 45, bullet = 5, laser = 20, energy = 5, bomb = 15, bio = 100, rad = 75)
+ armor_type = /datum/armor/medical/space
//Medical Streamlined Voidsuit
/obj/item/clothing/head/helmet/space/void/medical/alt
name = "streamlined medical voidsuit helmet"
desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a sleek blue."
icon_state = "rig0-medicalalt"
- armor = list(melee = 20, bullet = 5, laser = 20,energy = 5, bomb = 15, bio = 100, rad = 30)
+ armor_type = /datum/armor/medical/space
light_overlay = "helmet_light_dual_blue"
/obj/item/clothing/head/helmet/space/void/medical/alt_plated
name = "streamlined medical voidsuit helmet"
desc = "A trendy, fully biohazard and radiation-shielded voidsuit helmet trimmed in a sleek blue."
icon_state = "rig0-medicalalt2"
- armor = list(melee = 35, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100)
+ armor_type = /datum/armor/medical/space/upgraded
light_overlay = "helmet_light_dual_blue"
/obj/item/clothing/suit/space/void/medical/alt
@@ -175,14 +175,14 @@
name = "streamlined medical voidsuit"
desc = "A more recent model of Vey-Med voidsuit, exchanging physical protection for fully unencumbered movement and a complete range of motion."
slowdown = 0
- armor = list(melee = 20, bullet = 5, laser = 20,energy = 5, bomb = 15, bio = 100, rad = 30)
+ armor_type = /datum/armor/medical/space
/obj/item/clothing/suit/space/void/medical/alt_plated
icon_state = "rig-medicalalt2"
name = "plated medical voidsuit"
desc = "An iteration of an existing Vey-Med voidsuit, allowing full biohazard, radiation and increased close-quarters protection, at the expense of projectile and ranged layers."
slowdown = 0
- armor = list(melee = 35, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100)
+ armor_type = /datum/armor/medical/space/upgraded
//Security
/obj/item/clothing/head/helmet/space/void/security
@@ -190,7 +190,7 @@
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "rig0-sec"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_helm", SLOT_ID_LEFT_HAND = "sec_helm")
- armor = list(melee = 50, bullet = 25, laser = 25, energy = 5, bomb = 45, bio = 100, rad = 10)
+ armor_type = /datum/armor/security/space
siemens_coefficient = 0.7
light_overlay = "helmet_light_dual"
@@ -199,7 +199,7 @@
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
icon_state = "rig-sec"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuit", SLOT_ID_LEFT_HAND = "sec_voidsuit")
- armor = list(melee = 50, bullet = 25, laser = 25, energy = 5, bomb = 45, bio = 100, rad = 10)
+ armor_type = /datum/armor/security/space
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton)
siemens_coefficient = 0.7
@@ -220,13 +220,13 @@
name = "riot security voidsuit helmet"
desc = "A somewhat tacky voidsuit helmet, a fact mitigated by heavy armor plating."
icon_state = "rig0-secalt"
- armor = list(melee = 70, bullet = 20, laser = 30, energy = 5, bomb = 35, bio = 100, rad = 10)
+ armor_type = /datum/armor/security/space/riot
/obj/item/clothing/suit/space/void/security/alt
icon_state = "rig-secalt"
name = "riot security voidsuit"
desc = "A heavily armored voidsuit, designed to intimidate people who find black intimidating. Surprisingly slimming."
- armor = list(melee = 70, bullet = 20, laser = 30, energy = 5, bomb = 35, bio = 100, rad = 10)
+ armor_type = /datum/armor/security/space/riot
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton)
//Cydonia Armor
@@ -247,7 +247,7 @@
name = "atmospherics voidsuit helmet"
icon_state = "rig0-atmos"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_helm", SLOT_ID_LEFT_HAND = "atmos_helm")
- armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 50)
+ armor_type = /datum/armor/engineering/space/atmos
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
light_overlay = "helmet_light_dual"
min_pressure_protection = 0 * ONE_ATMOSPHERE
@@ -258,7 +258,7 @@
desc = "A special suit that protects against hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
icon_state = "rig-atmos"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_voidsuit", SLOT_ID_LEFT_HAND = "atmos_voidsuit")
- armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 50)
+ armor_type = /datum/armor/engineering/space/atmos
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 20* ONE_ATMOSPHERE
@@ -269,7 +269,7 @@
desc = "A special voidsuit helmet designed for work in hazardous, low pressure environments.This one has been plated with an expensive heat and radiation resistant ceramic."
name = "heavy duty atmospherics voidsuit helmet"
icon_state = "rig0-atmosalt"
- armor = list(melee = 20, bullet = 5, laser = 20,energy = 15, bomb = 45, bio = 100, rad = 50)
+ armor_type = /datum/armor/engineering/space/atmos/heavy
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
light_overlay = "hardhat_light"
@@ -277,7 +277,7 @@
desc = "A special suit that protects against hazardous, low pressure environments. Fits better than the standard atmospheric voidsuit while still rated to withstand extreme heat and even minor radiation."
icon_state = "rig-atmosalt"
name = "heavy duty atmos voidsuit"
- armor = list(melee = 20, bullet = 5, laser = 20,energy = 15, bomb = 45, bio = 100, rad = 50)
+ armor_type = /datum/armor/engineering/space/atmos/heavy
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
//Exploration
@@ -287,7 +287,7 @@
icon_state = "helm_explorer"
item_state = "helm_explorer"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black")
- armor = list(melee = 40, bullet = 15, laser = 25,energy = 35, bomb = 30, bio = 70, rad = 70)
+ armor_type = /datum/armor/exploration/space
light_overlay = "helmet_light_dual" //explorer_light
camera_networks = list(NETWORK_EXPLO_HELMETS)
@@ -296,7 +296,7 @@
desc = "A lightweight, radiation-resistant voidsuit, featuring the Explorer emblem on its chest plate. Designed for exploring unknown planetary environments."
icon_state = "void_explorer"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "skrell_suit_black", SLOT_ID_LEFT_HAND = "skrell_suit_black")
- armor = list(melee = 40, bullet = 15, laser = 25,energy = 35, bomb = 30, bio = 70, rad = 70)
+ armor_type = /datum/armor/exploration/space
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/stack/flag,/obj/item/healthanalyzer,/obj/item/gps,/obj/item/radio/beacon, \
/obj/item/shovel,/obj/item/ammo_magazine,/obj/item/gun)
@@ -316,14 +316,14 @@
desc = "A comfortable helmet designed to provide protection for Pathfinder units on long-term operations."
icon_state = "helm_explorer_pf"
item_state = "helm_explorer_pf"
- armor = list(melee = 40, bullet = 25, laser = 25,energy = 40, bomb = 30, bio = 100, rad = 70)
+ armor_type = /datum/armor/exploration/space/pathfinder
/obj/item/clothing/suit/space/void/exploration/pathfinder
name = "pathfinder voidsuit"
desc = "A versatile, armored voidsuit, featuring the Pathfinder emblem on its chest plate. Designed for long deployments in unknown planetary environments."
icon_state = "void_explorer_pf"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "skrell_suit_black", SLOT_ID_LEFT_HAND = "skrell_suit_black")
- armor = list(melee = 50, bullet = 40, laser = 45,energy = 45, bomb = 30, bio = 100, rad = 70)
+ armor_type = /datum/armor/exploration/space/pathfinder
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/stack/flag,/obj/item/healthanalyzer,/obj/item/gps,/obj/item/radio/beacon, \
/obj/item/shovel,/obj/item/ammo_magazine,/obj/item/gun)
@@ -334,7 +334,7 @@
icon_state = "rig0_pilot"
item_state = "pilot_helm"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_helm", SLOT_ID_LEFT_HAND = "atmos_helm")
- armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 15, bio = 100, rad = 50)
+ armor_type = /datum/armor/exploration/space/pilot
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
light_overlay = "helmet_light_dual"
camera_networks = list(NETWORK_EXPLO_HELMETS)
@@ -344,7 +344,7 @@
icon_state = "rig-pilot"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_voidsuit", SLOT_ID_LEFT_HAND = "atmos_voidsuit")
name = "pilot voidsuit"
- armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 15, bio = 100, rad = 50)
+ armor_type = /datum/armor/exploration/space/pilot
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/toolbox,/obj/item/storage/briefcase/inflatable)
@@ -362,13 +362,13 @@
desc = "Shiny blue helmet, complete with far-too-big golden visor. It probably doesn't protects from bright flashes."
name = "Facility Director voidsuit helmet"
icon_state = "capvoid"
- armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50)
+ armor_type = /datum/armor/security/captain
/obj/item/clothing/suit/space/void/captain
desc = "Sleek, blue and gold suit, fitted with spaceproofing and protective inserts. Fits like an oversized, shiny glove."
name = "Facility Director voidsuit"
icon_state = "capsuit_void"
- armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50)
+ armor_type = /datum/armor/security/captain
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun)
slowdown = 1.5
@@ -377,13 +377,13 @@
desc = "A customized security voidsuit helmet. Has additional composite armor."
name = "head of security protosuit helmet"
icon_state = "hosproto"
- armor = list(melee = 60, bullet = 35, laser = 35,energy = 15, bomb = 50, bio = 100, rad = 10)
+ armor_type = /datum/armor/security/hos/space
/obj/item/clothing/suit/space/void/headofsecurity
desc = "A customized security voidsuit. Has additional composite armor."
name = "head of security protosuit"
icon_state = "hosproto_void"
- armor = list(melee = 60, bullet = 35, laser = 35,energy = 15, bomb = 50, bio = 100, rad = 50)
+ armor_type = /datum/armor/security/hos/space
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun)
slowdown = 1.5
@@ -393,7 +393,7 @@
desc = "A voidsuit helmet bearing the icon of the PMD. Much like the 'MAW' system, this shields from memetic effects."
icon_state = "para_ert_void"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_helm", SLOT_ID_LEFT_HAND = "sec_helm")
- armor = list(melee = 70, bullet = 20, laser = 30, energy = 50, bomb = 35, bio = 100, rad = 10)
+ armor_type = /datum/armor/centcom/ert/paracausal
siemens_coefficient = 0.7
light_overlay = "helmet_light_dual" //explorer_light
flash_protection = FLASH_PROTECTION_MAJOR
@@ -404,7 +404,7 @@
desc = "A spaceproof suit covered in foreign spells and magical protection, meant to defend a trained wearer in more than one way."
icon_state = "para_ert_void"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuit", SLOT_ID_LEFT_HAND = "sec_voidsuit")
- armor = list(melee = 70, bullet = 20, laser = 30, energy = 50, bomb = 35, bio = 100, rad = 10)
+ armor_type = /datum/armor/centcom/ert/paracausal
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton,/obj/item/ammo_magazine,/obj/item/nullrod)
siemens_coefficient = 0.7
var/anti_magic = TRUE
diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm
index 1829bafd97a..d655cb6f261 100644
--- a/code/modules/clothing/spacesuits/void/void.dm
+++ b/code/modules/clothing/spacesuits/void/void.dm
@@ -5,7 +5,7 @@
icon_state = "void"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate", SLOT_ID_LEFT_HAND = "syndicate")
heat_protection = HEAD
- armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20)
+ armor_type = /datum/armor/general/space/armored
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 10 * ONE_ATMOSPHERE
@@ -38,7 +38,7 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "space_suit_syndicate", SLOT_ID_LEFT_HAND = "space_suit_syndicate")
desc = "A high-tech dark red space suit. Used for AI satellite maintenance."
slowdown = 1
- armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20)
+ armor_type = /datum/armor/general/space/armored
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
diff --git a/code/modules/clothing/spacesuits/void/void_vr.dm b/code/modules/clothing/spacesuits/void/void_vr.dm
index 48b9d2ef7d2..138b0bcc05d 100644
--- a/code/modules/clothing/spacesuits/void/void_vr.dm
+++ b/code/modules/clothing/spacesuits/void/void_vr.dm
@@ -113,7 +113,7 @@
but is equipped with sensors that will automatically deploy the integral helmet to protect the wearer."
icon_state = "autoloksuit"
item_state = "autoloksuit"
- armor = list(melee = 15, bullet = 5, laser = 5,energy = 5, bomb = 5, bio = 100, rad = 80)
+ armor_type = /datum/armor/autolok/space
slowdown = 0.5
siemens_coefficient = 1
species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX) //this thing can autoadapt
diff --git a/code/modules/clothing/spacesuits/void/wizard.dm b/code/modules/clothing/spacesuits/void/wizard.dm
index ff97649b082..5072351338b 100644
--- a/code/modules/clothing/spacesuits/void/wizard.dm
+++ b/code/modules/clothing/spacesuits/void/wizard.dm
@@ -5,7 +5,7 @@
icon_state = "rig0-wiz"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "wiz_helm", SLOT_ID_LEFT_HAND = "wiz_helm")
unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles!
- armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60)
+ armor_type = /datum/armor/wizard
siemens_coefficient = 0.7
sprite_sheets_refit = null
sprite_sheets_obj = null
@@ -19,7 +19,7 @@
slowdown = 1
w_class = ITEMSIZE_NORMAL
unacidable = 1
- armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60)
+ armor_type = /datum/armor/wizard
siemens_coefficient = 0.7
sprite_sheets_refit = null
sprite_sheets_obj = null
@@ -31,7 +31,7 @@
desc = "A bulky helmet that radiates ravenous magical energies."
icon_state = "knight_berserker"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_helm", SLOT_ID_LEFT_HAND = "syndie_helm")
- armor = list(melee = 70, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60)
+ armor_type = /datum/armor/wizard/beserk
light_overlay = "bk_overlay"
/obj/item/clothing/suit/space/void/wizard/berserk_knight
@@ -39,4 +39,4 @@
desc = "A bloodsoaked suit that emits a nauseating aura of hatred."
icon_state = "knight_berserker"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_voidsuit", SLOT_ID_LEFT_HAND = "syndie_voidsuit")
- armor = list(melee = 70, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60)
+ armor_type = /datum/armor/wizard/beserk
diff --git a/code/modules/clothing/spacesuits/void/zaddat.dm b/code/modules/clothing/spacesuits/void/zaddat.dm
index 6f23239ecc8..61456871d7a 100644
--- a/code/modules/clothing/spacesuits/void/zaddat.dm
+++ b/code/modules/clothing/spacesuits/void/zaddat.dm
@@ -6,7 +6,7 @@
heat_protection = HEAD
body_cover_flags = HEAD|FACE|EYES
slowdown = 0.5
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100) //hey look! some rad protection!
+ armor_type = /datum/armor/zaddat
siemens_coefficient = 1
species_restricted = list(SPECIES_ZADDAT, SPECIES_PROMETHEAN) //on request from maintainer
@@ -15,7 +15,7 @@
name = "\improper Hegemony Shroud"
desc = "A Hegemony environment suit, still favored by the Spacer Zaddat because of its durability and ease of manufacture."
slowdown = 1
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100)
+ armor_type = /datum/armor/zaddat
siemens_coefficient = 1
allowed = list(/obj/item/flashlight,/obj/item/tank)
icon_state = "zaddat_hegemony"
diff --git a/code/modules/clothing/suits/_suit.dm b/code/modules/clothing/suits/_suit.dm
index 7e58f60fa73..68aa03f818a 100644
--- a/code/modules/clothing/suits/_suit.dm
+++ b/code/modules/clothing/suits/_suit.dm
@@ -6,7 +6,7 @@
var/fire_resist = T0C+100
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
allowed = list(/obj/item/tank/emergency/oxygen)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
slot_flags = SLOT_OCLOTHING
var/blood_overlay_type = "suit"
siemens_coefficient = 0.9
diff --git a/code/modules/clothing/suits/aliens/teshari.dm b/code/modules/clothing/suits/aliens/teshari.dm
index eb1cae5eaf8..3018e201623 100644
--- a/code/modules/clothing/suits/aliens/teshari.dm
+++ b/code/modules/clothing/suits/aliens/teshari.dm
@@ -323,7 +323,7 @@
inv_hide_flags = HIDEHOLSTER|HIDETIE
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/teshari/hood_cloak
action_button_name = "Toggle Cloak Hood"
hoodtype = /obj/item/clothing/head/tesh_hood
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit)
diff --git a/code/modules/clothing/suits/aliens/vox.dm b/code/modules/clothing/suits/aliens/vox.dm
index 8e3a933657b..ba573981770 100644
--- a/code/modules/clothing/suits/aliens/vox.dm
+++ b/code/modules/clothing/suits/aliens/vox.dm
@@ -2,7 +2,7 @@
name = "rusted metal armor"
desc = "A hodgepodge of various pieces of metal scrapped together into a rudimentary vox-shaped piece of armor."
allowed = list(/obj/item/gun, /obj/item/tank)
- armor = list(melee = 60, bullet = 30, laser = 30,energy = 5, bomb = 40, bio = 0, rad = 0) //Higher melee armor versus lower everything else.
+ armor_type = /datum/armor/vox/scrap
icon_state = "vox-scrap"
icon_state = "vox-scrap"
body_cover_flags = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 72b24c254a0..746c38b3ce0 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -37,7 +37,7 @@
desc = "An armored vest that protects against some damage."
icon_state = "armor"
blood_overlay_type = "armor"
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/medium
/obj/item/clothing/suit/armor/vest/alt
name = "security armor"
@@ -56,7 +56,7 @@
desc = "A vest with heavy padding to protect against melee attacks."
icon_state = "riot"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
- armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/special/riot
siemens_coefficient = 0.5
/obj/item/clothing/suit/armor/riot/alt
@@ -70,7 +70,7 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
blood_overlay_type = "armor"
slowdown = 0.5
- armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/special/ballistic
siemens_coefficient = 0.7
/obj/item/clothing/suit/armor/bulletproof/alt
@@ -84,12 +84,12 @@
icon_state = "armor_reflec"
blood_overlay_type = "armor"
slowdown = 0.5
- armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/special/ablative
siemens_coefficient = 0.1
/obj/item/clothing/suit/armor/laserproof/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
- if(istype(damage_source, /obj/item/projectile/energy) || istype(damage_source, /obj/item/projectile/beam))
- var/obj/item/projectile/P = damage_source
+ if(istype(damage_source, /obj/projectile/energy) || istype(damage_source, /obj/projectile/beam))
+ var/obj/projectile/P = damage_source
if(P.reflected) // Can't reflect twice
return ..()
@@ -117,7 +117,7 @@
icon_state = "combat"
blood_overlay_type = "armor"
slowdown = 0.5
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/high
siemens_coefficient = 0.6
/obj/item/clothing/suit/armor/tactical
@@ -128,7 +128,7 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
inv_hide_flags = HIDETIE|HIDEHOLSTER
slowdown = 1
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/swat
siemens_coefficient = 0.7
/obj/item/clothing/suit/armor/swat
@@ -143,7 +143,7 @@
allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/tank/emergency/oxygen,/obj/item/clothing/head/helmet)
slowdown = 1
w_class = ITEMSIZE_HUGE
- armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 100)
+ armor_type = /datum/armor/centcom/deathsquad
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
@@ -161,7 +161,6 @@
inv_hide_flags = 0
body_cover_flags = UPPER_TORSO|ARMS
-
/obj/item/clothing/suit/armor/det_suit
name = "armor"
desc = "An armored vest with a detective's badge on it."
@@ -169,14 +168,14 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
blood_overlay_type = "armor"
body_cover_flags = UPPER_TORSO|LOWER_TORSO
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/medium
/obj/item/clothing/suit/armor/caution
name = "improvised armor (caution sign)"
desc = "They used to beat you for pointing at the sign. Now, vengeance has come. WARNING: This is just a sign with straps attached to anchor it. Vengeance not guaranteed."
icon_state = "caution"
blood_overlay_type = "armor"
- armor = list(melee = 5, bullet = 1, laser = 5, energy = 5, bomb = 1, bio = 50, rad = 0)
+ armor = /datum/armor/none
//Reactive armor
//When the wearer gets hit, this armor will teleport the user a short distance away (to safety or to more danger, no one knows. That's the fun of it!)
@@ -187,8 +186,7 @@
icon_state = "reactiveoff"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor_reflec_old", SLOT_ID_LEFT_HAND = "armor_reflec_old")
blood_overlay_type = "armor"
- slowdown = 1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
/obj/item/clothing/suit/armor/reactive/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
if(prob(50))
@@ -242,7 +240,7 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
slowdown = -1
body_cover_flags = UPPER_TORSO|LOWER_TORSO
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 0, rad = 40)
+ armor_type = /datum/armor/alien/medium
siemens_coefficient = 0.4
valid_accessory_slots = null
var/block_chance = 20
@@ -254,7 +252,7 @@
icon_state = "alien_tank"
slowdown = 0
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- armor = list(melee = 70, bullet = 70, laser = 70, energy = 70, bomb = 70, bio = 0, rad = 40)
+ armor_type = /datum/armor/alien/heavy
block_chance = 40
/obj/item/clothing/suit/armor/alien/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
@@ -270,7 +268,7 @@
icon_state = "ertarmor_cmd"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 20, bio = 0, rad = 0)
+ armor_type = /datum/armor/centcom/ert
valid_accessory_slots = null
//Commander
@@ -302,7 +300,7 @@
desc = "A standard kevlar vest with webbing attached."
icon_state = "webvest"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/medium
allowed = list(/obj/item/gun,/obj/item/reagent_containers/spray/pepper,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/flashlight/maglight,/obj/item/clothing/head/helmet)
body_cover_flags = UPPER_TORSO|LOWER_TORSO
@@ -395,7 +393,7 @@
name = "\improper Orion Confederation armored vest"
desc = "A synthetic armor vest. This one is marked with the crest of the Orion Confederation."
icon_state = "solvest"
- armor = list(melee = 40, bullet = 40, laser = 40, energy = 25, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/medium
/obj/item/clothing/suit/storage/vest/oricon/heavy
name = "\improper Orion Confederation heavy armored vest"
@@ -417,14 +415,13 @@
desc = "A heavy armored vest in a fetching tan. It is surprisingly flexible and light, even with the extra webbing and advanced ceramic plates."
icon_state = "tacwebvest"
item_state = "tacwebvest"
- armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/tactical
/obj/item/clothing/suit/storage/vest/heavy/flexitac //a reskin of the above to have a matching armor set
name = "tactical light vest"
desc = "An armored vest made from advanced flexible ceramic plates. It's surprisingly mobile, if a little unfashionable."
icon_state = "flexitac"
item_state = "flexitac"
- armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0)
cold_protection = UPPER_TORSO|LOWER_TORSO
min_cold_protection_temperature = T0C - 20
slowdown = 0.3
@@ -449,7 +446,7 @@
desc = "A heavy kevlar vest with webbing attached."
icon_state = "webvest"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
- armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/high
slowdown = 0.5
/obj/item/clothing/suit/storage/vest/heavy/officer
@@ -490,14 +487,14 @@
desc = "A high-quality heavy kevlar vest in a fetching tan. The vest is surprisingly flexible, and possibly made of an advanced material."
icon_state = "mercwebvest"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
+ armor_type = /datum/armor/merc/heavy
slowdown = 0
/obj/item/clothing/suit/storage/vest/capcarapace
name = "captain's carapace"
desc = "A fireproof, armored chestpiece reinforced with ceramic plates and plasteel pauldrons to provide additional protection whilst still offering maximum mobility and flexibility. Issued only to the station's finest, although it does chafe your nipples."
icon_state = "capcarapace"
- armor = list(melee = 50, bullet = 40, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/captain
//All of the armor below is mostly unused
@@ -519,7 +516,7 @@
desc = "An old military-grade suit of armor. Incredibly robust against brute force damage! However, it offers little protection from energy-based weapons, which, combined with its bulk, makes it woefully obsolete."
icon_state = "heavy"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
- armor = list(melee = 90, bullet = 80, laser = 10, energy = 10, bomb = 80, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/special/bulky_kinetic
w_class = ITEMSIZE_HUGE // Very bulky, very heavy.
gas_transfer_coefficient = 0.90
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
@@ -530,7 +527,7 @@
/obj/item/clothing/suit/armor/tdome
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
+ armor_type = /datum/armor/thunderdome
/obj/item/clothing/suit/armor/tdome/red
name = "Thunderdome suit (red)"
@@ -546,10 +543,10 @@
/obj/item/clothing/suit/armor/samurai
name = "karuta-gane"
- desc = "An utterly ancient suit of Earth armor, reverently maintained and restored over the years. Designed for foot combat in an era where melee combat was the predominant focus, this suit offers no protection against ballistics or energy attacks, although its lacquered exterior may occasionally deflect laser bolts."
+ desc = "An utterly ancient suit of Earth armor, reverently maintained and restored over the years. Designed for foot combat in an era where melee combat was the predominant focus, this suit offers no protection against energy attacks, although its lacquered exterior may occasionally deflect laser bolts."
icon_state = "samurai"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "leather_coat", SLOT_ID_LEFT_HAND = "leather_coat")
- armor = list(melee = 100, bullet = 00, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/general/samurai
w_class = ITEMSIZE_LARGE
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
inv_hide_flags = HIDETIE|HIDEHOLSTER
@@ -704,7 +701,7 @@
icon_state = "para_ert_armor"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 20, bio = 0, rad = 0)
+ armor_type = /datum/armor/centcom/ert/paracausal
action_button_name = "Enable Armor Sigils"
var/anti_magic = FALSE
@@ -733,7 +730,7 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
blood_overlay_type = "armor"
body_cover_flags = UPPER_TORSO|LOWER_TORSO
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/centcom/ert/paracausal
action_button_name = "Enable Coat Sigils"
valid_accessory_slots = null
@@ -742,7 +739,7 @@
desc = "An old military-grade suit of armor. Incredibly robust against brute force damage! However, it offers little protection from energy-based weapons, which, combined with its bulk, makes it woefully obsolete."
icon_state = "heavy"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
- armor = list(melee = 90, bullet = 80, laser = 10, energy = 10, bomb = 80, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/special/bulky_kinetic
w_class = ITEMSIZE_HUGE // massively bulky item
gas_transfer_coefficient = 0.90
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
@@ -771,13 +768,6 @@
to_chat(H,"You need to have a wolf-taur half to wear this.")
return FALSE
-// HoS armor improved to be slightly better than normal security stuff.
-/obj/item/clothing/suit/storage/vest/hoscoat
- armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 0, rad = 0)
-
-/obj/item/clothing/suit/storage/vest/hos
- armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 0, rad = 0)
-
/obj/item/clothing/suit/storage/vest/hoscoat/jensen
name = "armored trenchcoat"
desc = "A trenchcoat augmented with a special alloy for some protection and style."
@@ -821,7 +811,7 @@
name = "bone armor"
desc = "A tribal armor plate, crafted from animal bone."
icon_state = "bonearmor"
- armor = list("melee" = 35, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 10)
+ armor_type = /datum/armor/lavaland/bone
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
//Strange Plate Armor
@@ -829,13 +819,13 @@
name = "bulky imperial plate"
desc = "Often sold in tandem with KTL helmets, this sturdy plate armor offers impressive protection against bullets. These suits are believed to originate from an isolationist human society on the Eastern Rim."
icon_state = "ironplate"
- armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/imperial/plate
/obj/item/clothing/suit/armor/bulletproof/kettle/adamant
name = "adamant imperial plate"
desc = "Much more rare than standard Imperial plate, adamant armor protects against lasers and radiation as well as bullets. These suits are believed to originate from an isolationist human society on the Eastern Rim."
icon_state = "aplate"
- armor = list(melee = 10, bullet = 60, laser = 40, energy = 40, bomb = 0, bio = 0, rad = 60)
+ armor_type = /datum/armor/imperial/adamant
//Plate Harness Armor. Has no intrinsic protective value, but serves as a lightweight anchor for limb plating.
/obj/item/clothing/suit/armor/plate_harness
@@ -860,13 +850,13 @@
/obj/item/clothing/suit/storage/vest/tactical/pirate
name = "surplus tactical vest"
desc = "A surplus tactical vest. Although its aging webbing remains intact, its original armor plating has long since been replaced."
- armor = list(melee = 20, bullet = 20, laser = 30, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/pirate/light
/obj/item/clothing/suit/armor/tactical/pirate
name = "defaced tactical armor"
desc = "This tactical armor has been painted over and repaired multiple times. Accumulated battle damage has degraded its protective capabilities significantly."
icon_state = "swatarmor_pirate"
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/pirate/light
siemens_coefficient = 0.7
//Ashlander armor
@@ -875,7 +865,7 @@
desc = "This worn armor is fashioned out of bronze plates connected by dried sinew. The hammered plates are scuffed by ash and soot."
icon = 'icons/clothing/suit/ashlander.dmi'
icon_state = "lamellar"
- armor = list(melee = 20, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/lavaland/ashlander
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
//More Warhammer Fun
@@ -884,5 +874,5 @@
desc = "This high tech armor serves to protect the user from ranged attacks, rather than melee."
icon = 'icons/clothing/suit/armor/utilitarian.dmi'
icon_state = "tau"
- armor = list(melee = 15, bullet = 40, laser = 60, energy = 30, bomb = 20, bio = 0, rad = 0)
+ armor_type = /datum/armor/general/utilitarian_military
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index 4155e8c2956..7a1ada49a0e 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -4,7 +4,7 @@
icon_state = "bio"
desc = "A hood that protects the head and face from biological comtaminants."
permeability_coefficient = 0.01
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
+ armor_type = /datum/armor/general/biosuit
inv_hide_flags = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR
body_cover_flags = HEAD|FACE|EYES
siemens_coefficient = 0.9
@@ -21,7 +21,7 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET
slowdown = 1.0
allowed = list(/obj/item/tank/emergency/oxygen,/obj/item/pen,/obj/item/flashlight/pen)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
+ armor_type = /datum/armor/general/biosuit
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
siemens_coefficient = 0.9
atom_flags = PHORONGUARD
@@ -98,7 +98,7 @@
icon_state = "beekeeper"
desc = "A wide brimmed hat with a mesh screen that protects the face from stinging insects."
permeability_coefficient = 0.01
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 0)
+ armor_type = /datum/armor/general/beekeeper
inv_hide_flags = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR
body_cover_flags = HEAD|FACE|EYES
siemens_coefficient = 0.9
@@ -115,7 +115,7 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET
slowdown = 1.0
allowed = list(/obj/item/tank/emergency/oxygen,/obj/item/pen,/obj/item/flashlight/pen)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
+ armor_type = /datum/armor/general/beekeeper
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
siemens_coefficient = 0.9
atom_flags = PHORONGUARD
diff --git a/code/modules/clothing/suits/hooded.dm b/code/modules/clothing/suits/hooded.dm
index f7107be9221..8d944e547e0 100644
--- a/code/modules/clothing/suits/hooded.dm
+++ b/code/modules/clothing/suits/hooded.dm
@@ -62,7 +62,7 @@
hood.atom_flags |= PHORONGUARD
else
hood.atom_flags &= ~PHORONGUARD
- hood.armor = armor?.Copy()
+ hood.set_armor(armor)
hood.atom_colours = atom_colours?.Copy()
hood.update_atom_colour()
// equip after armor / color changes
@@ -134,7 +134,7 @@
inv_hide_flags = HIDEHOLSTER
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/civilian/coat
hoodtype = /obj/item/clothing/head/hood/winter
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
/obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit)
@@ -143,7 +143,7 @@
name = "centcom winter coat"
icon_state = "coatcentcom"
item_state = "coatcentcom"
- armor = list("melee" = 40, "bullet" = 45, "laser" = 45, "energy" = 35, "bomb" = 40, "bio" = 25, "rad" = 25)
+ armor_type = /datum/armor/centcom/coat
hoodtype = /obj/item/clothing/head/hood/winter/centcom
/obj/item/clothing/suit/storage/hooded/wintercoat/olive
@@ -156,7 +156,7 @@
desc = "A heavy jacket made from the most expensive animal furs on the market, hand skinned by the finest of hunters, sewed with the finest of jewels, truly a coat befitting the Director."
icon_state = "coatcaptain"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatcaptain", SLOT_ID_LEFT_HAND = "coatcaptain")
- armor = list(melee = 20, bullet = 15, laser = 20, energy = 10, bomb = 15, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/low
hoodtype = /obj/item/clothing/head/hood/winter/captain
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
/obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/gun/energy,
@@ -167,7 +167,7 @@
name = "head of personnel's winter coat"
desc = "A cozy winter coat, covered in thick fur. The breast features a proud yellow chevron, reminding everyone that you're the second banana."
icon_state = "coathop"
- armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 5, "bio" = 5, "rad" = 0)
+ armor_type = /datum/armor/security/low
hoodtype = /obj/item/clothing/head/hood/winter/hop
/obj/item/clothing/suit/storage/hooded/wintercoat/security
@@ -175,7 +175,7 @@
desc = "A heavy jacket made from greyshirt hide, there seems to be a sewed in holster, as well as a thin weave of protection against most damage.'"
icon_state = "coatsecurity"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatsecurity", SLOT_ID_LEFT_HAND = "coatsecurity")
- armor = list(melee = 25, bullet = 20, laser = 20, energy = 15, bomb = 20, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/low
hoodtype = /obj/item/clothing/head/hood/winter/security
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
/obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/gun/energy,
@@ -194,7 +194,7 @@
desc = "A heavy jacket made from 'synthetic' animal furs, there's a thick weave of sterile material, good for virus outbreaks!"
icon_state = "coatmedical"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatmedical", SLOT_ID_LEFT_HAND = "coatmedical")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0)
+ armor_type = /datum/armor/medical/coat
hoodtype = /obj/item/clothing/head/hood/winter/medical
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
/obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/analyzer,/obj/item/stack/medical,
@@ -237,7 +237,7 @@
desc = "A heavy jacket made from 'synthetic' animal furs, a small tag says 'Bomb Proof! (not fully bomb proof)'."
icon_state = "coatscience"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatscience", SLOT_ID_LEFT_HAND = "coatscience")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/science/coat
hoodtype = /obj/item/clothing/head/hood/winter/science
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
/obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/analyzer,/obj/item/stack/medical,
@@ -255,7 +255,6 @@
name = "research director's winter coat"
desc = "A thick arctic winter coat with an outdated atomic model instead of a plastic zipper tab. Most in the know are heavily aware that Bohr's model of the atom was outdated by the time of the 1930s when the Heisenbergian and Schrodinger models were generally accepted for true. Nevertheless, we still see its use in anachronism, roleplaying, and, in this case, as a zipper tab. At least it should keep you warm on your ivory pillar."
icon_state = "coatrd"
- armor = list("melee" = 0, "bullet" = 0, "laser" = 5,"energy" = 0, "bomb" = 15, "bio" = 5, "rad" = 5)
hoodtype = /obj/item/clothing/head/hood/winter/rd
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering
@@ -263,7 +262,7 @@
desc = "A heavy jacket made from 'synthetic' animal furs, there seems to be a thin weave of lead on the inside."
icon_state = "coatengineer"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatengineer", SLOT_ID_LEFT_HAND = "coatengineer")
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20)
+ armor_type = /datum/armor/engineering/coat
hoodtype = /obj/item/clothing/head/hood/winter/engineering
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
/obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/analyzer, /obj/item/flashlight,
@@ -282,7 +281,6 @@
name = "chief engineer's winter coat"
desc = "A white winter coat with reflective green and yellow stripes. Stuffed with asbestos, treated with fire retardant PBDE, lined with a micro thin sheet of lead foil and snugly fitted to your body's measurements. This baby's ready to save you from anything except the thyroid cancer and systemic fibrosis you'll get from wearing it. The zipper tab is a tiny golden wrench."
icon_state = "coatce"
- armor = list("melee" = 0, "bullet" = 0, "laser" = 5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 30)
hoodtype = /obj/item/clothing/head/hood/winter/ce
/obj/item/clothing/suit/storage/hooded/wintercoat/hydro
@@ -307,7 +305,7 @@
icon_state = "coatminer"
desc = "A heavy jacket made from real animal furs, the miner who made this must have been through the Underdark."
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatminer", SLOT_ID_LEFT_HAND = "coatminer")
- armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/cargo/mining/coat
hoodtype = /obj/item/clothing/head/hood/winter/miner
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches,
/obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/tank, /obj/item/radio, /obj/item/pickaxe, /obj/item/storage/bag/ore)
@@ -354,7 +352,7 @@
name = "ratvarian winter coat"
desc = "A brass-plated button up winter coat. Instead of a zipper tab, it has a brass cog with a tiny red gemstone inset."
icon_state = "coatratvar"
- armor = list("melee" = 40, "bullet" = 45, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 70, "rad" = 40)
+ armor_type = /datum/armor/cult/coat
siemens_coefficient = 0.5
hoodtype = /obj/item/clothing/head/hood/winter/ratvar
var/real = TRUE
@@ -384,7 +382,7 @@
name = "narsian winter coat"
desc = "A somber button-up in tones of grey entropy and a wicked crimson zipper. When pulled all the way up, the zipper looks like a bloody gash. The zipper pull looks like a single drop of blood."
icon_state = "coatnarsie"
- armor = list("melee" = 40, "bullet" = 45, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 70, "rad" = 40)
+ armor_type = /datum/armor/cult/coat
siemens_coefficient = 0.5
hoodtype = /obj/item/clothing/head/hood/winter/narsie
var/real = TRUE
@@ -408,7 +406,7 @@
desc = "A brass-plated button up winter coat. Instead of a zipper tab, it has a brass cog with a tiny red piece of plastic as an inset."
icon_state = "coatratvar"
item_state = "coatratvar"
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0)
+ armor_type = /datum/armor/none
real = FALSE
/obj/item/clothing/suit/storage/hooded/wintercoat/narsie/fake
@@ -416,14 +414,14 @@
desc = "A dusty button up winter coat in the tones of oblivion and ash. The zipper pull looks like a single drop of blood."
icon_state = "coatnarsie"
item_state = "coatnarsie"
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0)
+ armor_type = /datum/armor/none
real = FALSE
/obj/item/clothing/suit/storage/hooded/wintercoat/durathread
name = "durathread winter coat"
desc = "The one coat to rule them all. Extremely durable while providing the utmost comfort."
icon_state = "coatdurathread"
- armor = list("melee" = 15, "bullet" = 8, "laser" = 25, "energy" = 5, "bomb" = 12, "bio" = 0, "rad" = 0)
+ armor_type = /datum/armor/civilian/coat/durathread
hoodtype = /obj/item/clothing/head/hood/winter/durathread
//Hazardous Softsuits
@@ -439,7 +437,7 @@
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
hoodtype = /obj/item/clothing/head/hood/explorer
siemens_coefficient = 0.9
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 35, bio = 75, rad = 35) // Inferior to sec vests in bullet/laser but better for environmental protection.
+ armor_type = /datum/armor/exploration/soft
allowed = list(
/obj/item/flashlight,
/obj/item/gun,
@@ -465,7 +463,7 @@
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
hoodtype = /obj/item/clothing/head/hood/miner
siemens_coefficient = 0.9
- armor = list(melee = 50, bullet = 5, laser = 10, energy = 0, bomb = 55, bio = 50, rad = 65)
+ armor_type = /datum/armor/cargo/mining/soft
allowed = list(
/obj/item/flashlight,
/obj/item/material/knife,
@@ -491,7 +489,6 @@
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
hoodtype = /obj/item/clothing/head/hood/ronin
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
/obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/gun/energy,
/obj/item/gun/ballistic, /obj/item/ammo_magazine, /obj/item/melee/baton)
@@ -505,7 +502,6 @@
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
hoodtype = /obj/item/clothing/head/hood/runner
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
/obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/gun/energy,
/obj/item/gun/ballistic, /obj/item/ammo_magazine, /obj/item/melee/baton)
@@ -527,7 +523,7 @@
action_button_name = "Toggle Eldritch Hood"
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
hoodtype = /obj/item/clothing/head/hood/eldritch
- armor = list(melee = 20, bullet = 0, laser = 40, energy = 40, bomb = 20, bio = 30, rad = 20)
+ armor_type = /datum/armor/lavaland/eldritch
siemens_coefficient = 0.9
allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
/obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/material/knife)
@@ -542,7 +538,7 @@
/obj/item/material/knife/tacknife/combatknife/bone, /obj/item/material/knife/tacknife/survival/bone, /obj/item/material/knife/tacknife/survival/bone, /obj/item/melee/ashlander,
/obj/item/gun/ballistic/musket/pistol
)
- armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot
+ armor_type = /datum/armor/lavaland/goliath
hoodtype = /obj/item/clothing/head/hood/goliath
body_cover_flags = UPPER_TORSO|ARMS|LEGS
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -552,7 +548,7 @@
icon_state = "dragon"
desc = "A suit of armour fashioned from the remains of an ash drake."
allowed = list(/obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/mining_scanner/advanced, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/material/twohanded/spear)
- armor = list("melee" = 70, "bullet" = 20, "laser" = 35, "energy" = 25, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
+ armor_type = /datum/armor/lavaland/drake
hoodtype = /obj/item/clothing/head/hood/drake
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
@@ -601,7 +597,6 @@
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
hoodtype = /obj/item/clothing/head/hood/mercy
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 40, rad = 20)
//Donator jacket.
/obj/item/clothing/suit/storage/hooded/pariah
@@ -613,4 +608,3 @@
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
hoodtype = /obj/item/clothing/head/hood/pariah
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 1557d01c8df..9e41398c626 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -118,7 +118,7 @@
allowed = list(/obj/item/gun/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight, /obj/item/gun/energy, /obj/item/gun/ballistic, /obj/item/ammo_magazine,
/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/handcuffs, /obj/item/storage/fancy/cigarettes, /obj/item/flame/lighter,
/obj/item/tape_recorder, /obj/item/uv_light)
- armor = list(melee = 10, bullet = 10, laser = 15, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/detective
/obj/item/clothing/suit/storage/det_trench/grey
name = "grey trenchcoat"
@@ -135,7 +135,7 @@
allowed = list(/obj/item/gun/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight, /obj/item/gun/energy, /obj/item/gun/ballistic, /obj/item/ammo_magazine,
/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/handcuffs, /obj/item/storage/fancy/cigarettes, /obj/item/flame/lighter,
/obj/item/tape_recorder, /obj/item/uv_light)
- armor = list(melee = 10, bullet = 10, laser = 15, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/detective
/obj/item/clothing/suit/storage/forensics/red
name = "red jacket"
@@ -265,7 +265,7 @@
icon_state = "coatsar"
item_icons = list(SLOT_ID_SUIT= 'icons/map_assets/southern_cross/mob/sc_suits.dmi')
icon = 'icons/map_assets/southern_cross/obj/sc_suits.dmi'
- armor = list(melee = 15, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 5)
+ armor_type = /datum/armor/medical/coat/field_medic
valid_accessory_slots = (ACCESSORY_SLOT_INSIGNIA)
allowed = list (/obj/item/gun,/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
/obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/analyzer,/obj/item/stack/medical,
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index 979bd443178..e0a79012ff3 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -8,7 +8,7 @@
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
allowed = list(/obj/item/analyzer,/obj/item/stack/medical,/obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,/obj/item/healthanalyzer,/obj/item/flashlight/pen,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle,/obj/item/paper)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0)
+ armor_type = /datum/armor/suit/labcoat
/obj/item/clothing/suit/storage/toggle/labcoat/green
name = "green labcoat"
@@ -69,14 +69,13 @@
desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder."
icon_state = "labcoat_vir"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "virologist_labcoat", SLOT_ID_LEFT_HAND = "virologist_labcoat")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 0)
+ armor_type = /datum/armor/suit/labcoat/viro
/obj/item/clothing/suit/storage/toggle/labcoat/virologist/classic
name = "Virologist labcoat (Classic)"
desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder. It looks old-fashioned."
icon_state = "labcoat_virclassic"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "virologist_labcoat", SLOT_ID_LEFT_HAND = "virologist_labcoat")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 0)
/obj/item/clothing/suit/storage/toggle/labcoat/science
name = "Scientist labcoat"
diff --git a/code/modules/clothing/suits/medieval_armor.dm b/code/modules/clothing/suits/medieval_armor.dm
index bc48e2a4327..87e188ceb33 100644
--- a/code/modules/clothing/suits/medieval_armor.dm
+++ b/code/modules/clothing/suits/medieval_armor.dm
@@ -4,7 +4,7 @@
desc = "A classic metal helmet, effective at stopping melee attacks."
icon = 'icons/clothing/suit/armor/medieval/knight.dmi'
icon_state = "knighthelm"
- armor = list(melee = 40, bullet = 5, laser = 5, energy = 5, bomb = 5, bio = 0, rad = 0)
+ armor_type = /datum/armor/general/medieval
body_cover_flags = HEAD|FACE|EYES
inv_hide_flags = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
@@ -47,7 +47,7 @@
/obj/item/clothing/suit/armor/medieval
name = "plate armour"
desc = "A classic suit of plate armour, effective at stopping melee attacks."
- armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/general/medieval
icon = 'icons/clothing/suit/armor/medieval/knight.dmi'
icon_state = "knight"
slowdown = 1
@@ -76,7 +76,7 @@
/obj/item/clothing/suit/armor/medieval/hauberk
name = "hauberk"
desc = "A chainmail hauberk worn beneath a dark leather jerkin. Although it grants less protection, it provides greater mobility."
- armor = list(melee = 30, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/general/medieval/light
icon = 'icons/clothing/suit/armor/medieval/bastard.dmi'
icon_state = "bastard"
slowdown = 0
@@ -84,7 +84,7 @@
/obj/item/clothing/suit/armor/medieval/paladin
name = "elite paladin plate"
desc = "This armor is worn from years of use. A fusion of chainmail and plate, it serves to provide supreme mobility without sacrificing much protection."
- armor = list(melee = 40, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/general/medieval/mesh
icon = 'icons/clothing/suit/armor/medieval/paladin.dmi'
icon_state = "paladin"
slowdown = 0
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 1dde6f1791f..915092dde9f 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -1191,7 +1191,6 @@
inv_hide_flags = HIDEHOLSTER
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
allowed = list (/obj/item/gun/ballistic/sec/flash, /obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
/obj/item/clothing/suit/storage/snowsuit/command
diff --git a/code/modules/clothing/suits/oricon.dm b/code/modules/clothing/suits/oricon.dm
index 243356e8db4..399a6e98075 100644
--- a/code/modules/clothing/suits/oricon.dm
+++ b/code/modules/clothing/suits/oricon.dm
@@ -8,7 +8,7 @@
icon_state = "blackservice"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "suit_black", SLOT_ID_LEFT_HAND = "suit_black")
body_cover_flags = UPPER_TORSO|ARMS
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
siemens_coefficient = 0.9
inv_hide_flags = HIDEHOLSTER
allowed = list(/obj/item/tank/emergency/oxygen,/obj/item/flashlight,/obj/item/pen,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/analyzer,/obj/item/radio,/obj/item/barrier_tape_roll)
@@ -111,7 +111,7 @@
desc = "A uniform dress jacket, fancy."
icon_state = "greydress"
body_cover_flags = UPPER_TORSO|ARMS
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
siemens_coefficient = 0.9
allowed = list(/obj/item/tank/emergency/oxygen,/obj/item/flashlight,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/radio,/obj/item/pen)
@@ -267,7 +267,7 @@
name = "head of security's dress jacket"
desc = "A sleek, buttoned coat with gold trim. The fabric feels sturdy, could come in handy"
icon_state = "blackdress_com"
- armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/hos
/obj/item/clothing/suit/dress/expedition/command/cd
name = "Facility Director's dress jacket"
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index eaadbc39a28..5bd57769374 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -46,7 +46,7 @@
name = "bomb hood"
desc = "Use in case of bomb."
icon_state = "bombsuit"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/bomb
inv_hide_flags = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR
body_cover_flags = HEAD|FACE|EYES
siemens_coefficient = 0
@@ -59,7 +59,7 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
slowdown = 2
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/bomb
inv_hide_flags = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
heat_protection = UPPER_TORSO|LOWER_TORSO
max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -84,7 +84,7 @@
inv_hide_flags = BLOCKHAIR
clothing_flags = THICKMATERIAL
body_cover_flags = HEAD|FACE|EYES
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
+ armor_type = /datum/armor/general/radsuit
/obj/item/clothing/suit/radiation
name = "Radiation suit"
@@ -96,6 +96,6 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET
allowed = list(/obj/item/flashlight,/obj/item/tank/emergency/oxygen,/obj/item/clothing/head/radiation,/obj/item/clothing/mask/gas)
slowdown = 1.5
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
+ armor_type = /datum/armor/general/radsuit
inv_hide_flags = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
clothing_flags = THICKMATERIAL
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 7d95b6b6f2c..9517ea3e72e 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -51,7 +51,7 @@
icon_state = "wizard"
gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE
permeability_coefficient = 0.01
- armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20)
+ armor_type = /datum/armor/wizard
allowed = list(/obj/item/teleportation_scroll)
inv_hide_flags = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
siemens_coefficient = 0.8
@@ -97,14 +97,14 @@
desc = "A rather dull, blue robe meant to mimick real wizard robes."
icon_state = "wizard-fake"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "wizard", SLOT_ID_LEFT_HAND = "wizard")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
siemens_coefficient = 1.0
/obj/item/clothing/head/wizard/marisa/fake
name = "Witch Hat"
desc = "Strange-looking hat-wear, makes you want to cast fireballs."
icon_state = "marisa"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
siemens_coefficient = 1.0
/obj/item/clothing/suit/wizrobe/marisa/fake
@@ -112,5 +112,5 @@
desc = "Magic is all about the spell power, ZE!"
icon_state = "marisa"
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
siemens_coefficient = 1.0
diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm
index dd3b30b5316..735bbed0388 100644
--- a/code/modules/clothing/under/_under.dm
+++ b/code/modules/clothing/under/_under.dm
@@ -6,7 +6,7 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
permeability_coefficient = 0.90
slot_flags = SLOT_ICLOTHING
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
equip_sound = 'sound/items/jumpsuit_equip.ogg'
w_class = ITEMSIZE_NORMAL
show_messages = 1
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index 1dafc5eedfc..3dff066ad7e 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -879,7 +879,7 @@
name = "bone talisman"
desc = "A Scori religious talisman. Some say the Buried Ones smile on those who wear it."
icon_state = "talisman"
- armor = list("melee" = 5, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25)
+ armor_type = /datum/armor/lavaland/trinket
slot = ACCESSORY_SLOT_TIE
/obj/item/clothing/accessory/disenchanted_talisman
@@ -892,11 +892,11 @@
name = "skull codpiece"
desc = "A skull shaped ornament, intended to protect the important things in life."
icon_state = "skull"
- armor = list("melee" = 5, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25)
+ armor_type = /datum/armor/lavaland/trinket
slot = ACCESSORY_SLOT_DECOR
/obj/item/clothing/accessory/skullcodpiece/fake
name = "false codpiece"
desc = "A plastic ornament, intended to protect the important things in life. It's not very good at it."
icon_state = "skull"
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ armor_type = /datum/armor/none
diff --git a/code/modules/clothing/under/accessories/armor.dm b/code/modules/clothing/under/accessories/armor.dm
index 326cbc783d1..b5ddcbb6f85 100644
--- a/code/modules/clothing/under/accessories/armor.dm
+++ b/code/modules/clothing/under/accessories/armor.dm
@@ -89,7 +89,7 @@
desc = "A basic armor plate made of steel-reinforced synthetic fibers. Attaches to a plate carrier."
icon_state = "armor_light"
body_cover_flags = UPPER_TORSO|LOWER_TORSO
- armor = list(melee = 30, bullet = 15, laser = 40, energy = 10, bomb = 25, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/low
slot = ACCESSORY_SLOT_ARMOR_C
/obj/item/clothing/accessory/armorplate/get_fibers()
@@ -99,34 +99,32 @@
name = "mesh armor plate"
desc = "A mesh armor plate made of steel-reinforced synthetic fibers, great for dealing with small blades. Attaches to a plate carrier."
icon_state = "armor_stab"
- armor = list(melee = 25, bullet = 5, laser = 20, energy = 10, bomb = 15, bio = 0, rad = 0)
- armorsoak = list(melee = 7, bullet = 5, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/medium
/obj/item/clothing/accessory/armor/armorplate/medium
name = "medium armor plate"
desc = "A plasteel-reinforced synthetic armor plate, providing good protection. Attaches to a plate carrier."
icon_state = "armor_medium"
- armor = list(melee = 40, bullet = 40, laser = 40, energy = 25, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/high
/obj/item/clothing/accessory/armor/armorplate/tactical
name = "tactical armor plate"
desc = "A medium armor plate with additional ablative coating. Attaches to a plate carrier."
icon_state = "armor_tactical"
- armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/tactical
/obj/item/clothing/accessory/armor/armorplate/merc
name = "heavy armor plate"
desc = "A ceramics-reinforced synthetic armor plate, providing state of of the art protection. Attaches to a plate carrier."
icon_state = "armor_merc"
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
+ armor_type = /datum/armor/merc/heavy
/obj/item/clothing/accessory/armor/armorplate/bulletproof
name = "ballistic armor plate"
desc = "A woven armor plate with additional plating, providing good protection against high-velocity trauma. Attaches to a plate carrier."
icon_state = "armor_ballistic"
slowdown = 0.6
- armor = list(melee = 10, bullet = 70, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
- armorsoak = list(melee = 0, bullet = 10, laser = 0, energy = 5, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ballistic
siemens_coefficient = 0.7
/obj/item/clothing/accessory/armor/armorplate/riot
@@ -134,8 +132,7 @@
desc = "A thick armor plate with additional padding, providing good protection against low-velocity trauma. Attaches to a plate carrier."
icon_state = "armor_riot"
slowdown = 0.6
- armor = list(melee = 70, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
- armorsoak = list(melee = 10, bullet = 0, laser = 0, energy = 5, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/riot
siemens_coefficient = 0.7
/obj/item/clothing/accessory/armor/armorplate/laserproof
@@ -143,13 +140,12 @@
desc = "A durasteel-scaled synthetic armor plate, providing good protection against lasers. Attaches to a plate carrier."
icon_state = "armor_ablative"
slowdown = 0.6
- armor = list(melee = 10, bullet = 10, laser = 70, energy = 50, bomb = 0, bio = 0, rad = 0)
- armorsoak = list(melee = 0, bullet = 0, laser = 10, energy = 15, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ablative
siemens_coefficient = 0.1
/obj/item/clothing/accessory/armor/armorplate/ablative/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
- if(istype(damage_source, /obj/item/projectile/energy) || istype(damage_source, /obj/item/projectile/beam))
- var/obj/item/projectile/P = damage_source
+ if(istype(damage_source, /obj/projectile/energy) || istype(damage_source, /obj/projectile/beam))
+ var/obj/projectile/P = damage_source
if(P.reflected)
return ..()
@@ -180,7 +176,7 @@
icon_state = "armguards"
gender = PLURAL
body_cover_flags = ARMS
- armor = list(melee = 40, bullet = 40, laser = 40, energy = 25, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/high
slot = ACCESSORY_SLOT_ARMOR_A
/obj/item/clothing/accessory/armor/armguards/blue
@@ -203,7 +199,7 @@
name = "heavy arm guards"
desc = "A pair of red-trimmed black arm pads reinforced with heavy armor plating. Attaches to a plate carrier."
icon_state = "armguards_merc"
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
+ armor_type = /datum/armor/merc/heavy
/obj/item/clothing/accessory/armor/armguards/laserproof
name = "ablative arm guards"
@@ -211,7 +207,7 @@
icon_state = "armguards_ablative"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
siemens_coefficient = 0.4 //This is worse than the other ablative pieces, to avoid this from becoming the poor warden's insulated gloves.
- armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ablative
/obj/item/clothing/accessory/armor/armguards/bulletproof
name = "bullet resistant arm guards"
@@ -219,7 +215,7 @@
icon_state = "armguards_ballistic"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
siemens_coefficient = 0.7
- armor = list(melee = 10, bullet = 80, laser = 10, energy = 50, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ballistic
/obj/item/clothing/accessory/armor/armguards/riot
name = "riot arm guards"
@@ -227,7 +223,7 @@
icon_state = "armguards_riot"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
siemens_coefficient = 0.5
- armor = list(melee = 80, bullet = 10, laser = 10, energy = 50, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/riot
//////////////
//Leg guards
@@ -239,7 +235,7 @@
icon_state = "legguards"
gender = PLURAL
body_cover_flags = LEGS
- armor = list(melee = 40, bullet = 40, laser = 40, energy = 25, bomb = 30, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/high
slot = ACCESSORY_SLOT_ARMOR_L
/obj/item/clothing/accessory/armor/legguards/blue
@@ -262,7 +258,7 @@
name = "heavy leg guards"
desc = "A pair of heavily armored leg pads in red-trimmed black. Attaches to a plate carrier."
icon_state = "legguards_merc"
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
+ armor_type = /datum/armor/merc/heavy
/obj/item/clothing/accessory/armor/legguards/laserproof
name = "ablative leg guards"
@@ -270,7 +266,7 @@
icon_state = "legguards_ablative"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "jackboots", SLOT_ID_LEFT_HAND = "jackboots")
siemens_coefficient = 0.1
- armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ablative
/obj/item/clothing/accessory/armor/legguards/bulletproof
name = "bullet resistant leg guards"
@@ -278,7 +274,7 @@
icon_state = "legguards_ballistic"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "jackboots", SLOT_ID_LEFT_HAND = "jackboots")
siemens_coefficient = 0.7
- armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/ballistic
/obj/item/clothing/accessory/armor/legguards/riot
name = "riot leg guards"
@@ -286,7 +282,7 @@
icon_state = "legguards_riot"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "jackboots", SLOT_ID_LEFT_HAND = "jackboots")
siemens_coefficient = 0.5
- armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/riot
//////////////////////////
//Decorative attachments
@@ -425,12 +421,12 @@
//Debug variant
/obj/item/clothing/accessory/armor/limb_plate
- name = "armurr plating"
+ name = "armor plating"
desc = "You shouldn't be seeing this. Contact a Maintainer."
icon = 'icons/obj/clothing/ties.dmi'
icon_override = 'icons/mob/clothing/ties.dmi'
icon_state = "bronze"
- armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 5, bio = 5, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/accessory/armor/limb_plate/arm_l
name = "left shoulder plate"
diff --git a/code/modules/clothing/under/accessories/clothing.dm b/code/modules/clothing/under/accessories/clothing.dm
index 9440ba19020..708493cc056 100644
--- a/code/modules/clothing/under/accessories/clothing.dm
+++ b/code/modules/clothing/under/accessories/clothing.dm
@@ -51,7 +51,7 @@
icon_override = 'icons/mob/clothing/ties.dmi'
var/fire_resist = T0C+100
allowed = list(/obj/item/tank/emergency/oxygen)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
slot_flags = SLOT_OCLOTHING | SLOT_TIE
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
siemens_coefficient = 0.9
@@ -289,7 +289,7 @@
name = "flower-pattern shirt"
desc = "You probably need some welder googles to look at this."
icon_state = "hawaii"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
slot_flags = SLOT_OCLOTHING | SLOT_TIE
body_cover_flags = UPPER_TORSO|LOWER_TORSO
siemens_coefficient = 0.9
@@ -316,7 +316,7 @@
icon_override = 'icons/mob/clothing/ties.dmi'
item_state_slots = list(SLOT_ID_RIGHT_HAND = "wcoat", SLOT_ID_LEFT_HAND = "wcoat")
allowed = list(/obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
slot_flags = SLOT_OCLOTHING | SLOT_TIE
body_cover_flags = UPPER_TORSO|LOWER_TORSO
siemens_coefficient = 0.9
@@ -368,7 +368,7 @@
icon_override = 'icons/mob/clothing/ties.dmi'
item_state_slots = list(SLOT_ID_RIGHT_HAND = "labcoat", SLOT_ID_LEFT_HAND = "labcoat")
allowed = list(/obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
slot_flags = SLOT_OCLOTHING | SLOT_TIE
body_cover_flags = UPPER_TORSO|LOWER_TORSO
siemens_coefficient = 0.9
diff --git a/code/modules/clothing/under/jobs/centcom.dm b/code/modules/clothing/under/jobs/centcom.dm
index d3896f5b5aa..a16c541aee9 100644
--- a/code/modules/clothing/under/jobs/centcom.dm
+++ b/code/modules/clothing/under/jobs/centcom.dm
@@ -60,7 +60,7 @@
name = "tactical combat uniform"
desc = "A dark colored uniform worn by CentCom's conscripted military forces."
icon_state = "military"
- armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, fire = 50, acid = 40)
+ armor_type = /datum/armor/military/jumpsuit
/obj/item/clothing/under/rank/centcom/military/eng
name = "tactical engineering uniform"
diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm
index 88946db2b6f..0ead5309ba4 100644
--- a/code/modules/clothing/under/jobs/civilian.dm
+++ b/code/modules/clothing/under/jobs/civilian.dm
@@ -145,19 +145,19 @@
desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
name = "janitor's jumpsuit"
icon_state = "janitor"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/civilian/jumpsuit/janitor
/obj/item/clothing/under/rank/janitor_fem
name = "janitor's jumpsuit"
desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
icon_state = "janitor_fem"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/civilian/jumpsuit/janitor
/obj/item/clothing/under/rank/janitor/skirt_pleated
name = "janitor's pleated skirt"
desc = "The official pleated skirt of the local janitor. It bears minor protection from biohazards."
icon_state = "janitor_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/civilian/jumpsuit/janitor
/obj/item/clothing/under/lawyer
desc = "Slick threads."
diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm
index b7b337f6260..0f040495f0d 100644
--- a/code/modules/clothing/under/jobs/engineering.dm
+++ b/code/modules/clothing/under/jobs/engineering.dm
@@ -3,25 +3,25 @@
desc = "It's a high visibility jumpsuit given to those engineers insane enough to achieve the rank of \"Chief engineer\". It has minor radiation shielding."
name = "chief engineer's jumpsuit"
icon_state = "chief"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+ armor_type = /datum/armor/engineering/jumpsuit
/obj/item/clothing/under/rank/chief_engineer/jeans
name = "chief engineer's jumpjeans"
desc = "Casual jeans and a high visibility top given to those more insane than those with the average CE jumpsuit. It bears minor radiation shielding."
icon_state = "chiefj"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+ armor_type = /datum/armor/engineering/jumpsuit
/obj/item/clothing/under/rank/chief_engineer/fem_jeans
name = "chief engineer's jumpjeans"
desc = "Casual jeans and a high visibility top given to those more insane than those with the average CE jumpsuit. It bears minor radiation shielding."
icon_state = "chiefjf"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+ armor_type = /datum/armor/engineering/jumpsuit
/obj/item/clothing/under/rank/chief_engineer/skirt_pleated
name = "chief engineer's pleated skirt"
desc = "It's a high visibility pleated skirt given to those insane enough to achieve the rank of 'Chief Engineer'. It comes with minor rediation shielding."
icon_state = "chiefengineer_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+ armor_type = /datum/armor/engineering/jumpsuit
/obj/item/clothing/under/rank/atmospheric_technician
desc = "It's a jumpsuit worn by atmospheric technicians."
@@ -47,25 +47,25 @@
desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding."
name = "engineer's jumpsuit"
icon_state = "engine"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+ armor_type = /datum/armor/engineering/jumpsuit
/obj/item/clothing/under/rank/engineer/jeans
name = "engineer's jumpjeans"
desc = "Casual jeans and a sturdy shirt make for minor radiation shielding. The shirt has orange bands around the forearm, showing the wearer's an engineer."
icon_state = "enginej"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+ armor_type = /datum/armor/engineering/jumpsuit
/obj/item/clothing/under/rank/engineer/fem_jeans
name = "engineer's jumpjeans"
desc = "Casual jeans and a sturdy shirt make for minor radiation shielding. The shirt is high visibility, showing the wearer's an engineer."
icon_state = "enginejf"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+ armor_type = /datum/armor/engineering/jumpsuit
/obj/item/clothing/under/rank/engineer/skirt_pleated
name = "engineer's pleated skirt"
desc = "It's a high visibility pleated skirt worn by some engineers. It has minor radiation shielding."
icon_state = "engine_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+ armor_type = /datum/armor/engineering/jumpsuit
/obj/item/clothing/under/rank/engineer/turtleneck
name = "engineering turtleneck"
diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm
index 1acf98a78f0..8a3a4a0cadf 100644
--- a/code/modules/clothing/under/jobs/medsci.dm
+++ b/code/modules/clothing/under/jobs/medsci.dm
@@ -5,19 +5,19 @@
desc = "It's a jumpsuit worn by those with the know-how to achieve the position of \"Research Director\". Its fabric provides minor protection from biological contaminants."
name = "research director's jumpsuit"
icon_state = "director"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/research_director/skirt_pleated
name = "research director's pleated skirt"
desc = "Feminine fashion for the style conscious RD. Its fabric provides minor protection from biological contaminants, and its pleated skirt provides extra style points."
icon_state = "director_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/research_director/skirt_pleated/whimsical
name = "whimsical research director's pleated skirt"
desc = "Whimsical attire for the more magical of RD's, providing minor protection from biological contaminants like it's nothing."
icon_state = "rdwhimsy_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/research_director/skirt_pleated/turtleneck
name = "research director's turtleneck pleated skirt"
@@ -29,13 +29,13 @@
name = "head researcher uniform"
icon_state = "rdalt"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "director", SLOT_ID_LEFT_HAND = "director")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/research_director/dress_rd
name = "research director dress uniform"
desc = "Feminine fashion for the style conscious RD. Its fabric provides minor protection from biological contaminants."
icon_state = "dress_rd"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS
/obj/item/clothing/under/rank/research_director/turtleneck
@@ -50,31 +50,31 @@
icon_state = "science"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "white", SLOT_ID_LEFT_HAND = "white")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/scientist/jeans
name = "scientist's jumpjeans"
desc = "The perfect getup for the more laid-back researcher. Sadly, it doesn't seem to be as protective as its jumpsuit counterpart."
icon_state = "sciencej"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 5, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/scientist/femjeans
name = "scientist's jumpjeans"
desc = "The perfect getup for the more laid-back researcher. Sadly, it doesn't seem to be as protective as it's jumpsuit counterpart"
icon_state = "sciencejf"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 5, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/scientist/skirt_pleated
name = "scientist's pleated skirt"
desc = "It's made of a special fiber that provides minor protection against biohazards. Appropriately placed markings on the shoulders and pleated skirt denote the wearer as a scientist."
icon_state = "toxins_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/scientist/turtleneck
name = "science turtleneck"
desc = "It's a stylish turtleneck weaved with an explosive-resistant, comfortable mesh. You don't have to look like a dork to be a dork."
icon_state = "turtle_sci"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
item_state_slots = list(SLOT_ID_RIGHT_HAND = "purple", SLOT_ID_LEFT_HAND = "purple")
worn_has_rolldown = UNIFORM_HAS_NO_ROLL
worn_has_rollsleeve = UNIFORM_HAS_NO_ROLL
@@ -83,7 +83,7 @@
name = "science turtleneck"
desc = "It's a stylish turtleneck weaved with an explosive-resistant, comfortable mesh. You don't have to look like a dork to be a dork."
icon_state = "turtle_sci_fem"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/chemist
desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it."
@@ -91,26 +91,25 @@
icon_state = "chemistry"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "white", SLOT_ID_LEFT_HAND = "white")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
/obj/item/clothing/under/rank/chemist/jeans
name = "chemist's jumpjeans"
desc = "Casual jeans and a coloured top with special protection against biohazards. It has chemist rank striping on the shoulders."
icon_state = "chemistryj"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
/obj/item/clothing/under/rank/chemist/fem_jeans
name = "chemist's jumpjeans"
desc = "Casual jeans and a coloured top with special protectiona gainst biohazards. It has chemist rank striping on the shoulders."
icon_state = "chemistryjf"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
/obj/item/clothing/under/rank/chemist/skirt_pleated
name = "chemist's pleated skirt"
desc = "It's made of a special fiber that gives special protection against biohazards. It even has bonus pleating!"
icon_state = "chemistry_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
-
+ armor_type = /datum/armor/medical/jumpsuit
/*
* Medical
@@ -121,13 +120,15 @@
icon_state = "cmo"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "white", SLOT_ID_LEFT_HAND = "white")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/chief_medical_officer/skirt_pleated
name = "chief medical officer's pleated skirt"
desc = "A pleated skirt for the fashion conscious CMO, now with minor biological protection!"
icon_state = "cmo_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/chief_medical_officer/turtleneck
desc = "It's a turtleneck worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection, for an officer with a superior sense of style and practicality."
@@ -138,13 +139,15 @@
name = "chief medical officer's jeans"
desc = "A high-stress workplace should never revoke one's right to dress casual. The minor biological protection should do the trick well enough."
icon_state = "cmoj"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/chief_medical_officer/fem_jeans
name = "chief medical officer's jeans"
desc = "A high-stress workplace should never revoke one's right to dress casual. The minor biological protection should do the trick well enough."
icon_state = "cmojf"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/geneticist
desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it."
@@ -152,13 +155,15 @@
icon_state = "genetics"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "white", SLOT_ID_LEFT_HAND = "white")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/geneticist/skirt_pleated
name = "geneticist's pleated skirt"
desc = "A pleated skirt for the ever forgotten geneticist."
icon_state = "genetics_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/virologist
desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it."
@@ -166,32 +171,37 @@
icon_state = "virology"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "white", SLOT_ID_LEFT_HAND = "white")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/virologist/jeans
name = "virologist's jumpjeans"
desc = "A casual outfit made of special fibers that provide minor protection against biohazards. It has green striping on the shoulders that denote the wearer as a virologist."
icon_state = "virologyj"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/virologist/fem_jeans
name = "virologist's jumpjeans"
desc = "A casual outfit made of special fibers that provide minor protection against biohazards. It has green striping on the shoulders that denote the wearer as a virologist."
icon_state = "virologyjf"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/virologist/skirt_pleated
name = "virologist's pleated skirt"
desc = "It's made of a special fiber that gives special protection against biohazards. It even has bonus pleating!"
icon_state = "virology_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/nursesuit
desc = "It's a jumpsuit commonly worn by nursing staff in the medical department."
name = "nurse's suit"
icon_state = "nursesuit"
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
body_cover_flags = UPPER_TORSO|LOWER_TORSO
worn_has_rollsleeve = UNIFORM_HAS_NO_ROLL
@@ -201,7 +211,8 @@
icon_state = "nurse"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "nursesuit", SLOT_ID_LEFT_HAND = "nursesuit")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
body_cover_flags = UPPER_TORSO|LOWER_TORSO
worn_has_rollsleeve = UNIFORM_HAS_NO_ROLL
@@ -211,7 +222,8 @@
icon_state = "orderly"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "nursesuit", SLOT_ID_LEFT_HAND = "nursesuit")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel."
@@ -219,25 +231,29 @@
icon_state = "medical"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "white", SLOT_ID_LEFT_HAND = "white")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/jeans
name = "medical doctor's jeans"
desc = "A casual outfit made of special fibers that provide minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel."
icon_state = "medicalj"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/fem_jeans
name = "medical doctor's jeans"
desc = "A casual outfit made of special fibers that provide minor protection against biohazards. It has a cross on the chest denoting that th wearer is trained medical personnel."
icon_state = "medicaljf"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/skirt_pleated
name = "medical doctor's pleated skirt"
desc = "It's made of a special fiber that provides minor protection against biohazards. Its themed pleating and the cross on the chest denotes that the wearer is trained medical personnel."
icon_state = "medical_skirt"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/turtleneck
name = "medical turtleneck"
@@ -264,65 +280,75 @@
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue."
icon_state = "scrubsblue"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "blue", SLOT_ID_LEFT_HAND = "blue")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/scrubs_fem
name = "blue scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue."
icon_state = "scrubsblue_fem"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/scrubs/green
name = "green scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green."
icon_state = "scrubsgreen"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "green", SLOT_ID_LEFT_HAND = "green")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/scrubs_fem/green
name = "green scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green."
icon_state = "scrubsgreen_fem"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/scrubs/purple
name = "purple scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple."
icon_state = "scrubspurple"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "purple", SLOT_ID_LEFT_HAND = "purple")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/scrubs_fem/purple
name = "purple scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple."
icon_state = "scrubspurple_fem"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/scrubs/black
name = "black scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in black."
icon_state = "scrubsblack"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "black", SLOT_ID_LEFT_HAND = "black")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/scrubs_fem/black
name = "black scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in black."
icon_state = "scrubsblack_fem"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/scrubs/navyblue
name = "navy blue scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in navy blue."
icon_state = "scrubsnavyblue"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "blue", SLOT_ID_LEFT_HAND = "blue")
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/medical/scrubs_fem/navyblue
name = "navy blue scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in navy blue."
icon_state = "scrubsnavyblue_fem"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/psych
desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist."
@@ -350,7 +376,8 @@
icon_state = "genetics_new"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "white", SLOT_ID_LEFT_HAND = "white")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/chemist_new
desc = "It's made of a special fiber which provides minor protection against biohazards."
@@ -358,7 +385,8 @@
icon_state = "chemist_new"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "white", SLOT_ID_LEFT_HAND = "white")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
/obj/item/clothing/under/rank/scientist_new
desc = "Made of a special fiber that gives special protection against biohazards and small explosions."
@@ -366,7 +394,7 @@
icon_state = "scientist_new"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "white", SLOT_ID_LEFT_HAND = "white")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/virologist_new
desc = "Made of a special fiber that gives increased protection against biohazards."
@@ -374,4 +402,5 @@
icon_state = "virologist_new"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "white", SLOT_ID_LEFT_HAND = "white")
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
+
diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm
index 9a49f9a6bc7..6bf38a68373 100644
--- a/code/modules/clothing/under/jobs/security.dm
+++ b/code/modules/clothing/under/jobs/security.dm
@@ -13,40 +13,40 @@
name = "warden's jumpsuit"
icon_state = "warden"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "red", SLOT_ID_LEFT_HAND = "red")
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/warden_fem
name = "warden's jumpsuit"
desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for more robust protection. It has the word \"Warden\" written on the shoulders."
icon_state = "warden_fem"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/rank/warden/skirt_pleated
name = "warden's pleated skirt"
desc = "A pleated skirt made up of a slightly sturdier material than your average jumpsuit. It has the word 'Warden' writton on the shoulders."
icon_state = "rwarden_skirt"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/rank/security
name = "security officer's jumpsuit"
desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for robust protection."
icon_state = "security"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "red", SLOT_ID_LEFT_HAND = "red")
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/security_fem
name = "security officer's jumpsuit"
desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for robust protection."
icon_state = "security_fem"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/rank/security/skirt_pleated
name = "security officer's pleated skirt"
desc = "A pleated skirt made up of a slightly sturdier material than most jumpsuits, allowing more robust protection."
icon_state = "sec_skirt"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/rank/security/turtleneck
name = "security turtleneck"
@@ -65,7 +65,7 @@
desc = "A dress shirt and khakis with a security patch sewn on."
icon_state = "dispatch"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "detective", SLOT_ID_LEFT_HAND = "detective")
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS
siemens_coefficient = 0.9
@@ -74,7 +74,7 @@
desc = "It's made of a slightly sturdier material, to allow for robust protection."
icon_state = "redshirt2"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "red", SLOT_ID_LEFT_HAND = "red")
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/security2_fem
@@ -92,27 +92,27 @@
name = "security officer's corporate uniform"
desc = "A corporate standard uniform made of a slightly sturdier material, to allow for robust protection."
icon_state = "sec_corporate_fem"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/rank/warden/corp
icon_state = "warden_corporate"
name = "warden's corporate uniform"
desc = "A corporate standard uniform made of a slightly sturdier material, to allow for robust protection. It has the word \"Warden\" on the shoulders."
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
item_state_slots = list(SLOT_ID_RIGHT_HAND = "black", SLOT_ID_LEFT_HAND = "black")
/obj/item/clothing/under/rank/warden/corp_fem
name = "warden's corporate uniform"
desc = "A corporate standard uniform made of a slightly sturdier material, to allow for robust protection. It has the word \"Warden\" on the shoulders."
icon_state = "warden_corporate_fem"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/tactical
name = "tactical jumpsuit"
desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for robust protection."
icon_state = "swatunder"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "green", SLOT_ID_LEFT_HAND = "green")
- armor = list(melee = 10, bullet = 5, laser = 5,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
siemens_coefficient = 0.9
worn_has_rollsleeve = UNIFORM_HAS_NO_ROLL
@@ -123,7 +123,7 @@
name = "detective's suit"
desc = "A rumpled white dress shirt paired with well-worn grey slacks."
icon_state = "detective"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
siemens_coefficient = 0.9
starting_accessories = list(/obj/item/clothing/accessory/tie/blue_clip)
@@ -131,7 +131,7 @@
name = "detective's suit"
desc = "A rumpled white dress shirt paired with well-worn grey slacks."
icon_state = "detective_fem"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/*
/obj/item/clothing/under/det/verb/rollup()
@@ -223,26 +223,26 @@
name = "head of security's jumpsuit"
icon_state = "hos"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "red", SLOT_ID_LEFT_HAND = "red")
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/head_of_security_fem
name = "head of security's jumpsuit"
desc = "It's a jumpsuit worn by those few with the dedication to achieve the position of \"Head of Security\". It has additional armour to protect the wearer."
icon_state = "hos_fem"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/rank/head_of_security/skirt_pleated
name = "head of security's pleated skirt"
desc = "A pleated skirt worn by those few with the dedication to achieve the position of 'Head of Security'. It bears additional armour to protect the wearer."
icon_state = "rhos_skirt"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/rank/head_of_security/skirt_pleated/alt
name = "dark head of security's pleated skirt"
desc = "A pleated skirt worn by those few with the dedication to achieve the position of 'Head of Security'. It bears additional armour to protect the wearer."
icon_state = "hosalt_skirt"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/rank/head_of_security/corp
name = "head of security's corporate jumpsuit"
diff --git a/code/modules/clothing/under/misc.dm b/code/modules/clothing/under/misc.dm
index c584b92252d..adbda32c1a2 100644
--- a/code/modules/clothing/under/misc.dm
+++ b/code/modules/clothing/under/misc.dm
@@ -7,7 +7,7 @@
icon_state = "hazard"
snowflake_worn_state = "hazard"
siemens_coefficient = 0.8
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 20, bio = 0, rad = 20)
+ armor_type = /datum/armor/engineering/jumpsuit
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/under/sterile
@@ -16,7 +16,7 @@
icon_state = "sterile"
snowflake_worn_state = "sterile"
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 30, rad = 0)
+ armor_type = /datum/armor/medical/jumpsuit
//Pirate Mate Fatigues
/obj/item/clothing/under/worn_fatigues
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index a2e61b3f9fd..e503197d6fb 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -98,7 +98,7 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100)
+ armor_type = /datum/armor/invulnerable
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 0
@@ -1871,7 +1871,7 @@
//Same as Nanotrasen Security Uniforms
/obj/item/clothing/under/ert
- armor = list(melee = 5, bullet = 10, laser = 10, energy = 5, bomb = 5, bio = 0, rad = 0)
+ armor_type = /datum/armor/centcom/jumpsuit
/obj/item/clothing/under/laconic
name = "laconic field suit"
diff --git a/code/modules/clothing/under/nanotrasen_vr.dm b/code/modules/clothing/under/nanotrasen_vr.dm
index 317f7e9d792..f6c483327b1 100644
--- a/code/modules/clothing/under/nanotrasen_vr.dm
+++ b/code/modules/clothing/under/nanotrasen_vr.dm
@@ -5,7 +5,7 @@
desc = "A comfortable turtleneck and black trousers sporting nanotrasen symbols."
icon_state = "navyutility"
snowflake_worn_state = "navyutility"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
siemens_coefficient = 0.9
/obj/item/clothing/under/nanotrasen/security
@@ -13,7 +13,7 @@
desc = "The security uniform of NanoTrasen's security. It looks sturdy and well padded"
icon_state = "navyutility_sec"
snowflake_worn_state = "navyutility_sec"
- armor = list(melee = 10, bullet = 5, laser = 5, energy = 5, bomb = 5, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/nanotrasen/security/warden
name = "NanoTrasen warden uniform"
@@ -37,7 +37,7 @@
SLOT_ID_LEFT_HAND = "darkbluesoft",
SLOT_ID_RIGHT_HAND = "darkbluesoft",
)
- armor = list(melee = 10, bullet = 5, laser = 5, energy = 5, bomb = 5, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/head/beret/nanotrasen
name = "NanoTrasen security beret"
@@ -51,5 +51,5 @@
desc = "A Sturdy kevlar plate carrier with webbing attached."
icon_state = "webvest"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "swat", SLOT_ID_LEFT_HAND = "swat")
- armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 0, rad = 0)
+ armor_type = /datum/armor/station/tactical
slowdown = 0.5
diff --git a/code/modules/clothing/under/oricon/_oricon.dm b/code/modules/clothing/under/oricon/_oricon.dm
index ca25feef90a..375c150e90b 100644
--- a/code/modules/clothing/under/oricon/_oricon.dm
+++ b/code/modules/clothing/under/oricon/_oricon.dm
@@ -1,7 +1,7 @@
/obj/item/clothing/under/oricon
name = "master oricon uniform"
desc = "You shouldn't be seeing this."
- armor = list(melee = 5, bullet = 0, laser = 5, energy = 5, bomb = 0, bio = 5, rad = 5)
+ armor_type = /datum/armor/security/jumpsuit
siemens_coefficient = 0.8
// default to false
worn_has_rolldown = UNIFORM_HAS_NO_ROLL
diff --git a/code/modules/clothing/under/oricon/crew.dm b/code/modules/clothing/under/oricon/crew.dm
index f30db914543..e5b1827af49 100644
--- a/code/modules/clothing/under/oricon/crew.dm
+++ b/code/modules/clothing/under/oricon/crew.dm
@@ -21,7 +21,7 @@
/obj/item/clothing/under/oricon/utility/sysguard/crew/security
desc = "A comfortable turtleneck and black utility trousers, made from a slightly sturdy, biohazard resistant material. This one has silver trim."
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
+ armor_type = /datum/armor/uniform/utility/padded
siemens_coefficient = 0.9
starting_accessories = list(/obj/item/clothing/accessory/oricon/department/security/crew)
name = "crew security uniform"
@@ -33,7 +33,7 @@
starting_accessories = list(/obj/item/clothing/accessory/oricon/department/blueshield/crew)
name = "blueshield's utility uniform"
desc = "A comfortable turtleneck and black utility trousers, made from a slightly sturdy, biohazard resistant material. This one has silver trim."
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
+ armor_type = /datum/armor/security/jumpsuit
icon = 'icons/clothing/uniform/rank/utility/blueshield.dmi'
icon_state = "black"
worn_bodytypes = BODYTYPES(BODYTYPE_DEFAULT, BODYTYPE_TESHARI, BODYTYPE_VOX)
@@ -93,7 +93,7 @@
/obj/item/clothing/under/oricon/utility/sysguard/officer/crew/security
desc = "A comfortable turtleneck and black utility trousers, made from a slightly sturdy, biohazard resistant material. This one has gold trim."
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
+ armor_type = /datum/armor/uniform/utility/padded
siemens_coefficient = 0.9
starting_accessories = list(/obj/item/clothing/accessory/oricon/department/security/crew)
name = "security officer uniform"
diff --git a/code/modules/clothing/under/oricon/dress.dm b/code/modules/clothing/under/oricon/dress.dm
index 7454631c146..4b6900dc6b1 100644
--- a/code/modules/clothing/under/oricon/dress.dm
+++ b/code/modules/clothing/under/oricon/dress.dm
@@ -3,7 +3,7 @@
icon = 'icons/clothing/uniform/rank/dress.dmi'
desc = "A dress uniform of some kind."
icon_state = "grey"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
siemens_coefficient = 0.9
worn_has_rolldown = UNIFORM_HAS_NO_ROLL
worn_has_rollsleeve = UNIFORM_HAS_NO_ROLL
diff --git a/code/modules/clothing/under/oricon/pt.dm b/code/modules/clothing/under/oricon/pt.dm
index 3a28163ac90..02472dcef3c 100644
--- a/code/modules/clothing/under/oricon/pt.dm
+++ b/code/modules/clothing/under/oricon/pt.dm
@@ -3,7 +3,7 @@
icon = 'icons/clothing/uniform/rank/pt.dmi'
desc = "Shorts! Shirt! Miami! Sexy!"
icon_state = "miami"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
siemens_coefficient = 0.9
body_cover_flags = UPPER_TORSO|LOWER_TORSO
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL | WORN_RENDER_INHAND_NO_RENDER
diff --git a/code/modules/clothing/under/oricon/service.dm b/code/modules/clothing/under/oricon/service.dm
index 8e0b5093595..7793ff18fcc 100644
--- a/code/modules/clothing/under/oricon/service.dm
+++ b/code/modules/clothing/under/oricon/service.dm
@@ -3,7 +3,6 @@
icon = 'icons/clothing/uniform/rank/service.dmi'
desc = "A service uniform of some kind."
icon_state = "white"
- armor = list(melee = 5, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 5, rad = 0)
siemens_coefficient = 0.9
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL | WORN_RENDER_INHAND_NO_RENDER
worn_has_rollsleeve = UNIFORM_HAS_ROLL
diff --git a/code/modules/clothing/under/oricon/utility.dm b/code/modules/clothing/under/oricon/utility.dm
index a525589f9b2..fe1cca5052e 100644
--- a/code/modules/clothing/under/oricon/utility.dm
+++ b/code/modules/clothing/under/oricon/utility.dm
@@ -4,7 +4,7 @@
/obj/item/clothing/under/oricon/utility/sysguard
name = "explorer's uniform"
desc = "The utility uniform of the Society of Universal Cartographers, made from biohazard resistant material. This one has silver trim."
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
+ armor_type = /datum/armor/uniform/utility
icon_state = "black_crew"
worn_has_rolldown = UNIFORM_HAS_ROLL
worn_has_rollsleeve = UNIFORM_HAS_ROLL
@@ -117,7 +117,6 @@
name = "fleet coveralls"
desc = "The utility uniform of the JSDF Fleet, made from an insulated material."
icon_state = "navy"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 10, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.7
worn_has_rolldown = UNIFORM_HAS_ROLL
worn_has_rollsleeve = UNIFORM_HAS_ROLL
@@ -175,7 +174,6 @@
name = "marine fatigues"
desc = "The utility uniform of the JSDF Marine Corps, made from durable material."
icon_state = "grey"
- armor = list(melee = 10, bullet = 0, laser = 10,energy = 0, bomb = 0, bio = 0, rad = 0)
worn_has_rolldown = UNIFORM_HAS_ROLL
worn_has_rollsleeve = UNIFORM_HAS_ROLL
diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm
index 9e3a4613a89..30806b6ce18 100644
--- a/code/modules/clothing/under/shorts.dm
+++ b/code/modules/clothing/under/shorts.dm
@@ -182,7 +182,7 @@
desc = "It's an orange high visibility jumpskirt worn by engineers. It has minor radiation shielding."
name = "engineer's jumpskirt"
icon_state = "enginef"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+ armor_type = /datum/armor/engineering/jumpsuit
item_state_slots = list(SLOT_ID_RIGHT_HAND = "engine", SLOT_ID_LEFT_HAND = "engine")
/obj/item/clothing/under/rank/chief_engineer/skirt
@@ -207,7 +207,7 @@
name = "scientist's jumpskirt"
icon_state = "sciencef"
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
+ armor_type = /datum/armor/science/jumpsuit
/obj/item/clothing/under/rank/medical/skirt
name = "medical doctor's jumpskirt"
@@ -234,7 +234,7 @@
name = "security officer's jumpskirt"
desc = "Standard feminine fashion for Security Officers. It's made of sturdier material than the standard jumpskirts."
icon_state = "securityf"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/security/jumpsuit
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/warden/skirt
diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm
index db007c51095..d567f8191ed 100644
--- a/code/modules/clothing/under/syndicate.dm
+++ b/code/modules/clothing/under/syndicate.dm
@@ -5,7 +5,7 @@
icon_state = "syndicate"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "black", SLOT_ID_LEFT_HAND = "black")
has_sensors = UNIFORM_HAS_NO_SENSORS
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/agent/jumpsuit
siemens_coefficient = 0.9
/obj/item/clothing/under/syndicate/skirt_pleated
@@ -18,7 +18,6 @@
icon_state = "combat"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "black", SLOT_ID_LEFT_HAND = "black")
has_sensors = UNIFORM_HAS_SUIT_SENSORS
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.9
/obj/item/clothing/under/syndicate/tacticool
diff --git a/code/modules/clothing/under/utility/utility.dm b/code/modules/clothing/under/utility/utility.dm
index ab74daab4b5..acd2b932a10 100644
--- a/code/modules/clothing/under/utility/utility.dm
+++ b/code/modules/clothing/under/utility/utility.dm
@@ -4,7 +4,7 @@
icon = 'icons/clothing/uniform/rank/utility.dmi'
icon_state = "black"
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
siemens_coefficient = 0.9
worn_has_rolldown = UNIFORM_HAS_ROLL
worn_has_rollsleeve = UNIFORM_HAS_ROLL
diff --git a/code/modules/donatorreskins/donatorarmor.dm b/code/modules/donatorreskins/donatorarmor.dm
index f767cc666f3..ea1efb1029a 100644
--- a/code/modules/donatorreskins/donatorarmor.dm
+++ b/code/modules/donatorreskins/donatorarmor.dm
@@ -2,4 +2,3 @@
name = "brig physician's sterile vest"
desc = "A black padded vest jacket made with germ-resistant fibers, suitable for use in medical facilities. Doesn't protect the wearer from physical attacks."
icon_state = "cameronarmor"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 35, rad = 0)
diff --git a/code/modules/donatorreskins/donatorclothing.dm b/code/modules/donatorreskins/donatorclothing.dm
index 88926762828..b5d229ed75c 100644
--- a/code/modules/donatorreskins/donatorclothing.dm
+++ b/code/modules/donatorreskins/donatorclothing.dm
@@ -15,7 +15,7 @@
desc = "Yet again just here for convenience, use it as a base for donator armour-style items."
icon = 'icons/obj/clothing/donatorclothing.dmi'
icon_override = 'icons/mob/clothing/donatorclothing.dmi'
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
/obj/item/clothing/suit/storage/hooded/donator/bee_costume
name = "bee costume"
diff --git a/code/modules/economy/items/cash.dm b/code/modules/economy/items/cash.dm
index 3c78952085c..bbf291566c5 100644
--- a/code/modules/economy/items/cash.dm
+++ b/code/modules/economy/items/cash.dm
@@ -7,7 +7,7 @@
opacity = 0
density = 0
anchored = 0.0
- force = 1.0
+ damage_force = 1.0
throw_force = 1.0
throw_speed = 1
throw_range = 2
diff --git a/code/modules/economy/items/coins.dm b/code/modules/economy/items/coins.dm
index 8d16f861662..a31ae4f52ed 100644
--- a/code/modules/economy/items/coins.dm
+++ b/code/modules/economy/items/coins.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/items.dmi'
name = "Coin"
icon_state = "coin"
- force = 0.0
+ damage_force = 0.0
throw_force = 0.0
w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
diff --git a/code/modules/economy/money_bag.dm b/code/modules/economy/money_bag.dm
index b518a688d38..9e858a7c9c4 100644
--- a/code/modules/economy/money_bag.dm
+++ b/code/modules/economy/money_bag.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/storage.dmi'
name = "Money bag"
icon_state = "moneybag"
- force = 10.0
+ damage_force = 10.0
throw_force = 2.0
w_class = ITEMSIZE_LARGE
diff --git a/code/modules/examine/descriptions/armor.dm b/code/modules/examine/descriptions/armor.dm
index e0a6e978522..0361405cc01 100644
--- a/code/modules/examine/descriptions/armor.dm
+++ b/code/modules/examine/descriptions/armor.dm
@@ -1,47 +1,8 @@
-/obj/item/clothing/proc/describe_armor(var/armor_type, var/descriptive_attack_type)
- if(armor[armor_type])
- switch(armor[armor_type])
- if(1 to 20)
- return "It barely protects against [descriptive_attack_type]."
- if(21 to 30)
- return "It provides a very small defense against [descriptive_attack_type]."
- if(31 to 40)
- return "It offers a small amount of protection against [descriptive_attack_type]."
- if(41 to 50)
- return "It offers a moderate defense against [descriptive_attack_type]."
- if(51 to 60)
- return "It provides a strong defense against [descriptive_attack_type]."
- if(61 to 70)
- return "It is very strong against [descriptive_attack_type]."
- if(71 to 80)
- return "This gives a very robust defense against [descriptive_attack_type]."
- if(81 to 99)
- return "Wearing this would make you nigh-invulerable against [descriptive_attack_type]."
- if(100)
- return "You would be immune to [descriptive_attack_type] if you wore this."
-
-
/obj/item/clothing/get_description_info()
var/armor_stats = description_info + "\
"
- if(armor["melee"])
- armor_stats += "[describe_armor("melee","blunt force")] \n"
- if(armor["bullet"])
- armor_stats += "[describe_armor("bullet","ballistics")] \n"
- if(armor["laser"])
- armor_stats += "[describe_armor("laser","lasers")] \n"
- if(armor["energy"])
- armor_stats += "[describe_armor("energy","energy")] \n"
- if(armor["bomb"])
- armor_stats += "[describe_armor("bomb","explosions")] \n"
- if(armor["bio"])
- armor_stats += "[describe_armor("bio","biohazards")] \n"
- if(armor["rad"])
- armor_stats += "[describe_armor("rad","radiation")] \n"
-
- armor_stats += "\n"
if(atom_flags & ALLOWINTERNALS)
armor_stats += "It is airtight. \n"
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 6f7c5a586b9..15769bd047c 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -247,7 +247,7 @@ proc/check_panel(mob/M)
to_chat(M, "[my_target] flails around wildly.")
my_target.show_message("[src] has been attacked by [my_target] ", 1) //Lazy.
- src.health -= P.force
+ src.health -= P.damage_force
/obj/effect/fake_attacker/Crossed(var/mob/M, somenumber)
. = ..()
diff --git a/code/modules/food/food/drinks.dm b/code/modules/food/food/drinks.dm
index 91ca4fc5835..e7dca9f8279 100644
--- a/code/modules/food/food/drinks.dm
+++ b/code/modules/food/food/drinks.dm
@@ -105,7 +105,7 @@
icon_state = "golden_cup"
item_state = "" //nope :(
w_class = ITEMSIZE_LARGE
- force = 14
+ damage_force = 14
throw_force = 10
amount_per_transfer_from_this = 20
possible_transfer_amounts = null
diff --git a/code/modules/food/food/drinks/bottle.dm b/code/modules/food/food/drinks/bottle.dm
index 60e0f95b6e2..d4bf3f3e848 100644
--- a/code/modules/food/food/drinks/bottle.dm
+++ b/code/modules/food/food/drinks/bottle.dm
@@ -7,7 +7,7 @@
amount_per_transfer_from_this = 10
volume = 100
item_state = "broken_beer" //Generic held-item sprite until unique ones are made.
- force = 6
+ damage_force = 6
var/smash_duration = 5 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets)
var/isGlass = 1 //Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it
@@ -156,7 +156,7 @@
return //won't always break on the first hit
// You are going to knock someone out for longer if they are not wearing a helmet.
- var/weaken_duration = smash_duration + min(0, force - L.run_mob_armor(target_zone, "melee") + 10)
+ var/weaken_duration = smash_duration + min(0, damage_force - L.legacy_mob_armor(target_zone, "melee") + 10)
if(target_zone == "head" && istype(L, /mob/living/carbon/))
user.visible_message("\The [user] smashes [src] over [L]'s head!")
@@ -181,7 +181,7 @@
icon = 'icons/obj/drinks.dmi'
icon_state = "broken_bottle"
hitsound = 'sound/weapons/bladeslice.ogg'
- force = 10
+ damage_force = 10
throw_force = 5
throw_speed = 3
throw_range = 5
diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm
index 6c86cf31fe4..3a5c308d7cd 100644
--- a/code/modules/food/food/snacks.dm
+++ b/code/modules/food/food/snacks.dm
@@ -23,7 +23,7 @@
//Used to stop deepfried meat from looking like slightly tanned raw meat, and make it actually look cooked
center_of_mass = list("x"=16, "y"=16)
w_class = ITEMSIZE_SMALL
- force = 1
+ damage_force = 1
/obj/item/reagent_containers/food/snacks/Initialize(mapload)
. = ..()
diff --git a/code/modules/gamemaster/actions/electrified_door.dm b/code/modules/gamemaster/actions/electrified_door.dm
index 213c0c02928..efd0357a4e0 100644
--- a/code/modules/gamemaster/actions/electrified_door.dm
+++ b/code/modules/gamemaster/actions/electrified_door.dm
@@ -63,7 +63,7 @@
if(!chosen_door || !chosen_door.arePowerSystemsOn())
return
chosen_door.visible_message("\The [chosen_door]'s hydraulics detonate!")
- chosen_door.fragmentate(get_turf(chosen_door), rand(5, 10), rand(3, 5), list(/obj/item/projectile/bullet/pellet/fragment/tank/small))
+ chosen_door.fragmentate(get_turf(chosen_door), rand(5, 10), rand(3, 5), list(/obj/projectile/bullet/pellet/fragment/tank/small))
explosion(get_turf(chosen_door),-1,-1,2,3)
chosen_door.lock()
diff --git a/code/modules/holidays/halloween_loadout_masquarade.dm b/code/modules/holidays/halloween_loadout_masquarade.dm
index a1e5e3fe862..46a5ed400aa 100644
--- a/code/modules/holidays/halloween_loadout_masquarade.dm
+++ b/code/modules/holidays/halloween_loadout_masquarade.dm
@@ -1,19 +1,19 @@
#define STD_DEF(what) \
- name = what; \
- desc = "A costume of unknown origin."; \
- w_class = WEIGHT_CLASS_SMALL; \
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0); \
- atom_flags = PHORONGUARD; \
- inv_hide_flags = HIDEHOLSTER|HIDEFACE|BLOCKHAIR; \
+ name = what; \
+ desc = "A costume of unknown origin."; \
+ w_class = WEIGHT_CLASS_SMALL; \
+ armor_type = /datum/armor/none; \
+ atom_flags = PHORONGUARD; \
+ inv_hide_flags = HIDEHOLSTER|HIDEFACE|BLOCKHAIR; \
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE;
#define STD_DEF_NON_HIDING(what) \
- name = what; \
- desc = "A costume of unknown origin."; \
- w_class = WEIGHT_CLASS_SMALL; \
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0); \
- atom_flags = PHORONGUARD; \
- inv_hide_flags = HIDEHOLSTER; \
+ name = what; \
+ desc = "A costume of unknown origin."; \
+ w_class = WEIGHT_CLASS_SMALL; \
+ armor_type = /datum/armor/none; \
+ atom_flags = PHORONGUARD; \
+ inv_hide_flags = HIDEHOLSTER; \
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE;
/**
diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm
index 4a211d951b2..eee5adbe25e 100644
--- a/code/modules/holodeck/HolodeckObjects.dm
+++ b/code/modules/holodeck/HolodeckObjects.dm
@@ -202,7 +202,7 @@
to_chat(user, "It's a holowindow, you can't dismantle it!")
else
if(W.damtype == BRUTE || W.damtype == BURN)
- hit(W.force)
+ hit(W.damage_force)
if(health <= 7)
anchored = 0
update_nearby_icons()
@@ -225,7 +225,7 @@
return
if(src.density && istype(I, /obj/item) && !istype(I, /obj/item/card))
- var/aforce = I.force
+ var/aforce = I.damage_force
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
visible_message("[src] was hit by [I].")
if(I.damtype == BRUTE || I.damtype == BURN)
@@ -278,7 +278,7 @@
SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_melee.dmi',
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_melee.dmi',
)
- force = 3.0
+ damage_force = 3.0
throw_speed = 1
throw_range = 5
throw_force = 0
@@ -309,13 +309,13 @@
return
active = !active
if (active)
- force = 30
+ damage_force = 30
item_state = "[icon_state]_blade"
w_class = ITEMSIZE_LARGE
playsound(src, 'sound/weapons/saberon.ogg', 50, 1)
to_chat(user, "[src] is now active.")
else
- force = 3
+ damage_force = 3
item_state = "[icon_state]"
w_class = ITEMSIZE_SMALL
playsound(src, 'sound/weapons/saberoff.ogg', 50, 1)
@@ -387,7 +387,7 @@
/obj/structure/holohoop/CanAllowThrough(atom/movable/mover, turf/target)
if (istype(mover,/obj/item) && mover.throwing)
var/obj/item/I = mover
- if(istype(I, /obj/item/projectile))
+ if(istype(I, /obj/projectile))
return TRUE
if(prob(50))
I.forceMove(loc)
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index d65650cb3f3..7eea3a2d329 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -58,7 +58,7 @@
if(reagents.total_volume > 0)
bitesize = 1+round(reagents.total_volume / 2, 1)
if(seed.get_trait(TRAIT_STINGS))
- force = 1
+ damage_force = 1
catalogue_data = seed.catalog_data_grown
/obj/item/reagent_containers/food/snacks/grown/update_desc()
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 47631d82ef6..b90c5aa4cdc 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -736,7 +736,7 @@
product.set_light(get_trait(TRAIT_BIOLUM), l_color = clr)
if(get_trait(TRAIT_STINGS))
- product.force = 1
+ product.damage_force = 1
//Handle spawning in living, mobile products (like dionaea).
if(istype(product,/mob/living))
diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm
index af0a31b1928..f17c16e2099 100644
--- a/code/modules/hydroponics/spreading/spreading.dm
+++ b/code/modules/hydroponics/spreading/spreading.dm
@@ -246,8 +246,8 @@
sampled = 1
else
..()
- if(W.force)
- health -= W.force
+ if(W.damage_force)
+ health -= W.damage_force
check_health()
//handles being overrun by vines - note that attacker_parent may be null in some cases
diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm
index ab52ac003e2..49d5b2e1a17 100644
--- a/code/modules/hydroponics/trays/tray.dm
+++ b/code/modules/hydroponics/trays/tray.dm
@@ -200,22 +200,22 @@
check_health()
update_icon()
-/obj/machinery/portable_atmospherics/hydroponics/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/portable_atmospherics/hydroponics/bullet_act(var/obj/projectile/Proj)
//Don't act on seeds like dionaea that shouldn't change.
if(seed && seed.get_trait(TRAIT_IMMUTABLE) > 0)
return
//Override for somatoray projectiles.
- if(istype(Proj ,/obj/item/projectile/energy/floramut)&& prob(20))
- if(istype(Proj, /obj/item/projectile/energy/floramut/gene))
- var/obj/item/projectile/energy/floramut/gene/G = Proj
+ if(istype(Proj ,/obj/projectile/energy/floramut)&& prob(20))
+ if(istype(Proj, /obj/projectile/energy/floramut/gene))
+ var/obj/projectile/energy/floramut/gene/G = Proj
if(seed)
seed = seed.diverge_mutate_gene(G.gene, get_turf(loc)) //get_turf just in case it's not in a turf.
else
mutate(1)
return
- else if(istype(Proj ,/obj/item/projectile/energy/florayield) && prob(20))
+ else if(istype(Proj ,/obj/projectile/energy/florayield) && prob(20))
yield_mod = min(10,yield_mod+rand(1,2))
return
@@ -565,11 +565,11 @@
update_icon()
return
- else if(O.force && seed)
+ else if(O.damage_force && seed)
user.setClickCooldown(user.get_attack_speed(O))
user.visible_message("\The [seed.display_name] has been attacked by [user] with \the [O]!")
if(!dead)
- health -= O.force
+ health -= O.damage_force
check_health()
return
diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm
index 86de480d08d..6a00795a89d 100644
--- a/code/modules/hydroponics/trays/tray_tools.dm
+++ b/code/modules/hydroponics/trays/tray_tools.dm
@@ -15,7 +15,7 @@
desc = "An old pair of trimmers with a pretty dull blade. You would probably have a hard time cutting anything but plants with it."
icon_state = "hedget"
item_state = "hedget"
- force = 7 //One point extra than standard wire cutters.
+ damage_force = 7 //One point extra than standard wire cutters.
/obj/item/analyzer/plant_analyzer
name = "plant analyzer"
diff --git a/code/modules/instruments/instruments/item.dm b/code/modules/instruments/instruments/item.dm
index beb9b92f93f..fb57de6ed60 100644
--- a/code/modules/instruments/instruments/item.dm
+++ b/code/modules/instruments/instruments/item.dm
@@ -1,7 +1,7 @@
//copy pasta of the space piano, don't hurt me -Pete
/obj/item/instrument
name = "generic instrument"
- force = 10
+ damage_force = 10
// max_integrity = 100
// resistance_flags = FLAMMABLE
icon = 'icons/obj/musician.dmi'
@@ -128,7 +128,7 @@
desc = "Makes all your shredding needs possible."
icon_state = "eguitar"
item_state = "eguitar"
- force = 12
+ damage_force = 12
attack_verb = list("played metal on", "shredded", "crashed", "smashed")
hitsound = 'sound/weapons/stringsmash.ogg'
allowed_instrument_ids = "eguitar"
@@ -159,7 +159,7 @@
desc = "Things are about to get spooky!"
icon_state = "trumpet"
item_state = "trombone"
- force = 0
+ damage_force = 0
attack_verb = list("played","jazzed","trumpeted","mourned","dooted","spooked")
/*
@@ -184,7 +184,7 @@
desc = "This spooky sound will be sure to leave mortals in bones."
icon_state = "saxophone"
item_state = "saxophone"
- force = 0
+ damage_force = 0
attack_verb = list("played","jazzed","saxxed","mourned","dooted","spooked")
/*
@@ -209,7 +209,7 @@
desc = "A skeleton's favorite instrument. Apply directly on the mortals."
icon_state = "trombone"
item_state = "trombone"
- force = 0
+ damage_force = 0
attack_verb = list("played","jazzed","tromboned","mourned","dooted","spooked")
/*
@@ -225,7 +225,7 @@
/obj/item/instrument/recorder
name = "recorder"
desc = "Just like in school, playing ability and all."
- force = 5
+ damage_force = 5
icon_state = "recorder"
item_state = "recorder"
allowed_instrument_ids = "recorder"
@@ -237,7 +237,7 @@
item_state = "harmonica"
allowed_instrument_ids = "harmonica"
// slot_flags = ITEM_SLOT_MASK
- force = 5
+ damage_force = 5
w_class = WEIGHT_CLASS_SMALL
// actions_types = list(/datum/action/item_action/instrument)
@@ -268,7 +268,7 @@
attack_verb = list("beautifully honks")
allowed_instrument_ids = list("honk", "bikehorn")
w_class = WEIGHT_CLASS_TINY
- force = 0
+ damage_force = 0
throw_speed = 3
throw_range = 15
hitsound = 'sound/items/bikehorn.ogg'
diff --git a/code/modules/maps/away_missions/archive/stationCollision.dm b/code/modules/maps/away_missions/archive/stationCollision.dm
index 0c83698a6e7..3530f63eb5b 100644
--- a/code/modules/maps/away_missions/archive/stationCollision.dm
+++ b/code/modules/maps/away_missions/archive/stationCollision.dm
@@ -66,7 +66,7 @@ obj/item/gun/energy/laser/retro/sc_retro
name ="retro laser"
icon_state = "retro"
desc = "An older model of the basic lasergun, no longer used by NanoTrasen's security or military forces."
- projectile_type = "/obj/item/projectile/practice"
+ projectile_type = "/obj/projectile/practice"
//clumsy_check = 0 //No sense in having a harmless gun blow up in the clowns face
//Syndicate silenced pistol. This definition is not necessary, it's just habit.
diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm
index a56159bc1d1..b8c2ee6715c 100644
--- a/code/modules/materials/material_sheets.dm
+++ b/code/modules/materials/material_sheets.dm
@@ -1,7 +1,7 @@
// Stacked resources. They use a material datum for a lot of inherited values.
// If you're adding something here, make sure to add it to fifty_spawner_mats.dm as well
/obj/item/stack/material
- force = 5
+ damage_force = 5
throw_force = 5
w_class = ITEMSIZE_NORMAL
throw_speed = 3
@@ -368,10 +368,10 @@
plank_type = /obj/item/stack/material/wood/hard
/obj/item/stack/material/log/attackby(var/obj/item/W, var/mob/user)
- if(!istype(W) || W.force <= 0)
+ if(!istype(W) || W.damage_force <= 0)
return ..()
if(W.sharp && W.edge)
- var/time = (3 SECONDS / max(W.force / 10, 1)) * W.tool_speed
+ var/time = (3 SECONDS / max(W.damage_force / 10, 1)) * W.tool_speed
user.setClickCooldown(time)
if(do_after(user, time, src) && use(1))
to_chat(user, "You cut up a log into planks.")
diff --git a/code/modules/mining/kinetic_crusher.dm b/code/modules/mining/kinetic_crusher.dm
index 294f0b33704..56dfa221d7e 100644
--- a/code/modules/mining/kinetic_crusher.dm
+++ b/code/modules/mining/kinetic_crusher.dm
@@ -10,7 +10,7 @@
name = "proto-kinetic crusher"
desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club. \
While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna."
- force = 0 //You can't hit stuff unless wielded
+ damage_force = 0 //You can't hit stuff unless wielded
w_class = WEIGHT_CLASS_BULKY
slot_flags = SLOT_BACK
throw_force = 5
@@ -49,7 +49,7 @@
/obj/item/kinetic_crusher/cyborg //probably give this a unique sprite later
desc = "An integrated version of the standard kinetic crusher with a grinded down axe head to dissuade mis-use against crewmen. Deals damage equal to the standard crusher against creatures, however."
- force = 10 //wouldn't want to give a borg a 20 brute melee weapon unemagged now would we
+ damage_force = 10 //wouldn't want to give a borg a 20 brute melee weapon unemagged now would we
detonation_damage = 60
wielded = 1
@@ -87,8 +87,8 @@
/obj/item/kinetic_crusher/examine(mob/living/user)
. = ..()
- . += "Mark a large creature with the destabilizing force, then hit them in melee to do [force + detonation_damage] damage."
- . += "Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage]."
+ . += "Mark a large creature with the destabilizing force, then hit them in melee to do [damage_force + detonation_damage] damage."
+ . += "Does [damage_force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [damage_force + detonation_damage]."
/*
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
@@ -145,7 +145,7 @@
var/turf/proj_turf = user.loc
if(!isturf(proj_turf))
return
- var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf)
+ var/obj/projectile/destabilizer/D = new /obj/projectile/destabilizer(proj_turf)
/*
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
@@ -179,7 +179,7 @@
C.total_damage += target_health - L.health //we did some damage, but let's not assume how much we did
new /obj/effect/temp_visual/kinetic_blast(get_turf(L))
var/backstab_dir = get_dir(user, L)
- var/def_check = L.run_mob_armor(type = "bomb")
+ var/def_check = L.legacy_mob_armor(type = "bomb")
var/detonation_damage = src.detonation_damage * (!ishuman(L)? 1 : human_damage_nerf)
var/backstab_bonus = src.backstab_bonus * (!ishuman(L)? 1 : human_backstab_nerf)
var/thrown_bonus = thrown? (src.thrown_bonus * (!ishuman(L)? 1 : human_damage_nerf)) : 0
@@ -257,7 +257,7 @@
var/turf/proj_turf = owner.loc // destabilizer bolt, ignoring cooldown
if(!isturf(proj_turf))
return
- var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf)
+ var/obj/projectile/destabilizer/D = new /obj/projectile/destabilizer(proj_turf)
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
T.on_projectile_fire(D, owner)
@@ -291,7 +291,7 @@
)
item_state = "machete"
w_class = WEIGHT_CLASS_SMALL
- force = 15
+ damage_force = 15
requires_wield = FALSE
charge_overlay = FALSE
// yeah yeah buff but rp mobs are tough as fuck.
@@ -302,23 +302,23 @@
update_item_state = FALSE
//destablizing force
-/obj/item/projectile/destabilizer
+/obj/projectile/destabilizer
name = "destabilizing force"
icon_state = "pulse1"
nodamage = TRUE
damage = 0 //We're just here to mark people. This is still a melee weapon.
damage_type = BRUTE
- check_armour = "bomb"
+ damage_flag = ARMOR_BOMB
range = 6
accuracy = INFINITY // NO.
// log_override = TRUE
var/obj/item/kinetic_crusher/hammer_synced
-/obj/item/projectile/destabilizer/Destroy()
+/obj/projectile/destabilizer/Destroy()
hammer_synced = null
return ..()
-/obj/item/projectile/destabilizer/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/destabilizer/on_hit(atom/target, blocked = FALSE)
if(isliving(target))
var/mob/living/L = target
L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK, hammer_synced)
@@ -372,7 +372,7 @@
H.trophies -= src
return TRUE
/obj/item/crusher_trophy/proc/on_melee_hit(mob/living/target, mob/living/user) //the target and the user
-/obj/item/crusher_trophy/proc/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user) //the projectile fired and the user
+/obj/item/crusher_trophy/proc/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user) //the projectile fired and the user
/obj/item/crusher_trophy/proc/on_mark_application(mob/living/target, datum/status_effect/crusher_mark/mark, had_mark) //the target, the mark applied, and if the target had a mark before
/obj/item/crusher_trophy/proc/on_mark_detonation(mob/living/target, mob/living/user) //the target and the user
//goliath
@@ -419,7 +419,7 @@
bonus_value = 5
/obj/item/crusher_trophy/blaster_tubes/magma_wing/effect_desc()
return "mark detonation to make the next destabilizer shot deal [bonus_value] damage"
-/obj/item/crusher_trophy/blaster_tubes/magma_wing/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user)
+/obj/item/crusher_trophy/blaster_tubes/magma_wing/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user)
if(deadly_shot)
marker.name = "heated [marker.name]"
marker.icon_state = "lava"
@@ -496,14 +496,14 @@
/obj/item/crusher_trophy/demon_claws/add_to(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
- H.force += bonus_value * 0.2
+ H.damage_force += bonus_value * 0.2
H.detonation_damage += bonus_value * 0.8
if(requires_wield)
AddComponent(/datum/component/two_handed, force_wielded=(20 + bonus_value * 0.2))
/obj/item/crusher_trophy/demon_claws/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
- H.force -= bonus_value * 0.2
+ H.damage_force -= bonus_value * 0.2
H.detonation_damage -= bonus_value * 0.8
if(requires_wield)
AddComponent(/datum/component/two_handed, force_wielded=20)
@@ -524,7 +524,7 @@
var/deadly_shot = FALSE
/obj/item/crusher_trophy/blaster_tubes/effect_desc()
return "mark detonation to make the next destabilizer shot deal [bonus_value] damage but move slower"
-/obj/item/crusher_trophy/blaster_tubes/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user)
+/obj/item/crusher_trophy/blaster_tubes/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user)
if(deadly_shot)
marker.name = "deadly [marker.name]"
marker.icon_state = "chronobolt"
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index d4b3459749b..016e6b2faf8 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -15,7 +15,7 @@
desc = "The most basic of mining drills, for short excavations and small mineral extractions."
icon = 'icons/obj/items.dmi'
slot_flags = SLOT_BELT
- force = 15.0
+ damage_force = 15.0
throw_force = 4.0
icon_state = "pickaxe"
item_state = "jackhammer"
@@ -123,7 +123,7 @@
name = "icepick"
desc = "A simple icepick, for all your digging, climbing, and lobotomizing needs."
slot_flags = SLOT_BELT
- force = 12
+ damage_force = 12
throw_force = 15 //Discount shuriken.
icon_state = "icepick"
item_state = "spickaxe" //im lazy fuck u
@@ -176,7 +176,7 @@
//visible_message("[usr] starts \the [src] up with a loud grinding!")
attack_verb = list("shredded", "ripped", "torn")
playsound(src, 'sound/weapons/chainsaw_startup.ogg',40,1)
- force = 15
+ damage_force = 15
sharp = 1
active = 1
update_icon()
@@ -188,7 +188,7 @@
to_chat(user, "You switch the gas nozzle on the drill, turning it off.")
attack_verb = list("bluntly hit", "beat", "knocked")
playsound(user, 'sound/weapons/chainsaw_turnoff.ogg',40,1)
- force = 3
+ damage_force = 3
edge = 0
sharp = 0
active = 0
@@ -269,7 +269,7 @@
icon = 'icons/obj/items.dmi'
icon_state = "shovel"
slot_flags = SLOT_BELT
- force = 8.0
+ damage_force = 8.0
throw_force = 4.0
item_state = "shovel"
w_class = ITEMSIZE_NORMAL
@@ -285,7 +285,7 @@
desc = "A wicked tool that cleaves through dirt just as easily as it does flesh. The design was styled after ancient tribal designs."
icon = 'icons/obj/mining.dmi'
icon_state = "shovel_bone"
- force = 15
+ damage_force = 15
throw_force = 12
tool_speed = 0.7
attack_verb = list("slashed", "impaled", "stabbed", "sliced")
@@ -296,7 +296,7 @@
desc = "A small tool for digging and moving dirt."
icon_state = "spade"
item_state = "spade"
- force = 5.0
+ damage_force = 5.0
throw_force = 7.0
w_class = ITEMSIZE_SMALL
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index fd6bb3f90d1..30c33be412d 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -286,7 +286,7 @@
new oretype(src)
resources[ore] = 0
-/turf/simulated/mineral/bullet_act(var/obj/item/projectile/Proj) // only emitters for now
+/turf/simulated/mineral/bullet_act(var/obj/projectile/Proj) // only emitters for now
. = ..()
if(Proj.excavation_amount)
var/newDepth = excavation_level + Proj.excavation_amount // Used commonly below
diff --git a/code/modules/mining/resonator.dm b/code/modules/mining/resonator.dm
index 7d96bd50f77..fe7b6994581 100644
--- a/code/modules/mining/resonator.dm
+++ b/code/modules/mining/resonator.dm
@@ -8,7 +8,7 @@
origin_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3)
desc = "A handheld device that creates small fields of energy that resonate until they detonate, crushing rock. It can also be activated without a target to create a field at the user's location, to act as a delayed time trap. It's more effective in low temperature."
w_class = ITEMSIZE_NORMAL
- force = 8
+ damage_force = 8
throw_force = 10
var/cooldown = 0
var/fieldsactive = 0
diff --git a/code/modules/mining/resonator_vr.dm b/code/modules/mining/resonator_vr.dm
index 4083bf07b89..8fb0d5f7e31 100644
--- a/code/modules/mining/resonator_vr.dm
+++ b/code/modules/mining/resonator_vr.dm
@@ -12,7 +12,7 @@
origin_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3)
desc = "A handheld device that creates small fields of energy that resonate until they detonate, crushing rock. It can also be activated without a target to create a field at the user's location, to act as a delayed time trap. It's more effective in low temperature."
w_class = ITEMSIZE_NORMAL
- force = 8
+ damage_force = 8
throw_force = 10
var/cooldown = 0
var/fieldsactive = 0
diff --git a/code/modules/mob/defense.dm b/code/modules/mob/defense.dm
new file mode 100644
index 00000000000..fae10ea95e3
--- /dev/null
+++ b/code/modules/mob/defense.dm
@@ -0,0 +1,83 @@
+/**
+ * calculates the resulting damage from an attack, taking into account our armor and soak
+ *
+ * @params
+ * * damage - raw damage
+ * * tier - penetration / attack tier
+ * * flag - armor flag as seen in [code/__DEFINES/combat/armor.dm]
+ * * mode - damage_mode
+ * * attack_type - (optional) attack type flags from [code/__DEFINES/combat/attack_types.dm]
+ * * weapon - (optional) attacking /obj/item for melee or thrown, /obj/projectile for ranged, /mob for unarmed
+ * * target_zone - where it's impacting
+ *
+ * @return args as list.
+ */
+/mob/proc/check_mob_armor(damage, tier, flag, mode, attack_type, datum/weapon, target_zone)
+ var/list/returned = check_armor(damage, tier, flag, mode, attack_type, weapon)
+ damage = returned[1]
+ mode = returned[4]
+ return args.Copy()
+
+/**
+ * runs armor against an incoming attack
+ * this proc can have side effects
+ *
+ * @params
+ * * damage - raw damage
+ * * tier - penetration / attack tier
+ * * flag - armor flag as seen in [code/__DEFINES/combat/armor.dm]
+ * * mode - damage_mode
+ * * attack_type - (optional) attack type flags from [code/__DEFINES/combat/attack_types.dm]
+ * * weapon - (optional) attacking /obj/item for melee or thrown, /obj/projectile for ranged, /mob for unarmed
+ * * target_zone - where it's impacting
+ *
+ * @return args as list.
+ */
+/mob/proc/run_mob_armor(damage, tier, flag, mode, attack_type, datum/weapon, target_zone)
+ var/list/returned = run_armor(damage, tier, flag, mode, attack_type, weapon)
+ damage = returned[1]
+ mode = returned[4]
+ return args.Copy()
+
+/**
+ * check overall armor
+ * does not support modifying damage modes.
+ *
+ * @params
+ * * damage - raw damage
+ * * tier - penetration / attack tier
+ * * flag - armor flag as seen in [code/__DEFINES/combat/armor.dm]
+ * * mode - damage_mode
+ * * attack_type - (optional) attack type flags from [code/__DEFINES/combat/attack_types.dm]
+ * * weapon - (optional) attacking /obj/item for melee or thrown, /obj/projectile for ranged, /mob for unarmed
+ * * target_zone - where it's impacting
+ *
+ * @return args as list.
+ */
+/mob/proc/check_overall_armor(damage, tier, flag, mode, attack_type, datum/weapon, target_zone)
+ var/list/returned = check_armor(damage, tier, flag, mode, attack_type, weapon)
+ damage = returned[1]
+ mode = returned[4]
+ return args.Copy()
+
+/**
+ * runs overall armor against an incoming attack
+ * this proc can have side effects
+ * does not support modifying damage modes.
+ *
+ * @params
+ * * damage - raw damage
+ * * tier - penetration / attack tier
+ * * flag - armor flag as seen in [code/__DEFINES/combat/armor.dm]
+ * * mode - damage_mode
+ * * attack_type - (optional) attack type flags from [code/__DEFINES/combat/attack_types.dm]
+ * * weapon - (optional) attacking /obj/item for melee or thrown, /obj/projectile for ranged, /mob for unarmed
+ * * target_zone - where it's impacting
+ *
+ * @return args as list.
+ */
+/mob/proc/run_overall_armor(damage, tier, flag, mode, attack_type, datum/weapon, target_zone)
+ var/list/returned = run_armor(damage, tier, flag, mode, attack_type, weapon)
+ damage = returned[1]
+ mode = returned[4]
+ return args.Copy()
diff --git a/code/modules/mob/grab.dm b/code/modules/mob/grab.dm
index e34262f400f..09cc18eb3d7 100644
--- a/code/modules/mob/grab.dm
+++ b/code/modules/mob/grab.dm
@@ -543,7 +543,7 @@
var/damage = 20
var/obj/item/clothing/hat = attacker.head
if(istype(hat))
- damage += hat.force * 3
+ damage += hat.damage_force * 3
var/armor = target.run_armor_check(BP_HEAD, "melee")
var/soaked = target.get_armor_soak(BP_HEAD, "melee")
diff --git a/code/modules/mob/inventory/helpers.dm b/code/modules/mob/inventory/helpers.dm
index 3aa47bd0119..ae6ea95374d 100644
--- a/code/modules/mob/inventory/helpers.dm
+++ b/code/modules/mob/inventory/helpers.dm
@@ -1,3 +1,5 @@
+//* these call other procs in external.dm *//
+
/**
* dels something or says "x is stuck to your hand"
*
diff --git a/code/modules/mob/inventory/inventory.dm b/code/modules/mob/inventory/inventory.dm
index c78dd5069ac..5575fe2da38 100644
--- a/code/modules/mob/inventory/inventory.dm
+++ b/code/modules/mob/inventory/inventory.dm
@@ -1,3 +1,35 @@
+/**
+ * mob inventory data goes in here.
+ */
+/datum/inventory
+ //? basics
+ /// owning mob
+ var/mob/owner
+
+ //? slots
+
+ //? caches
+
+/datum/inventory/New(mob/M)
+ if(!istype(M))
+ CRASH("no mob")
+ owner = M
+
+/datum/inventory/Destroy()
+ owner = null
+ return ..()
+
+/**
+ * returns list() of items with body_cover_flags
+ */
+/datum/inventory/proc/items_that_cover(cover_flags)
+ if(cover_flags == NONE)
+ return list()
+ . = list()
+ for(var/obj/item/I as anything in owner.get_equipped_items())
+ if(I.body_cover_flags & cover_flags)
+ . += I
+
/**
* handles the insertion
* item can be moved or not moved before calling
@@ -50,80 +82,6 @@
else
CRASH("Invalid abstract slot [slot]")
-
-// So why do all of these return true if the item is null?
-// Semantically, transferring/dropping nothing always works
-// This lets us tidy up other pieces of code by not having to typecheck everything.
-// However, if you do pass in an invalid object instead of null, the procs will fail or pass
-// depending on needed behavior.
-// Use the helpers when you can, it's easier for everyone and makes replacing behaviors later easier.
-
-// This logic is actually **stricter** than the previous logic, which was "if item doesn't exist, it always works"
-
-/**
- * drops an item to ground
- *
- * semantically returns true if the thing is no longer in our inventory after our call, whether or not we dropped it
- * if you require better checks, check if something is in inventory first.
- *
- * if the item is null, this returns true
- * if an item is not in us, this returns true
- */
-/mob/proc/drop_item_to_ground(obj/item/I, flags, mob/user = src)
- // destroyed IS allowed to call these procs
- if(I && QDELETED(I) && !QDESTROYING(I))
- to_chat(user, SPAN_DANGER("A deleted item [I] was used in drop_item_to_ground(). Report the entire line to coders. Debugging information: [I] ([REF(I)]) flags [flags] user [user]"))
- to_chat(user, SPAN_DANGER("Drop item to ground will now proceed, ignoring the bugged state. Errors may ensue."))
- else if(!is_in_inventory(I))
- return TRUE
- return _unequip_item(I, flags | INV_OP_DIRECTLY_DROPPING, drop_location(), user)
-
-/**
- * transfers an item somewhere
- * newloc MUST EXIST, use transfer_item_to_nullspace otherwise
- *
- * semantically returns true if we transferred something from our inventory to newloc in the call
- *
- * if the item is null, this returns true
- * if an item is not in us, this crashes
- */
-/mob/proc/transfer_item_to_loc(obj/item/I, newloc, flags, mob/user)
- if(!I)
- return TRUE
- ASSERT(newloc)
- if(!is_in_inventory(I))
- return FALSE
- return _unequip_item(I, flags | INV_OP_DIRECTLY_DROPPING, newloc, user)
-
-/**
- * transfers an item into nullspace
- *
- * semantically returns true if we transferred something from our inventory to null in the call
- *
- * if the item is null, this returns true
- * if an item is not in us, this crashes
- */
-/mob/proc/transfer_item_to_nullspace(obj/item/I, flags, mob/user)
- if(!I)
- return TRUE
- if(!is_in_inventory(I))
- return FALSE
- return _unequip_item(I, flags | INV_OP_DIRECTLY_DROPPING, null, user)
-
-/**
- * removes an item from inventory. does NOT move it.
- * item MUST be qdel'd or moved after this if it returns TRUE!
- *
- * semantically returns true if the passed item is no longer in our inventory after the call
- *
- * if the item is null, ths returns true
- * if an item is not in us, this returns true
- */
-/mob/proc/temporarily_remove_from_inventory(obj/item/I, flags, mob/user)
- if(!is_in_inventory(I))
- return TRUE
- return _unequip_item(I, flags | INV_OP_DIRECTLY_DROPPING, FALSE, user)
-
/**
* handles internal logic of unequipping an item
*
@@ -260,110 +218,6 @@
return TRUE
-/**
- * equips an item to a slot if possible
- *
- * @params
- * - I - item
- * - slot - the slot
- * - flags - inventory operation hint bitfield, see defines
- * - user - the user doing the action, if any. defaults to ourselves.
- *
- * @return TRUE/FALSE
- */
-/mob/proc/equip_to_slot_if_possible(obj/item/I, slot, flags, mob/user)
- return _equip_item(I, flags, slot, user)
-
-/**
- * equips an item to a slot if possible
- * item is deleted on failure
- *
- * @params
- * - I - item
- * - slot - the slot
- * - flags - inventory operation hint bitfield, see defines
- * - user - the user doing the action, if any. defaults to ourselves.
- *
- * @return TRUE/FALSE
- */
-/mob/proc/equip_to_slot_or_del(obj/item/I, slot, flags, mob/user)
- . = equip_to_slot_if_possible(I, slot, flags, user)
- if(!.)
- qdel(I)
-/**
- * automatically equips to the best inventory (non storage!) slot we can find for an item, if possible
- * this proc is silent for the sub-calls by default to prevent spam.
- *
- * @params
- * - I - item
- * - flags - inventory operation hint bitfield, see defines
- * - user - the user doing the action, if any. defaults to ourselves.
- *
- * @return TRUE/FALSE
- */
-/mob/proc/equip_to_appropriate_slot(obj/item/I, flags, mob/user)
- for(var/slot in GLOB.slot_equipment_priority)
- if(equip_to_slot_if_possible(I, slot, flags | INV_OP_SUPPRESS_WARNING, user))
- return TRUE
- if(!(flags & INV_OP_SUPPRESS_WARNING))
- to_chat(user, user == src? SPAN_WARNING("You can't find somewhere to equip [I] to!") : SPAN_WARNING("[src] has nowhere to equip [I] to!"))
- return FALSE
-
-/**
- * automatically equips to the best inventory (non storage!) slot we can find for an item, if possible
- *
- * item is deleted on failure.
- *
- * @params
- * - I - item
- * - flags - inventory operation hint bitfield, see defines
- * - user - the user doing the action, if any. defaults to ourselves.
- *
- * @return TRUE/FALSE
- */
-
-/mob/proc/equip_to_appropriate_slot_or_del(obj/item/I, flags, mob/user)
- if(!equip_to_appropriate_slot(I, flags, user))
- qdel(I)
-
-/**
- * forcefully equips an item to a slot
- * kicks out conflicting items if possible
- *
- * This CAN fail, so listen to return value
- * Why? YOU MIGHT EQUIP TO A MOB WITHOUT A CERTAIN SLOT!
- *
- * @params
- * - I - item
- * - slot - slot to equip to
- * - flags - inventory operation hint bitfield, see defines
- * - user - the user doing the action, if any. defaults to ourselves.
- *
- * @return TRUE/FALSE
- */
-/mob/proc/force_equip_to_slot(obj/item/I, slot, flags, mob/user)
- return _equip_item(I, flags | INV_OP_FORCE, slot, user)
-
-/**
- * forcefully equips an item to a slot
- * kicks out conflicting items if possible
- * if still failing, item is deleted
- *
- * this can fail, so listen to return values.
- * @params
- * - I - item
- * - slot - slot to equip to
- * - flags - inventory operation hint bitfield, see defines
- * - user - the user doing the action, if any. defaults to ourselves.
- *
- * @return TRUE/FALSE
- */
-/mob/proc/force_equip_to_slot_or_del(obj/item/I, slot, flags, mob/user)
- if(!force_equip_to_slot(I, slot, flags, user))
- qdel(I)
- return FALSE
- return TRUE
-
/**
* checks if we can equip an item to a slot
*
diff --git a/code/modules/mob/inventory/mobs.dm b/code/modules/mob/inventory/mobs.dm
new file mode 100644
index 00000000000..17ed1b0213c
--- /dev/null
+++ b/code/modules/mob/inventory/mobs.dm
@@ -0,0 +1,185 @@
+//? init
+
+/mob/proc/init_inventory()
+ return
+
+//? equip
+
+/**
+ * equips an item to a slot if possible
+ *
+ * @params
+ * - I - item
+ * - slot - the slot
+ * - flags - inventory operation hint bitfield, see defines
+ * - user - the user doing the action, if any. defaults to ourselves.
+ *
+ * @return TRUE/FALSE
+ */
+/mob/proc/equip_to_slot_if_possible(obj/item/I, slot, flags, mob/user)
+ return _equip_item(I, flags, slot, user)
+
+/**
+ * equips an item to a slot if possible
+ * item is deleted on failure
+ *
+ * @params
+ * - I - item
+ * - slot - the slot
+ * - flags - inventory operation hint bitfield, see defines
+ * - user - the user doing the action, if any. defaults to ourselves.
+ *
+ * @return TRUE/FALSE
+ */
+/mob/proc/equip_to_slot_or_del(obj/item/I, slot, flags, mob/user)
+ . = equip_to_slot_if_possible(I, slot, flags, user)
+ if(!.)
+ qdel(I)
+/**
+ * automatically equips to the best inventory (non storage!) slot we can find for an item, if possible
+ * this proc is silent for the sub-calls by default to prevent spam.
+ *
+ * @params
+ * - I - item
+ * - flags - inventory operation hint bitfield, see defines
+ * - user - the user doing the action, if any. defaults to ourselves.
+ *
+ * @return TRUE/FALSE
+ */
+/mob/proc/equip_to_appropriate_slot(obj/item/I, flags, mob/user)
+ for(var/slot in GLOB.slot_equipment_priority)
+ if(equip_to_slot_if_possible(I, slot, flags | INV_OP_SUPPRESS_WARNING, user))
+ return TRUE
+ if(!(flags & INV_OP_SUPPRESS_WARNING))
+ to_chat(user, user == src? SPAN_WARNING("You can't find somewhere to equip [I] to!") : SPAN_WARNING("[src] has nowhere to equip [I] to!"))
+ return FALSE
+
+/**
+ * automatically equips to the best inventory (non storage!) slot we can find for an item, if possible
+ *
+ * item is deleted on failure.
+ *
+ * @params
+ * - I - item
+ * - flags - inventory operation hint bitfield, see defines
+ * - user - the user doing the action, if any. defaults to ourselves.
+ *
+ * @return TRUE/FALSE
+ */
+
+/mob/proc/equip_to_appropriate_slot_or_del(obj/item/I, flags, mob/user)
+ if(!equip_to_appropriate_slot(I, flags, user))
+ qdel(I)
+
+/**
+ * forcefully equips an item to a slot
+ * kicks out conflicting items if possible
+ *
+ * This CAN fail, so listen to return value
+ * Why? YOU MIGHT EQUIP TO A MOB WITHOUT A CERTAIN SLOT!
+ *
+ * @params
+ * - I - item
+ * - slot - slot to equip to
+ * - flags - inventory operation hint bitfield, see defines
+ * - user - the user doing the action, if any. defaults to ourselves.
+ *
+ * @return TRUE/FALSE
+ */
+/mob/proc/force_equip_to_slot(obj/item/I, slot, flags, mob/user)
+ return _equip_item(I, flags | INV_OP_FATAL, slot, user)
+
+/**
+ * forcefully equips an item to a slot
+ * kicks out conflicting items if possible
+ * if still failing, item is deleted
+ *
+ * this can fail, so listen to return values.
+ * @params
+ * - I - item
+ * - slot - slot to equip to
+ * - flags - inventory operation hint bitfield, see defines
+ * - user - the user doing the action, if any. defaults to ourselves.
+ *
+ * @return TRUE/FALSE
+ */
+/mob/proc/force_equip_to_slot_or_del(obj/item/I, slot, flags, mob/user)
+ if(!force_equip_to_slot(I, slot, flags, user))
+ qdel(I)
+ return FALSE
+ return TRUE
+
+//? drop
+
+// So why do all of these return true if the item is null?
+// Semantically, transferring/dropping nothing always works
+// This lets us tidy up other pieces of code by not having to typecheck everything.
+// However, if you do pass in an invalid object instead of null, the procs will fail or pass
+// depending on needed behavior.
+// Use the helpers when you can, it's easier for everyone and makes replacing behaviors later easier.
+
+// This logic is actually **stricter** than the previous logic, which was "if item doesn't exist, it always works"
+
+/**
+ * drops an item to ground
+ *
+ * semantically returns true if the thing is no longer in our inventory after our call, whether or not we dropped it
+ * if you require better checks, check if something is in inventory first.
+ *
+ * if the item is null, this returns true
+ * if an item is not in us, this returns true
+ */
+/mob/proc/drop_item_to_ground(obj/item/I, flags, mob/user = src)
+ // destroyed IS allowed to call these procs
+ if(I && QDELETED(I) && !QDESTROYING(I))
+ to_chat(user, SPAN_DANGER("A deleted item [I] was used in drop_item_to_ground(). Report the entire line to coders. Debugging information: [I] ([REF(I)]) flags [flags] user [user]"))
+ to_chat(user, SPAN_DANGER("Drop item to ground will now proceed, ignoring the bugged state. Errors may ensue."))
+ else if(!is_in_inventory(I))
+ return TRUE
+ return _unequip_item(I, flags | INV_OP_DIRECTLY_DROPPING, drop_location(), user)
+
+/**
+ * transfers an item somewhere
+ * newloc MUST EXIST, use transfer_item_to_nullspace otherwise
+ *
+ * semantically returns true if we transferred something from our inventory to newloc in the call
+ *
+ * if the item is null, this returns true
+ * if an item is not in us, this crashes
+ */
+/mob/proc/transfer_item_to_loc(obj/item/I, newloc, flags, mob/user)
+ if(!I)
+ return TRUE
+ ASSERT(newloc)
+ if(!is_in_inventory(I))
+ return FALSE
+ return _unequip_item(I, flags | INV_OP_DIRECTLY_DROPPING, newloc, user)
+
+/**
+ * transfers an item into nullspace
+ *
+ * semantically returns true if we transferred something from our inventory to null in the call
+ *
+ * if the item is null, this returns true
+ * if an item is not in us, this crashes
+ */
+/mob/proc/transfer_item_to_nullspace(obj/item/I, flags, mob/user)
+ if(!I)
+ return TRUE
+ if(!is_in_inventory(I))
+ return FALSE
+ return _unequip_item(I, flags | INV_OP_DIRECTLY_DROPPING, null, user)
+
+/**
+ * removes an item from inventory. does NOT move it.
+ * item MUST be qdel'd or moved after this if it returns TRUE!
+ *
+ * semantically returns true if the passed item is no longer in our inventory after the call
+ *
+ * if the item is null, ths returns true
+ * if an item is not in us, this returns true
+ */
+/mob/proc/temporarily_remove_from_inventory(obj/item/I, flags, mob/user)
+ if(!is_in_inventory(I))
+ return TRUE
+ return _unequip_item(I, flags | INV_OP_DIRECTLY_DROPPING, FALSE, user)
diff --git a/code/modules/mob/living/bot/SLed209bot.dm b/code/modules/mob/living/bot/SLed209bot.dm
index 74a717e86cc..f4adefa0600 100644
--- a/code/modules/mob/living/bot/SLed209bot.dm
+++ b/code/modules/mob/living/bot/SLed209bot.dm
@@ -45,12 +45,12 @@
last_shot = world.time
- var/projectile = /obj/item/projectile/beam/stun/xeno
+ var/projectile = /obj/projectile/beam/stun/xeno
if(emagged)
- projectile = /obj/item/projectile/beam/shock
+ projectile = /obj/projectile/beam/shock
playsound(loc, emagged ? 'sound/weapons/laser3.ogg' : 'sound/weapons/Taser.ogg', 50, 1)
- var/obj/item/projectile/P = new projectile(loc)
+ var/obj/projectile/P = new projectile(loc)
P.firer = src
P.old_style_target(A)
diff --git a/code/modules/mob/living/bot/assembly.dm b/code/modules/mob/living/bot/assembly.dm
index 96fef8d80c7..ac5a2f9ee7e 100644
--- a/code/modules/mob/living/bot/assembly.dm
+++ b/code/modules/mob/living/bot/assembly.dm
@@ -1,7 +1,7 @@
/obj/item/bot_assembly
icon = 'icons/obj/bots/aibots.dmi'
w_class = WEIGHT_CLASS_NORMAL
- force = 3
+ damage_force = 3
throw_speed = 2
throw_range = 5
diff --git a/code/modules/mob/living/bot/cleanbot.dm b/code/modules/mob/living/bot/cleanbot.dm
index d593e926cb2..d7de39fe7d7 100644
--- a/code/modules/mob/living/bot/cleanbot.dm
+++ b/code/modules/mob/living/bot/cleanbot.dm
@@ -227,7 +227,7 @@
name = "proxy bucket"
icon = 'icons/obj/aibots.dmi'
icon_state = "bucket_proxy"
- force = 3.0
+ damage_force = 3.0
throw_force = 10.0
throw_speed = 2
throw_range = 5
diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm
index f741cad16fe..afd256631f0 100644
--- a/code/modules/mob/living/bot/ed209bot.dm
+++ b/code/modules/mob/living/bot/ed209bot.dm
@@ -72,12 +72,12 @@
last_shot = world.time
- var/projectile = /obj/item/projectile/beam/stun
+ var/projectile = /obj/projectile/beam/stun
if(emagged)
- projectile = /obj/item/projectile/beam
+ projectile = /obj/projectile/beam
playsound(loc, emagged ? 'sound/weapons/Laser.ogg' : 'sound/weapons/Taser.ogg', 50, 1)
- var/obj/item/projectile/P = new projectile(loc)
+ var/obj/projectile/P = new projectile(loc)
P.firer = src
P.old_style_target(A)
diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm
index 52a232169af..96915b10134 100644
--- a/code/modules/mob/living/bot/floorbot.dm
+++ b/code/modules/mob/living/bot/floorbot.dm
@@ -410,7 +410,7 @@
icon_state = "toolbox-blue"
base_icon_state = "toolbox"
skin = "blue"
- force = 3
+ damage_force = 3
throw_force = 10
throw_speed = 2
throw_range = 5
diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm
index c90b171aba1..09fa1f1ca68 100644
--- a/code/modules/mob/living/bot/secbot.dm
+++ b/code/modules/mob/living/bot/secbot.dm
@@ -225,7 +225,7 @@
if(health < curhealth && on == TRUE)
react_to_attack(user)
-/mob/living/bot/secbot/bullet_act(var/obj/item/projectile/P)
+/mob/living/bot/secbot/bullet_act(var/obj/projectile/P)
var/curhealth = health
var/mob/shooter = P.firer
. = ..()
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index a693a0084aa..66bc02c073d 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -16,10 +16,10 @@
var/weapon_sharp = is_sharp(I)
var/weapon_edge = has_edge(I)
var/hit_embed_chance = I.embed_chance
- if(prob(run_mob_armor(hit_zone, "melee"))) //melee armour provides a chance to turn sharp/edge weapon attacks into blunt ones
+ if(prob(legacy_mob_armor(hit_zone, "melee"))) //melee armour provides a chance to turn sharp/edge weapon attacks into blunt ones
weapon_sharp = 0
weapon_edge = 0
- hit_embed_chance = I.force/(I.w_class*3)
+ hit_embed_chance = I.damage_force/(I.w_class*3)
apply_damage(effective_force, I.damtype, hit_zone, blocked, soaked, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I)
@@ -96,7 +96,7 @@
// Knifing
/mob/living/carbon/proc/attack_throat(obj/item/W, obj/item/grab/G, mob/user)
- if(!W.edge || !W.force || W.damtype != BRUTE)
+ if(!W.edge || !W.damage_force || W.damtype != BRUTE)
return 0 //unsuitable weapon
user.visible_message("\The [user] begins to slit [src]'s throat with \the [W]!")
@@ -112,11 +112,11 @@
var/obj/item/clothing/head/helmet = item_by_slot(SLOT_ID_HEAD)
if(istype(helmet) && (helmet.body_cover_flags & HEAD) && (helmet.min_pressure_protection != null)) // Both min- and max_pressure_protection must be set for it to function at all, so we can just check that one is set.
//we don't do an armor_check here because this is not an impact effect like a weapon swung with momentum, that either penetrates or glances off.
- damage_mod = 1.0 - (helmet.armor["melee"]/100)
+ damage_mod = 1.0 - (helmet.fetch_armor().raw(ARMOR_MELEE))
var/total_damage = 0
for(var/i in 1 to 3)
- var/damage = min(W.force*1.5, 20)*damage_mod
+ var/damage = min(W.damage_force*1.5, 20)*damage_mod
apply_damage(damage, W.damtype, "head", 0, sharp=W.sharp, edge=W.edge)
total_damage += damage
@@ -144,7 +144,7 @@
/mob/living/carbon/proc/shank_attack(obj/item/W, obj/item/grab/G, mob/user, hit_zone)
- if(!W.sharp || !W.force || W.damtype != BRUTE)
+ if(!W.sharp || !W.damage_force || W.damtype != BRUTE)
return 0 //unsuitable weapon
user.visible_message("\The [user] plunges \the [W] into \the [src]!")
@@ -160,7 +160,7 @@
return 1
/mob/living/carbon/proc/shank_armor_helper(obj/item/W, obj/item/grab/G, mob/user)
- var/damage = W.force
+ var/damage = W.damage_force
var/damage_mod = 1
if(W.edge)
damage = damage * 1.25 //small damage bonus for having sharp and edge
@@ -174,22 +174,21 @@
if(item_by_slot(SLOT_ID_SUIT))
worn_suit = item_by_slot(SLOT_ID_SUIT)
//worn_suit = item_by_slot(SLOT_ID_SUIT)
- worn_suit_armor = worn_suit.armor["melee"]
+ worn_suit_armor = worn_suit.fetch_armor().raw(ARMOR_MELEE)
else
worn_suit_armor = 0
//if(SLOT_ID_UNIFORM)
if(item_by_slot(SLOT_ID_UNIFORM))
worn_under = item_by_slot(SLOT_ID_UNIFORM)
- //worn_under_armor = SLOT_ID_UNIFORM.armor["melee"]
- worn_under_armor = worn_under.armor["melee"]
+ worn_under_armor = worn_under.fetch_armor().raw(ARMOR_MELEE)
else
worn_under_armor = 0
if(worn_under_armor > worn_suit_armor)
- damage_mod = 1 - (worn_under_armor/100)
+ damage_mod = 1 - (worn_under_armor)
else
- damage_mod = 1 - (worn_suit_armor/100)
+ damage_mod = 1 - (worn_suit_armor)
damage = damage * damage_mod
diff --git a/code/modules/mob/living/carbon/human/defense.dm b/code/modules/mob/living/carbon/human/defense.dm
new file mode 100644
index 00000000000..c5b686488c2
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/defense.dm
@@ -0,0 +1,49 @@
+/mob/living/carbon/human/check_mob_armor(damage, tier, flag, mode, attack_type, datum/weapon, target_zone)
+ var/obj/item/organ/external/part = get_organ(target_zone)
+ for(var/obj/item/I as anything in inventory?.items_that_cover(part.body_part_flags))
+ var/list/results = I.checking_mob_armor(arglist(args))
+ damage = results[1]
+ mode = results[4]
+ return ..()
+
+/mob/living/carbon/human/run_mob_armor(damage, tier, flag, mode, attack_type, datum/weapon, target_zone)
+ var/obj/item/organ/external/part = get_organ(target_zone)
+ for(var/obj/item/I as anything in inventory?.items_that_cover(part.body_part_flags))
+ var/list/results = I.running_mob_armor(arglist(args))
+ damage = results[1]
+ mode = results[4]
+ return ..()
+
+/mob/living/carbon/human/check_overall_armor(damage, tier, flag, mode, attack_type, datum/weapon, target_zone)
+ var/total = 0
+ var/total_size = 0
+ for(var/key in organs_by_name)
+ var/rel_size = organ_rel_size[key]
+ if(!rel_size)
+ continue
+ var/obj/item/organ/external/part = organs_by_name[key]
+ var/resultant = damage
+ for(var/obj/item/I as anything in inventory?.items_that_cover(part.body_part_flags))
+ var/list/results = I.checking_mob_armor(resultant, tier, flag, mode, attack_type, weapon, target_zone)
+ resultant = results[1]
+ total += resultant * rel_size
+ total_size += rel_size
+ damage = total / total_size
+ return ..()
+
+/mob/living/carbon/human/run_overall_armor(damage, tier, flag, mode, attack_type, datum/weapon, target_zone)
+ var/total = 0
+ var/total_size = 0
+ for(var/key in organs_by_name)
+ var/rel_size = organ_rel_size[key]
+ if(!rel_size)
+ continue
+ var/obj/item/organ/external/part = organs_by_name[key]
+ var/resultant = damage
+ for(var/obj/item/I as anything in inventory?.items_that_cover(part.body_part_flags))
+ var/list/results = I.running_mob_armor(resultant, tier, flag, mode, attack_type, weapon, target_zone)
+ resultant = results[1]
+ total += resultant * rel_size
+ total_size += rel_size
+ damage = total / total_size
+ return ..()
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 82f46e0e817..2f54fa23865 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -124,7 +124,7 @@
switch (severity)
if (1.0)
b_loss += 500
- if (!prob(run_mob_armor(null, "bomb")))
+ if (!prob(legacy_mob_armor(null, "bomb")))
gib()
return
else
@@ -140,7 +140,7 @@
f_loss += 60
- if (prob(run_mob_armor(null, "bomb")))
+ if (prob(legacy_mob_armor(null, "bomb")))
b_loss = b_loss/1.5
f_loss = f_loss/1.5
@@ -152,7 +152,7 @@
if(3.0)
b_loss += 30
- if (prob(run_mob_armor(null, "bomb")))
+ if (prob(legacy_mob_armor(null, "bomb")))
b_loss = b_loss/2
if (!get_ear_protection() >= 2)
ear_damage += 15
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 5d5f12ec836..8cea6bfc3cc 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -8,7 +8,7 @@ emp_act
*/
-/mob/living/carbon/human/bullet_act(var/obj/item/projectile/P, var/def_zone)
+/mob/living/carbon/human/bullet_act(var/obj/projectile/P, var/def_zone)
def_zone = check_zone(def_zone)
if(!has_organ(def_zone))
return PROJECTILE_FORCE_MISS //if they don't have the organ in question then the projectile just passes by.
@@ -74,7 +74,7 @@ emp_act
..(stun_amount, agony_amount, def_zone)
-/mob/living/carbon/human/run_mob_armor(var/def_zone, var/type)
+/mob/living/carbon/human/legacy_mob_armor(var/def_zone, var/type)
var/armorval = 0
var/total = 0
@@ -96,8 +96,8 @@ emp_act
total += weight
return (armorval/max(total, 1))
-//Like run_mob_armor, but the value it returns will be numerical damage reduction
-/mob/living/carbon/human/run_mob_soak(var/def_zone, var/type)
+//Like legacy_mob_armor, but the value it returns will be numerical damage reduction
+/mob/living/carbon/human/legacy_mob_soak(var/def_zone, var/type)
var/soakval = 0
var/total = 0
@@ -128,7 +128,7 @@ emp_act
var/list/clothing_items = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes) // What all are we checking?
for(var/obj/item/clothing/C in clothing_items)
- if(istype(C) && (C.body_cover_flags & def_zone.body_part)) // Is that body part being targeted covered?
+ if(istype(C) && (C.body_cover_flags & def_zone.body_part_flags)) // Is that body part being targeted covered?
siemens_coefficient *= C.siemens_coefficient
return siemens_coefficient
@@ -159,7 +159,7 @@ emp_act
var/list/results = list()
var/list/clothing_items = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes)
for(var/obj/item/clothing/C in clothing_items)
- if(istype(C) && (C.body_cover_flags & def_zone.body_part))
+ if(istype(C) && (C.body_cover_flags & def_zone.body_part_flags))
results.Add(C)
return results
@@ -170,7 +170,7 @@ emp_act
var/protection = 0
var/list/protective_gear = def_zone.get_covering_clothing()
for(var/obj/item/clothing/gear in protective_gear)
- protection += gear.armor[type]
+ protection += gear.fetch_armor().raw(type) * 100
return protection
/mob/living/carbon/human/proc/getsoak_organ(var/obj/item/organ/external/def_zone, var/type)
@@ -179,7 +179,7 @@ emp_act
var/soaked = 0
var/list/protective_gear = def_zone.get_covering_clothing()
for(var/obj/item/clothing/gear in protective_gear)
- soaked += gear.armorsoak[type]
+ soaked += gear.fetch_armor().soak(type)
return soaked
// Checked in borer code
@@ -226,7 +226,7 @@ emp_act
if(!hit_zone)
return null
- if(check_shields(I.force, I, user, target_zone, "the [I.name]"))
+ if(check_shields(I.damage_force, I, user, target_zone, "the [I.name]"))
return
var/obj/item/organ/external/affecting = get_organ(hit_zone)
@@ -264,7 +264,7 @@ emp_act
effective_force -= round(effective_force*0.8)
// Handle striking to cripple.
if(user.a_intent == INTENT_DISARM)
- effective_force *= 0.5 //reduced effective force...
+ effective_force *= 0.5 //reduced effective damage_force...
if(!..(I, user, effective_force, blocked, soaked, hit_zone))
return 0
diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm
index 340852271bf..5ce719c5070 100644
--- a/code/modules/mob/living/carbon/human/human_organs.dm
+++ b/code/modules/mob/living/carbon/human/human_organs.dm
@@ -149,7 +149,7 @@
continue
if((E.is_broken() || E.is_dislocated()) && !E.splinted)
- switch(E.body_part)
+ switch(E.body_part_flags)
if(HAND_LEFT, ARM_LEFT)
if(!l_hand)
continue
@@ -163,7 +163,7 @@
emote("me", 1, "[(can_feel_pain()) ? "" : emote_scream ]drops what they were holding in their [E.name]!")
else if(E.is_malfunctioning())
- switch(E.body_part)
+ switch(E.body_part_flags)
if(HAND_LEFT, ARM_LEFT)
if(!l_hand)
continue
diff --git a/code/modules/mob/living/carbon/human/traits/weaver_objs.dm b/code/modules/mob/living/carbon/human/traits/weaver_objs.dm
index 76eb57f5e56..883ab8c7da5 100644
--- a/code/modules/mob/living/carbon/human/traits/weaver_objs.dm
+++ b/code/modules/mob/living/carbon/human/traits/weaver_objs.dm
@@ -18,11 +18,11 @@ var/global/list/weavable_items = list()
/obj/effect/weaversilk/attackby(var/obj/item/W, var/mob/user)
user.setClickCooldown(user.get_attack_speed(W))
- if(W.force)
+ if(W.damage_force)
visible_message("\The [src] has been [W.get_attack_verb(src, user)] with \the [W][(user ? " by [user]." : ".")]")
qdel(src)
-/obj/effect/weaversilk/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/weaversilk/bullet_act(var/obj/projectile/Proj)
..()
if(Proj.get_structure_damage())
qdel(src)
diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm
index 4d8a61bdf1a..190c5836b87 100644
--- a/code/modules/mob/living/carbon/human/unarmed_attack.dm
+++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm
@@ -226,7 +226,7 @@ var/global/list/sparring_attack_cache = list()
var/obj/item/clothing/shoes = user.shoes
if(!istype(shoes))
return damage
- return damage + (shoes ? shoes.force : 0)
+ return damage + (shoes ? shoes.damage_force : 0)
/datum/unarmed_attack/kick/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
@@ -271,7 +271,7 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/stomp/get_unarmed_damage(var/mob/living/carbon/human/user)
var/obj/item/clothing/shoes = user.shoes
- return damage + (shoes ? shoes.force : 0)
+ return damage + (shoes ? shoes.damage_force : 0)
/datum/unarmed_attack/stomp/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
diff --git a/code/modules/mob/living/carbon/metroid/items.dm b/code/modules/mob/living/carbon/metroid/items.dm
index 3956874a3f4..1f884d9f54a 100644
--- a/code/modules/mob/living/carbon/metroid/items.dm
+++ b/code/modules/mob/living/carbon/metroid/items.dm
@@ -3,7 +3,7 @@
desc = "Goo extracted from a slime. Legends claim these to have \"magical powers\"."
icon = 'icons/mob/slimes.dmi'
icon_state = "grey slime extract"
- force = 1.0
+ damage_force = 1.0
w_class = ITEMSIZE_TINY
throw_force = 0
throw_speed = 3
diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm
index 863577e8350..0311f34a9b2 100644
--- a/code/modules/mob/living/carbon/metroid/metroid.dm
+++ b/code/modules/mob/living/carbon/metroid/metroid.dm
@@ -173,7 +173,7 @@
..(-abs(amount)) // Heals them
return
-/mob/living/carbon/slime/bullet_act(var/obj/item/projectile/Proj)
+/mob/living/carbon/slime/bullet_act(var/obj/projectile/Proj)
attacked += 10
..(Proj)
return 0
@@ -312,16 +312,16 @@
return
/mob/living/carbon/slime/attackby(obj/item/W, mob/user)
- if(W.force > 0)
+ if(W.damage_force > 0)
attacked += 10
if(prob(25))
to_chat(user, "[W] passes right through [src]!")
return
if(Discipline && prob(50)) // wow, buddy, why am I getting attacked??
Discipline = 0
- if(W.force >= 3)
+ if(W.damage_force >= 3)
if(is_adult)
- if(prob(5 + round(W.force/2)))
+ if(prob(5 + round(W.damage_force/2)))
if(Victim || Target)
if(prob(80) && !client)
Discipline++
@@ -338,14 +338,14 @@
if(user)
canmove = 0
step_away(src, user)
- if(prob(25 + W.force))
+ if(prob(25 + W.damage_force))
sleep(2)
if(user)
step_away(src, user)
canmove = 1
else
- if(prob(10 + W.force*2))
+ if(prob(10 + W.damage_force*2))
if(Victim || Target)
if(prob(80) && !client)
Discipline++
@@ -363,7 +363,7 @@
if(user)
canmove = 0
step_away(src, user)
- if(prob(25 + W.force*4))
+ if(prob(25 + W.damage_force*4))
sleep(2)
if(user)
step_away(src, user)
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index c538b59343c..d814666ec3e 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -125,7 +125,7 @@
if(amt <= 0)
return
if(run_armor)
- amt *= 1 - ((run_mob_armor(def_zone, ARMOR_RAD)) / 100)
+ amt *= 1 - ((legacy_mob_armor(def_zone, ARMOR_RAD)) / 100)
radiation += max(0, RAD_MOB_ADDITIONAL(amt, radiation))
/**
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/defense.dm
similarity index 95%
rename from code/modules/mob/living/living_defense.dm
rename to code/modules/mob/living/defense.dm
index 4fc196ad5aa..7119c106c91 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/defense.dm
@@ -1,4 +1,3 @@
-
/*
run_armor_check(a,b)
args
@@ -13,12 +12,12 @@
*/
/mob/living/proc/run_armor_check(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0, var/absorb_text = null, var/soften_text = null)
if(GLOB.Debug2)
- log_world("## DEBUG: run_mob_armor() was called.")
+ log_world("## DEBUG: legacy_mob_armor() was called.")
if(armour_pen >= 100)
return 0 //might as well just skip the processing
- var/armor = run_mob_armor(def_zone, attack_flag)
+ var/armor = legacy_mob_armor(def_zone, attack_flag)
if(armor)
var/armor_variance_range = round(armor * 0.25) //Armor's effectiveness has a +25%/-25% variance.
var/armor_variance = rand(-armor_variance_range, armor_variance_range) //Get a random number between -25% and +25% of the armor's base value
@@ -47,7 +46,7 @@
if(armour_pen >= 100)
return 0 //might as well just skip the processing
- var/armor = run_mob_armor(def_zone, attack_flag)
+ var/armor = legacy_mob_armor(def_zone, attack_flag)
var/absorb = 0
//Roll armour
@@ -79,17 +78,17 @@
//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 = run_mob_soak(def_zone, attack_flag)
+ var/soaked = legacy_mob_soak(def_zone, attack_flag)
//5 points of armor pen negate one point of soak
if(armour_pen)
soaked = max(soaked - (armour_pen/5), 0)
return soaked
//if null is passed for def_zone, then this should return something appropriate for all zones (e.g. area effect damage)
-/mob/living/proc/run_mob_armor(var/def_zone, var/type)
+/mob/living/proc/legacy_mob_armor(var/def_zone, var/type)
return 0
-/mob/living/proc/run_mob_soak(var/def_zone, var/type)
+/mob/living/proc/legacy_mob_soak(var/def_zone, var/type)
return 0
// Clicking with an empty hand
@@ -111,7 +110,7 @@
else
afflict_radiation(strength * RAD_MOB_ACT_COEFFICIENT - RAD_MOB_ACT_PROTECTION_PER_WAVE_SOURCE, TRUE)
-/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone)
+/mob/living/bullet_act(var/obj/projectile/P, var/def_zone)
//Being hit while using a deadman switch
if(istype(get_active_held_item(),/obj/item/assembly/signaler))
@@ -125,8 +124,8 @@
ai_holder.react_to_attack(P.firer)
//Armor
- var/soaked = get_armor_soak(def_zone, P.check_armour, P.armor_penetration)
- var/absorb = run_armor_check(def_zone, P.check_armour, P.armor_penetration)
+ var/soaked = get_armor_soak(def_zone, P.damage_flag, P.armor_penetration)
+ var/absorb = run_armor_check(def_zone, P.damage_flag, P.armor_penetration)
var/proj_sharp = is_sharp(P)
var/proj_edge = has_edge(P)
var/final_damage = P.get_final_damage(src)
@@ -135,7 +134,7 @@
proj_sharp = 0
proj_edge = 0
- if ((proj_sharp || proj_edge) && prob(run_mob_armor(def_zone, P.check_armour)))
+ if ((proj_sharp || proj_edge) && prob(legacy_mob_armor(def_zone, P.damage_flag)))
proj_sharp = 0
proj_edge = 0
@@ -256,11 +255,11 @@
var/weapon_sharp = is_sharp(I)
var/weapon_edge = has_edge(I)
- if(run_mob_soak(hit_zone, "melee",) - (I.armor_penetration/5) > round(effective_force*0.8)) //soaking a hit turns sharp attacks into blunt ones
+ if(legacy_mob_soak(hit_zone, "melee",) - (I.armor_penetration/5) > round(effective_force*0.8)) //soaking a hit turns sharp attacks into blunt ones
weapon_sharp = 0
weapon_edge = 0
- if(prob(max(run_mob_armor(hit_zone, "melee") - I.armor_penetration, 0))) //melee armour provides a chance to turn sharp/edge weapon attacks into blunt ones
+ if(prob(max(legacy_mob_armor(hit_zone, "melee") - I.armor_penetration, 0))) //melee armour provides a chance to turn sharp/edge weapon attacks into blunt ones
weapon_sharp = 0
weapon_edge = 0
diff --git a/code/modules/mob/living/inventory.dm b/code/modules/mob/living/inventory.dm
index 2e42b066b52..bc0332249d1 100644
--- a/code/modules/mob/living/inventory.dm
+++ b/code/modules/mob/living/inventory.dm
@@ -1,3 +1,6 @@
+/mob/living/init_inventory()
+ inventory = new(src)
+
/mob/living/get_active_held_item()
RETURN_TYPE(/obj/item)
return hand? l_hand : r_hand
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 01528514604..ad56b60b95b 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -370,9 +370,9 @@
//Overriding this will stop a number of headaches down the track.
/mob/living/silicon/pai/attackby(obj/item/W as obj, mob/user as mob)
- if(W.force)
+ if(W.damage_force)
visible_message("[user.name] attacks [src] with [W]!")
- src.adjustBruteLoss(W.force)
+ src.adjustBruteLoss(W.damage_force)
src.updatehealth()
else
visible_message("[user.name] bonks [src] harmlessly with [W].")
diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm
index 15ebf45560c..9bc72f609b9 100644
--- a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm
+++ b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm
@@ -3,7 +3,7 @@
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "jaws"
desc = "The jaws of the law."
- force = 10
+ damage_force = 10
throw_force = 0
hitsound = 'sound/weapons/bite.ogg'
attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
@@ -14,7 +14,7 @@
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "smalljaws"
desc = "The jaws of a small dog."
- force = 5
+ damage_force = 5
throw_force = 0
hitsound = 'sound/weapons/bite.ogg'
attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
@@ -33,7 +33,7 @@
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "jaws"
desc = "The jaws of the law."
- force = 10
+ damage_force = 10
throw_force = 0
hitsound = 'sound/weapons/bite.ogg'
attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
@@ -43,7 +43,7 @@
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "smalljaws"
desc = "The jaws of a small dog."
- force = 5
+ damage_force = 5
throw_force = 0
hitsound = 'sound/weapons/bite.ogg'
attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
@@ -56,7 +56,7 @@
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "nose"
desc = "The BOOP module, a simple reagent and atmosphere sniffer."
- force = 0
+ damage_force = 0
item_flags = ITEM_NOBLUDGEON
throw_force = 0
attack_verb = list("nuzzled", "nosed", "booped")
@@ -323,7 +323,7 @@
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "projgun"
fire_sound = 'sound/weapons/eLuger.ogg'
- projectile_type = /obj/item/projectile/beam/disable
+ projectile_type = /obj/projectile/beam/disable
charge_cost = 240 //Normal cost of a taser. It used to be 1000, but after some testing it was found that it would sap a borg's battery to quick
recharge_time = 10 //Takes ten ticks to recharge a shot, so don't waste them all!
//cell_type = null //Same cell as a taser until edits are made.
@@ -333,7 +333,7 @@
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "swordtail"
desc = "A glowing pink dagger normally attached to the end of a cyborg's tail. It appears to be extremely sharp."
- force = 20 //Takes 5 hits to 100-0
+ damage_force = 20 //Takes 5 hits to 100-0
sharp = 1
edge = 1
throw_force = 0 //This shouldn't be thrown in the first place.
@@ -378,7 +378,7 @@
icon = 'icons/mob/dogborg_vr.dmi'
icon_state = "pounce"
desc = "Leap at your target to momentarily stun them."
- force = 0
+ damage_force = 0
item_flags = ITEM_NOBLUDGEON
throw_force = 0
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
index 7c4347a92c9..29bce9e4821 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
@@ -303,9 +303,9 @@
remove_item(drop_location())
/obj/item/gripper/attack_mob(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
- if(wrapped) //The force of the wrapped obj gets set to zero during the attack() and afterattack().
- force_holder = wrapped.force
- wrapped.force = 0
+ if(wrapped) //The damage_force of the wrapped obj gets set to zero during the attack() and afterattack().
+ force_holder = wrapped.damage_force
+ wrapped.damage_force = 0
target.attackby(wrapped, user, params, clickchain_flags) //attackby reportedly gets procced by being clicked on, at least according to Anewbe.
return 1
return 0
@@ -320,9 +320,9 @@
var/resolved = target.attackby(wrapped, user)
if(!resolved && wrapped && target)
wrapped.afterattack(target,user,1)
- //wrapped's force was set to zero. This resets it to the value it had before.
+ //wrapped's damage_force was set to zero. This resets it to the value it had before.
if(wrapped)
- wrapped.force = force_holder
+ wrapped.damage_force = force_holder
force_holder = null
else if(istype(target,/obj/item)) //Check that we're not pocketing a mob.
diff --git a/code/modules/mob/living/silicon/robot/drone/swarm_items.dm b/code/modules/mob/living/silicon/robot/drone/swarm_items.dm
index 06c0c8fac80..4edd0bc7bfe 100644
--- a/code/modules/mob/living/silicon/robot/drone/swarm_items.dm
+++ b/code/modules/mob/living/silicon/robot/drone/swarm_items.dm
@@ -146,15 +146,15 @@
icon_state = "xray"
item_state = "xray"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
- projectile_type = /obj/item/projectile/beam/shock
+ projectile_type = /obj/projectile/beam/shock
charge_cost = 175
self_recharge = TRUE
use_external_power = TRUE
firemodes = list(
- list(mode_name="kill", projectile_type=/obj/item/projectile/beam/gamma, charge_cost = 300),
- list(mode_name="deter", projectile_type=/obj/item/projectile/beam/shock, charge_cost = 175),
+ list(mode_name="kill", projectile_type=/obj/projectile/beam/gamma, charge_cost = 300),
+ list(mode_name="deter", projectile_type=/obj/projectile/beam/shock, charge_cost = 175),
)
/obj/item/gun/energy/xray/swarm/Initialize(mapload)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index f603992ee15..c2f3c582985 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -526,7 +526,7 @@
/mob/living/silicon/robot/restrained()
return 0
-/mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj)
+/mob/living/silicon/robot/bullet_act(var/obj/projectile/Proj)
..(Proj)
if(prob(75) && Proj.damage > 0)
spark_system.start()
@@ -758,7 +758,7 @@
else
if( !(istype(W, /obj/item/robotanalyzer) || istype(W, /obj/item/healthanalyzer)) )
- if(W.force > 0)
+ if(W.damage_force > 0)
spark_system.start()
return ..()
diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm
index b439a51a6c5..5c48b4caf5d 100644
--- a/code/modules/mob/living/silicon/robot/robot_items.dm
+++ b/code/modules/mob/living/silicon/robot/robot_items.dm
@@ -201,7 +201,7 @@
for(var/obj/item/reagent_containers/food/I in pickup)
- if( I != src && !I.anchored && !istype(I, /obj/item/clothing/under) && !istype(I, /obj/item/clothing/suit) && !istype(I, /obj/item/projectile) )
+ if( I != src && !I.anchored && !istype(I, /obj/item/clothing/under) && !istype(I, /obj/item/clothing/suit) && !istype(I, /obj/projectile) )
var/add = 0
if(I.w_class == ITEMSIZE_TINY)
add = 1
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 3f8f260a6f8..adb7269cf40 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -151,7 +151,7 @@
/mob/living/silicon/IsAdvancedToolUser()
return 1
-/mob/living/silicon/bullet_act(var/obj/item/projectile/Proj)
+/mob/living/silicon/bullet_act(var/obj/projectile/Proj)
if(!Proj.nodamage)
switch(Proj.damage_type)
diff --git a/code/modules/mob/living/simple_animal/aliens/drone.dm b/code/modules/mob/living/simple_animal/aliens/drone.dm
index 6bbce391303..7cbdcfc4a7e 100644
--- a/code/modules/mob/living/simple_animal/aliens/drone.dm
+++ b/code/modules/mob/living/simple_animal/aliens/drone.dm
@@ -30,12 +30,12 @@
a_intent = INTENT_HARM
ranged = 1
rapid = 1
- projectiletype = /obj/item/projectile/beam/drone
+ projectiletype = /obj/projectile/beam/drone
projectilesound = 'sound/weapons/laser3.ogg'
destroy_surroundings = 0
hovering = TRUE
- armor = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 100, rad = 100) // Some level of armor plating makes sense
+ armor_legacy_mob = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 100, rad = 100) // Some level of armor plating makes sense
//Drones aren't affected by atmos.
min_oxy = 0
max_oxy = 0
@@ -62,7 +62,7 @@
/mob/living/simple_mob/hostile/malf_drone/Initialize(mapload)
. = ..()
if(prob(5))
- projectiletype = /obj/item/projectile/beam/pulse/drone
+ projectiletype = /obj/projectile/beam/pulse/drone
projectilesound = 'sound/weapons/pulse2.ogg'
ion_trail = new
ion_trail.set_up(src)
@@ -280,10 +280,10 @@
..()
-/obj/item/projectile/beam/drone
+/obj/projectile/beam/drone
damage = 15
-/obj/item/projectile/beam/pulse/drone
+/obj/projectile/beam/pulse/drone
damage = 10
// A slightly easier drone, for POIs.
diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm
index 3c079894cc4..dfe1c140c65 100644
--- a/code/modules/mob/living/simple_animal/constructs/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm
@@ -65,7 +65,7 @@
shock_resistance = 0.9 //Electricity isn't very effective on stone, especially that from hell.
- armor = list(
+ armor_legacy_mob = list(
"melee" = 10,
"bullet" = 10,
"laser" = 10,
@@ -197,7 +197,7 @@
/spell/targeted/construct_advanced/slam
)
- armor = list(
+ armor_legacy_mob = list(
"melee" = 70,
"bullet" = 30,
"laser" = 30,
@@ -210,16 +210,16 @@
weakened = 0
..()
-/mob/living/simple_animal/construct/armoured/bullet_act(var/obj/item/projectile/P)
-// if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) //If it's going to be slow, it's probably going to need every reflect it can get.
+/mob/living/simple_animal/construct/armoured/bullet_act(var/obj/projectile/P)
+// if(istype(P, /obj/projectile/energy) || istype(P, /obj/projectile/beam)) //If it's going to be slow, it's probably going to need every reflect it can get.
var/reflectchance = 80 - round(P.damage/3)
if(prob(reflectchance))
var/damage_mod = rand(2,4)
var/projectile_dam_type = P.damage_type
var/incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3)))
- var/armorcheck = run_armor_check(null, P.check_armour)
- var/soakedcheck = get_armor_soak(null, P.check_armour)
- if(!(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)))
+ var/armorcheck = run_armor_check(null, P.damage_flag)
+ var/soakedcheck = get_armor_soak(null, P.damage_flag)
+ if(!(istype(P, /obj/projectile/energy) || istype(P, /obj/projectile/beam)))
visible_message("The [P.name] bounces off of [src]'s shell!", \
"The [P.name] bounces off of [src]'s shell!")
new /obj/item/material/shard/shrapnel(src.loc)
@@ -351,7 +351,7 @@
icon_scale = 2
var/energy = 0
var/max_energy = 1000
- armor = list(
+ armor_legacy_mob = list(
"melee" = 60,
"bullet" = 60,
"laser" = 60,
@@ -364,7 +364,7 @@
/spell/targeted/construct_advanced/slam
)
-/mob/living/simple_animal/construct/behemoth/bullet_act(var/obj/item/projectile/P)
+/mob/living/simple_animal/construct/behemoth/bullet_act(var/obj/projectile/P)
var/reflectchance = 80 - round(P.damage/3)
if(prob(reflectchance))
visible_message("The [P.name] gets reflected by [src]'s shell!", \
@@ -408,7 +408,7 @@
environment_smash = 1
attack_sound = 'sound/weapons/pierce.ogg'
- armor = list(
+ armor_legacy_mob = list(
"melee" = 10,
"bullet" = 20,
"laser" = 20,
diff --git a/code/modules/mob/living/simple_mob/combat.dm b/code/modules/mob/living/simple_mob/combat.dm
index fb331d61c1d..3c93c97f4c7 100644
--- a/code/modules/mob/living/simple_mob/combat.dm
+++ b/code/modules/mob/living/simple_mob/combat.dm
@@ -119,7 +119,7 @@
face_atom(A)
- var/obj/item/projectile/P = new projectiletype(src.loc)
+ var/obj/projectile/P = new projectiletype(src.loc)
if(!P)
return
diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm
index fe1ecde38aa..2d3baea112f 100644
--- a/code/modules/mob/living/simple_mob/defense.dm
+++ b/code/modules/mob/living/simple_mob/defense.dm
@@ -72,7 +72,7 @@
// Handles the actual harming by a melee weapon.
/mob/living/simple_mob/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone)
- effective_force = O.force
+ effective_force = O.damage_force
//Animals can't be stunned(?)
if(O.damtype == HALLOSS)
@@ -80,7 +80,7 @@
if(supernatural && istype(O,/obj/item/nullrod))
effective_force *= 2
purge = 3
- if(O.force <= resistance)
+ if(O.damage_force <= resistance)
to_chat(user,"This weapon is ineffective, it does no damage.")
return 2 //???
@@ -184,15 +184,15 @@
return poison_resist
// Armor
-/mob/living/simple_mob/run_mob_armor(def_zone, type)
- var/armorval = armor[type]
+/mob/living/simple_mob/legacy_mob_armor(def_zone, type)
+ var/armorval = fetch_armor().raw(type) * 100
if(!armorval)
return 0
else
return armorval
-/mob/living/simple_mob/run_mob_soak(def_zone, attack_flag)
- var/armorval = armor_soak[attack_flag]
+/mob/living/simple_mob/legacy_mob_soak(def_zone, attack_flag)
+ var/armorval = fetch_armor().raw(attack_flag) * 100
if(!armorval)
return 0
else
diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm
index f8ffcdf7ac0..9171aae2542 100644
--- a/code/modules/mob/living/simple_mob/simple_mob.dm
+++ b/code/modules/mob/living/simple_mob/simple_mob.dm
@@ -198,26 +198,6 @@
var/grab_resist = 0
/// Damage reduction for all types
var/resistance = 0
- /// Values for normal run_mob_armor() checks
- var/list/armor = list(
- "melee" = 0,
- "bullet" = 0,
- "laser" = 0,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 100,
- "rad" = 100
- )
- /// Values for run_mob_soak() checks.
- var/list/armor_soak = list(
- "melee" = 0,
- "bullet" = 0,
- "laser" = 0,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
// Protection against heat/cold/electric/water effects.
// 0 is no protection, 1 is total protection. Negative numbers increase vulnerability.
var/heat_resist = 0.0
@@ -248,23 +228,19 @@
/// Used for if the mob can drop limbs. Overrides the icon cache key, so it doesn't keep remaking the icon needlessly.
var/limb_icon_key
+ // todo: remove
+ /// legacy armor, applied on init
+ var/list/armor_legacy_mob
+
///Does the simple mob drop organs when butchered?
butchery_drops_organs = FALSE
-//* randomization code. *//
-/mob/living/simple_mob/proc/randomize()
- if(randomized == TRUE)
- var/mod = rand(mod_min,mod_max)/100
- size_multiplier = mod
- maxHealth = round(maxHealth*mod)
- health = round(health*mod)
- melee_damage_lower = round(melee_damage_lower*mod)
- melee_damage_upper = round(melee_damage_upper*mod)
- movement_cooldown = round(movement_cooldown*mod)
- meat_amount = round(meat_amount*mod)
- update_icons()
-
/mob/living/simple_mob/Initialize(mapload)
+ if(armor_legacy_mob)
+ var/list/translated = list()
+ for(var/key in armor_legacy_mob)
+ translated[key] = armor_legacy_mob[key] * 0.01 // new armor is / 100
+ set_armor(translated)
remove_verb(src, /mob/verb/observe)
health = maxHealth
randomize()
@@ -291,6 +267,19 @@
remove_eyes()
return ..()
+//* randomization code. *//
+/mob/living/simple_mob/proc/randomize()
+ if(randomized == TRUE)
+ var/mod = rand(mod_min,mod_max)/100
+ size_multiplier = mod
+ maxHealth = round(maxHealth*mod)
+ health = round(health*mod)
+ melee_damage_lower = round(melee_damage_lower*mod)
+ melee_damage_upper = round(melee_damage_upper*mod)
+ movement_cooldown = round(movement_cooldown*mod)
+ meat_amount = round(meat_amount*mod)
+ update_icons()
+
/mob/living/simple_mob/death()
update_icon()
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm
index 3b78b5b238f..64e5cbce4e7 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm
@@ -32,7 +32,7 @@
base_attack_cooldown = 15
projectilesound = 'sound/weapons/taser2.ogg'
- projectiletype = /obj/item/projectile/beam/stun/electric_spider
+ projectiletype = /obj/projectile/beam/stun/electric_spider
melee_damage_lower = 10
melee_damage_upper = 25
@@ -47,7 +47,7 @@
ai_holder_type = /datum/ai_holder/simple_mob/ranged/electric_spider
-/obj/item/projectile/beam/stun/electric_spider
+/obj/projectile/beam/stun/electric_spider
name = "stun beam"
agony = 20
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/ion.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/ion.dm
index 4387d393187..07246aed2fa 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/ion.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/ion.dm
@@ -10,7 +10,7 @@
base_attack_cooldown = 15
projectilesound = 'sound/weapons/taser2.ogg'
- projectiletype = /obj/item/projectile/ion/pistol
+ projectiletype = /obj/projectile/ion/pistol
melee_damage_lower = 8
melee_damage_upper = 15
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm
index a44d2b5a6db..40dc8b82f3c 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm
@@ -116,7 +116,7 @@
..() // For the poison.
// Force unstealthing if attacked.
-/mob/living/simple_mob/animal/giant_spider/lurker/bullet_act(obj/item/projectile/P)
+/mob/living/simple_mob/animal/giant_spider/lurker/bullet_act(obj/projectile/P)
. = ..()
break_cloak()
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm
index 7e50721a615..1f015122f47 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm
@@ -25,7 +25,7 @@
maxHealth = 90
health = 90
projectilesound = 'sound/weapons/thudswoosh.ogg'
- projectiletype = /obj/item/projectile/webball
+ projectiletype = /obj/projectile/webball
base_attack_cooldown = 15
melee_damage_lower = 8
melee_damage_upper = 15
@@ -47,7 +47,7 @@
/mob/living/simple_mob/animal/giant_spider/webslinger/do_special_attack(atom/A)
set waitfor = FALSE
set_AI_busy(TRUE)
- var/obj/item/projectile/bola/B = new /obj/item/projectile/bola(src.loc)
+ var/obj/projectile/bola/B = new /obj/projectile/bola(src.loc)
playsound(src, 'sound/weapons/thudswoosh.ogg', 100, 1)
if(!B)
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
index c6a880f4034..de04d902664 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
@@ -257,7 +257,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/rockfish)
- armor = list(
+ armor_legacy_mob = list(
"melee" = 90,
"bullet" = 50,
"laser" = -15,
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/roach/roach.dm b/code/modules/mob/living/simple_mob/subtypes/animal/roach/roach.dm
index 550d0fc0e49..87d0cf0dfbe 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/roach/roach.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/roach/roach.dm
@@ -39,6 +39,10 @@
/datum/category_item/catalogue/fauna/roach/fuhrer
)
+/datum/armor/physiology/roach
+ melee = 0.05
+ rad = 1.0
+
/mob/living/simple_mob/animal/roach
name = "roach"
real_name = "roach"
@@ -54,9 +58,7 @@
health = 15
randomized = TRUE
- armor = list(
- "melee" = 5,
- "rad" = 100)
+ armor_type = /datum/armor/physiology/roach
see_in_dark = 6
universal_understand = 1
@@ -115,7 +117,7 @@
/mob/living/simple_mob/animal/roach/Greta
name = "Greta"
desc = "Legend has it this roach sailed across the Eagle Nebula to protest bug burgers."
-
+
ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative
taser_kill = 0
@@ -162,7 +164,7 @@
melee_damage_lower = 2
melee_damage_upper = 3
-
+
ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative
var/amount_grown = -1
@@ -201,6 +203,10 @@
but formidable in numbers, these creatures require more than a boot to dispatch effectively."
value = CATALOGUER_REWARD_TRIVIAL
+/datum/armor/physiology/roach/panzer
+ melee = 0.2
+ bullet = 0.15
+
/mob/living/simple_mob/animal/roach/panzer
name = "armored roach"
real_name = "armored roach"
@@ -219,10 +225,10 @@
movement_cooldown = 7
- armor = list(
- "melee" = 20,
- "bullet" = 15,
- "rad" = 100)
+ armor_type = /datum/armor/physiology/roach/panzer
+
+/datum/armor/physiology/roach/jaegar
+ melee = 0.1
//Sie Sind Das Essen Und Wir Sind Die Jager
/datum/category_item/catalogue/fauna/roach/jaeger
@@ -253,10 +259,7 @@
movement_cooldown = 4
- armor = list(
- "melee" = 10
- )
-
+ armor_type = /datum/armor/physiology/roach/jaegar
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
//When I said roaches made me sick, this isn't what I meant.
@@ -269,6 +272,9 @@
and should be handled with extreme care."
value = CATALOGUER_REWARD_TRIVIAL
+/datum/armor/physiology/roach/seuche
+ bio = 1.0
+
/mob/living/simple_mob/animal/roach/seuche
name = "diseased roach"
real_name = "diseased roach"
@@ -284,10 +290,7 @@
health = 15
taser_kill = 0
-
- armor = list(
- "bio" = 100
- )
+ armor_type = /datum/armor/physiology/roach/seuche
var/poison_chance = 50
var/poison_per_bite = 5
@@ -318,6 +321,10 @@
ripping off chunks of diseased flesh and throwing it at percieved threats in an attempt to ward them off."
value = CATALOGUER_REWARD_TRIVIAL
+/datum/armor/physiology/roach/atomar
+ energy = 0.4
+ rad = 0.1
+
/mob/living/simple_mob/animal/roach/atomar
name = "cancerous roach"
real_name = "cancerous roach"
@@ -337,13 +344,10 @@
melee_damage_lower = 2
melee_damage_upper = 3
- armor = list(
- "energy" = 40,
- "rad" = 10
- )
+ armor_type = /datum/armor/physiology/roach/atomar
base_attack_cooldown = 4
- projectiletype = /obj/item/projectile/energy/blob/toxic
+ projectiletype = /obj/projectile/energy/blob/toxic
projectilesound = 'sound/effects/slime_squish.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
@@ -359,6 +363,11 @@
attack their victim on a molecular level. Terminate with extreme prejudice."
value = CATALOGUER_REWARD_TRIVIAL
+/datum/armor/physiology/roach/uberfallen
+ melee = 0.2
+ bullet = 0.5
+ bio = 1.0
+
/mob/living/simple_mob/animal/roach/uberfallen
name = "infested roach"
real_name = "infested roach"
@@ -370,25 +379,17 @@
icon_dead = "uberfallen_dead"
faction = "synthtide"
catalogue_data = list(/datum/category_item/catalogue/fauna/roach/uberfallen)
-
maxHealth = 30
health = 30
-
taser_kill = 0
-
movement_cooldown = 8
melee_damage_lower = 5
melee_damage_upper = 10
-
- armor = list(
- "melee" = 20,
- "bullet" = 50,
- "bio" = 100
- )
+ armor_type = /datum/armor/physiology/roach/uberfallen
base_attack_cooldown = 8
- projectiletype = /obj/item/projectile/energy/declone
+ projectiletype = /obj/projectile/energy/declone
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
@@ -402,6 +403,11 @@
which these roaches are not afraid to use to deter assailants, or, rarely, to wound prey."
value = CATALOGUER_REWARD_TRIVIAL
+/datum/armor/physiology/roach/strahland
+ melee = 0.2
+ laser = 0.2
+ energy = 0.2
+
/mob/living/simple_mob/animal/roach/strahlend
name = "glowing roach"
real_name = "glowing roach"
@@ -417,15 +423,10 @@
health = 20
taser_kill = 0
-
- armor = list(
- "melee" = 20,
- "laser" = 20,
- "energy" = 20
- )
+ armor_type = /datum/armor/physiology/roach/strahland
base_attack_cooldown = 4
- projectiletype = /obj/item/projectile/energy/dart
+ projectiletype = /obj/projectile/energy/dart
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
@@ -440,6 +441,11 @@
genuinely infest Bluespace at this time."
value = CATALOGUER_REWARD_TRIVIAL
+/datum/armor/physiology/roach/zeitraum
+ melee = 0.2
+ laser = 0.2
+ energy = 0.2
+
/mob/living/simple_mob/animal/roach/zeitraum
name = "bluespace roach"
real_name = "bluespace roach"
@@ -461,11 +467,7 @@
movement_cooldown = 3
- armor = list(
- "melee" = 20,
- "laser" = 20,
- "energy" = 20
- )
+ armor_type = /datum/armor/physiology/roach/zeitraum
ai_holder_type = /datum/ai_holder/simple_mob/melee/hit_and_run
@@ -535,7 +537,7 @@
..() // For the poison.
// Force unstealthing if attacked.
-/mob/living/simple_mob/animal/roach/zeitraum/bullet_act(obj/item/projectile/P)
+/mob/living/simple_mob/animal/roach/zeitraum/bullet_act(obj/projectile/P)
. = ..()
break_cloak()
@@ -551,6 +553,14 @@
and its powerful mandibles can deliver a painful bite."
value = CATALOGUER_REWARD_TRIVIAL
+/datum/armor/physiology/roach/fuhrer
+ melee = 0.25
+ bullet = 0.15
+ laser = 0.25
+ energy = 0.25
+ bomb = 0.25
+ bio = 0.15
+
/mob/living/simple_mob/animal/roach/fuhrer
name = "king roach"
real_name = "king roach"
@@ -572,11 +582,4 @@
movement_cooldown = 6
- armor = list(
- "melee" = 25,
- "bullet" = 15,
- "laser" = 25,
- "energy" = 25,
- "bomb" = 25,
- "bio" = 15
- )
+ armor_type = /datum/armor/physiology/roach/fuhrer
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm
index 9711c03e964..cbc9600d124 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/frostfly.dm
@@ -15,6 +15,15 @@
to anything other than Diyaabs, which they seem to have formed a tangential symbiosis with."
value = CATALOGUER_REWARD_MEDIUM
+/datum/armor/physiology/frostfly
+ melee = 0.20
+ bullet = 0.1
+ laser = 0.05
+ laser_soak = 15
+ bomb = 0.1
+ bio = 1.0
+ rad = 1.0
+
/mob/living/simple_mob/animal/sif/frostfly
name = "frostfly"
desc = "A large insect with glittering wings."
@@ -46,32 +55,13 @@
base_attack_cooldown = 1.5 SECONDS
attacktext = list("nipped", "bit", "pinched")
- projectiletype = /obj/item/projectile/energy/blob/freezing
+ projectiletype = /obj/projectile/energy/blob/freezing
special_attack_cooldown = 5 SECONDS
special_attack_min_range = 0
special_attack_max_range = 4
- armor = list(
- "melee" = 20,
- "bullet" = 10,
- "laser" = 5,
- "energy" = 0,
- "bomb" = 10,
- "bio" = 100,
- "rad" = 100
- )
-
- // The frostfly's body is incredibly cold at all times, natural resistance to things trying to burn it.
- armor_soak = list(
- "melee" = 0,
- "bullet" = 0,
- "laser" = 15,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
+ armor_type = /datum/armor/physiology/frostfly
var/datum/effect_system/smoke_spread/frost/smoke_special
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/hooligan_crab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/hooligan_crab.dm
index 3673843fad0..2a4e34727a2 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/hooligan_crab.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/hooligan_crab.dm
@@ -45,24 +45,17 @@
movement_shake_radius = 5
taser_kill = FALSE
- armor = list(
+ armor_legacy_mob = list(
"melee" = 40,
+ "melee_soak" = 10,
"bullet" = 20,
+ "bullet_soak" = 5,
"laser" = 10,
"energy" = 0,
"bomb" = 0,
"bio" = 0,
"rad" = 0
)
- armor_soak = list(
- "melee" = 10,
- "bullet" = 5,
- "laser" = 0,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
mob_size = MOB_LARGE
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm
index 318dc49311f..350bbd9fd92 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm
@@ -48,26 +48,19 @@
base_attack_cooldown = 2 SECONDS
attacktext = list("gouged", "bit", "cut", "clawed", "whipped")
- armor = list(
+ armor_legacy_mob = list(
"melee" = 30,
+ "melee_soak" = 5,
"bullet" = 15,
+ "bullet_soak" = 5,
"laser" = 5,
+ "laser_soak" = 5,
"energy" = 0,
"bomb" = 10,
"bio" = 100,
"rad" = 100
)
- armor_soak = list(
- "melee" = 5,
- "bullet" = 5,
- "laser" = 5,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
-
say_list_type = /datum/say_list/kururak
ai_holder_type = /datum/ai_holder/simple_mob/intentional/kururak
@@ -109,7 +102,7 @@
var/mob/living/carbon/human/H = L
if(H.get_active_held_item())
var/obj/item/I = H.get_active_held_item()
- if(I.force >= 1.20 * melee_damage_upper)
+ if(I.damage_force >= 1.20 * melee_damage_upper)
return TRUE
else if(istype(L, /mob/living/simple_mob))
var/mob/living/simple_mob/S = L
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm
index 04e08ee8256..c16f2e60cfe 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm
@@ -1,5 +1,17 @@
// Small creatures that will embed themselves in unsuspecting victim's bodies, drink their blood, and/or eat their organs. Steals some things from borers.
+/datum/armor/physiology/sif_leach
+ melee = 0.1
+ melee_soak = 5
+ bullet = 0.15
+ bullet_soak = 5
+ laser = -0.1
+ energy = 0
+ bomb = 0.1
+ bio = 1.0
+ rad = 1.0
+
+
/datum/category_item/catalogue/fauna/iceleech
name = "Sivian Fauna - River Leech"
desc = "Classification: S Hirudinea phorus \
@@ -70,26 +82,7 @@
attack_sharp = TRUE
attacktext = list("nipped", "bit", "pinched")
- armor = list(
- "melee" = 10,
- "bullet" = 15,
- "laser" = -10,
- "energy" = 0,
- "bomb" = 10,
- "bio" = 100,
- "rad" = 100
- )
-
- armor_soak = list(
- "melee" = 5,
- "bullet" = 5,
- "laser" = 0,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
-
+ armor_type = /datum/armor/physiology/sif_leach
say_list_type = /datum/say_list/leech
ai_holder_type = /datum/ai_holder/simple_mob/intentional/leech
@@ -276,7 +269,7 @@
var/list/covering_clothing = E.get_covering_clothing()
for(var/obj/item/clothing/C in covering_clothing)
- if(C.armor["melee"] >= 20 + attack_armor_pen)
+ if(C.fetch_armor().raw(ARMOR_MELEE) * 100 >= 20 + attack_armor_pen + attack_armor_pen)
to_chat(user, SPAN_NOTICE("We cannot get through that host's protective gear."))
return
@@ -380,7 +373,7 @@
var/list/covering_clothing = E.get_covering_clothing()
for(var/obj/item/clothing/C in covering_clothing)
- if(C.armor["melee"] >= 40 + attack_armor_pen)
+ if(C.fetch_armor().raw(ARMOR_MELEE) * 100 >= 40 + attack_armor_pen)
to_chat(user, SPAN_NOTICE("You cannot get through that host's protective gear."))
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm
index 9de640fbd88..10c2ea79fcd 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm
@@ -42,7 +42,7 @@
base_attack_cooldown = 1 SECOND
attacktext = list("nipped", "bit", "cut", "clawed")
- armor = list(
+ armor_legacy_mob = list(
"melee" = 15,
"bullet" = 5,
"laser" = 5,
@@ -52,16 +52,6 @@
"rad" = 100
)
- armor_soak = list(
- "melee" = 2,
- "bullet" = 2,
- "laser" = 0,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
-
say_list_type = /datum/say_list/sakimm
ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative/sakimm
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm
index b7cc6faec7a..3690d3f1178 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm
@@ -34,15 +34,6 @@
maxHealth = 75
randomized = TRUE
- armor_soak = list(
- "melee" = 5,
- "bullet" = 0,
- "laser" = 0,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
movement_cooldown = 5
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/alien.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/alien.dm
index 8232e744b6d..55571be931b 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/space/alien.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/alien.dm
@@ -114,7 +114,7 @@
health = 220
melee_damage_lower = 15
melee_damage_upper = 15
- projectiletype = /obj/item/projectile/energy/neurotoxin
+ projectiletype = /obj/projectile/energy/neurotoxin
projectilesound = 'sound/weapons/pierce.ogg'
catalogue_data = list(/datum/category_item/catalogue/fauna/feral_alien/sentinel)
@@ -141,7 +141,7 @@
health = 400
catalogue_data = list(/datum/category_item/catalogue/fauna/feral_alien/sentinel/praetorian)
- projectiletype = /obj/item/projectile/energy/neurotoxin/toxic
+ projectiletype = /obj/projectile/energy/neurotoxin/toxic
base_pixel_x = -16
icon_dimension_y = 64
@@ -175,7 +175,7 @@
maxHealth = 750
melee_damage_lower = 15
melee_damage_upper = 15
- projectiletype = /obj/item/projectile/energy/neurotoxin/toxic
+ projectiletype = /obj/projectile/energy/neurotoxin/toxic
projectilesound = 'sound/weapons/pierce.ogg'
catalogue_data = list(/datum/category_item/catalogue/fauna/feral_alien/queen)
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army.dm
index 4f84bbce2bd..2d3fa428f62 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army.dm
@@ -70,7 +70,7 @@
//Damage resistances
shock_resist = 1
- armor = list(
+ armor_legacy_mob = list(
"melee" = 30,
"bullet" = 20,
"laser" = 20,
@@ -162,7 +162,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/mouse_army/operative)
shock_resist = 1
- armor = list(
+ armor_legacy_mob = list(
"melee" = 40,
"bullet" = 40,
"laser" = 30,
@@ -198,7 +198,7 @@
//Damage resistances
shock_resist = 0.6
- armor = list(
+ armor_legacy_mob = list(
"melee" = 20,
"bullet" = 20,
"laser" = 20,
@@ -207,7 +207,7 @@
"bio" = 100,
"rad" = 100)
- projectiletype = /obj/item/projectile/bullet/incendiary/flamethrower
+ projectiletype = /obj/projectile/bullet/incendiary/flamethrower
base_attack_cooldown = 10
ai_holder_type = /datum/ai_holder/simple_mob/ranged
@@ -270,7 +270,7 @@
//Damage resistances
shock_resist = 0.6
- armor = list(
+ armor_legacy_mob = list(
"melee" = 40,
"bullet" = 30,
"laser" = 10,
@@ -336,7 +336,7 @@
//Damage resistances
shock_resist = 0.6
- armor = list(
+ armor_legacy_mob = list(
"melee" = 50,
"bullet" = 10,
"laser" = 10,
@@ -417,7 +417,7 @@
..() // For the poison.
// Force unstealthing if attacked.
-/mob/living/simple_mob/animal/space/mouse_army/stealth/bullet_act(obj/item/projectile/P)
+/mob/living/simple_mob/animal/space/mouse_army/stealth/bullet_act(obj/projectile/P)
. = ..()
break_cloak()
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm
index afb5cab84a7..8a2c3eb657f 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm
@@ -196,7 +196,7 @@
if(istype(mover, /mob/living/simple_mob/animal/space/space_worm)) // Worms don't run over worms. That's weird. And also really annoying.
return TRUE
- else if(src.stat == DEAD && !istype(mover, /obj/item/projectile)) // Projectiles need to do their normal checks.
+ else if(src.stat == DEAD && !istype(mover, /obj/projectile)) // Projectiles need to do their normal checks.
return TRUE
return ..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm b/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm
index a7e85761ec2..83e1eab49aa 100644
--- a/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm
@@ -117,8 +117,7 @@
is_infesting = TRUE
if(H.wear_suit)
var/obj/item/clothing/suit/A = H.wear_suit
- if(A.armor && A.armor["melee"])
- maxHealth += A.armor["melee"] //That zombie's got armor, I want armor!
+ maxHealth += A.fetch_armor().raw(ARMOR_MELEE) * 100 //That zombie's got armor, I want armor!
maxHealth += 40
health = maxHealth
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/Steve.dm b/code/modules/mob/living/simple_mob/subtypes/horror/Steve.dm
index 3eb1df4c103..df8f04d85eb 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/Steve.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/Steve.dm
@@ -26,7 +26,7 @@
melee_damage_upper = 35
grab_resist = 100
- projectiletype = /obj/item/projectile/bullet/pistol/medium
+ projectiletype = /obj/projectile/bullet/pistol/medium
projectilesound = 'sound/weapons/Gunshot_light.ogg'
needs_reload = TRUE
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm
index 09ed92eb2ee..7ad0f262823 100644
--- a/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm
@@ -56,7 +56,7 @@
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
- projectiletype = /obj/item/projectile/bullet/honker
+ projectiletype = /obj/projectile/bullet/honker
projectilesound = 'sound/items/bikehorn.ogg'
needs_reload = FALSE
@@ -99,7 +99,7 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 100, rad = 100) // Same armor values as the vest they drop, plus simple mob immunities
+ armor_legacy_mob = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 100, rad = 100) // Same armor values as the vest they drop, plus simple mob immunities
corpse = /obj/spawner/corpse/clown/clownop
loot_list = list(/obj/item/melee/clownop = 100) // Might as well give it the knife
@@ -184,7 +184,7 @@
desc = "A brightly adorned clown armed with a weird pistol."
icon_state = "clownop_ranged"
icon_living = "clownop_ranged"
- projectiletype = /obj/item/projectile/bullet/honker/lethal
+ projectiletype = /obj/projectile/bullet/honker/lethal
projectilesound = 'sound/items/bikehorn.ogg'
needs_reload = TRUE
reload_max = 12
@@ -220,7 +220,7 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit
min_oxy = 0
max_oxy = 0
@@ -253,7 +253,7 @@
movement_cooldown = 0
reload_max = 20
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit. This should already have been here when polaris patched these guys in.
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit. This should already have been here when polaris patched these guys in.
min_oxy = 0
max_oxy = 0
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/cultist.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/cultist.dm
index c3d41f4417d..bbcf48d5b63 100644
--- a/code/modules/mob/living/simple_mob/subtypes/humanoid/cultist.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/cultist.dm
@@ -69,7 +69,7 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 80, bomb = 30, bio = 100, rad = 100) // Same armor are cult armor, may nerf since DAMN THAT IS GOOD ARMOR
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 30, energy = 80, bomb = 30, bio = 100, rad = 100) // Same armor are cult armor, may nerf since DAMN THAT IS GOOD ARMOR
attack_sound = 'sound/weapons/bladeslice.ogg'
movement_cooldown = 3
@@ -237,7 +237,7 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 45, bullet = 40, laser = 30, energy = 80, bomb = 20, bio = 100, rad = 100) // Reduced Resistance to Approximate increased Tesh damage.
+ armor_legacy_mob = list(melee = 45, bullet = 40, laser = 30, energy = 80, bomb = 20, bio = 100, rad = 100) // Reduced Resistance to Approximate increased Tesh damage.
attack_sound = 'sound/weapons/bladeslice.ogg'
movement_cooldown = 2
@@ -287,7 +287,7 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 70, bullet = 60, laser = 30, energy = 80, bomb = 35, bio = 100, rad = 100) // Better Armor to match lizard brute resist
+ armor_legacy_mob = list(melee = 70, bullet = 60, laser = 30, energy = 80, bomb = 35, bio = 100, rad = 100) // Better Armor to match lizard brute resist
attack_sound = 'sound/weapons/rapidslice.ogg'
movement_cooldown = 4
base_attack_cooldown = 7.5 //Two knives mean double stab.
@@ -338,10 +338,10 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 50, bullet = 30, laser = 50, energy = 80, bomb = 25, bio = 100, rad = 100) //Armor Rebalanced for Cult Robes.
+ armor_legacy_mob = list(melee = 50, bullet = 30, laser = 50, energy = 80, bomb = 25, bio = 100, rad = 100) //Armor Rebalanced for Cult Robes.
attack_sound = 'sound/weapons/rapidslice.ogg'
movement_cooldown = 4
- projectiletype = /obj/item/projectile/beam/inversion
+ projectiletype = /obj/projectile/beam/inversion
projectilesound = 'sound/weapons/spiderlunge.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/ranged
@@ -389,7 +389,7 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 50, bullet = 30, laser = 50, energy = 80, bomb = 25, bio = 100, rad = 100) //Armor Rebalanced for Cult Robes.
+ armor_legacy_mob = list(melee = 50, bullet = 30, laser = 50, energy = 80, bomb = 25, bio = 100, rad = 100) //Armor Rebalanced for Cult Robes.
attack_sound = 'sound/weapons/rapidslice.ogg'
movement_cooldown = 4
@@ -437,11 +437,11 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 35, bullet = 20, laser = 35, energy = 60, bomb = 20, bio = 100, rad = 100) //Rebalanced for Robes and Tesh damage
+ armor_legacy_mob = list(melee = 35, bullet = 20, laser = 35, energy = 60, bomb = 20, bio = 100, rad = 100) //Rebalanced for Robes and Tesh damage
attack_sound = 'sound/weapons/rapidslice.ogg'
movement_cooldown = 2
base_attack_cooldown = 7.5
- projectiletype = /obj/item/projectile/beam/inversion
+ projectiletype = /obj/projectile/beam/inversion
projectilesound = 'sound/weapons/spiderlunge.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
@@ -487,14 +487,14 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 80, bomb = 30, bio = 100, rad = 100) // Same armor are cult armor, may nerf since DAMN THAT IS GOOD ARMOR
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 30, energy = 80, bomb = 30, bio = 100, rad = 100) // Same armor are cult armor, may nerf since DAMN THAT IS GOOD ARMOR
attack_sound = 'sound/weapons/bladeslice.ogg'
movement_cooldown = 3
ai_holder_type = /datum/ai_holder/simple_mob/melee
/mob/living/simple_mob/humanoid/cultist/elite/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if(O.force)
+ if(O.damage_force)
if(prob(30))
visible_message("\The [src] blocks \the [O] with its shield!")
if(user)
@@ -506,7 +506,7 @@
to_chat(user, "This weapon is ineffective, it does no damage.")
visible_message("\The [user] gently taps [src] with \the [O].")
-/mob/living/simple_mob/humanoid/cultist/elite/bullet_act(var/obj/item/projectile/Proj)
+/mob/living/simple_mob/humanoid/cultist/elite/bullet_act(var/obj/projectile/Proj)
if(!Proj) return
if(prob(50))
visible_message("[Proj] disappears into the mirror world as it hits the shield.")
@@ -562,11 +562,11 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 60, bullet = 50, laser = 50, energy = 80, bomb = 30, bio = 100, rad = 100) //Super Armor since Boss Mob
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 50, energy = 80, bomb = 30, bio = 100, rad = 100) //Super Armor since Boss Mob
attack_sound = 'sound/weapons/bladeslice.ogg'
movement_cooldown = 4
- projectiletype = /obj/item/projectile/beam/inversion
+ projectiletype = /obj/projectile/beam/inversion
base_attack_cooldown = 5
projectilesound = 'sound/weapons/spiderlunge.ogg'
var/obj/item/shield_projector/shields = null
@@ -635,11 +635,11 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 60, bullet = 50, laser = 50, energy = 80, bomb = 30, bio = 100, rad = 100) //Super Armor since Boss Mob
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 50, energy = 80, bomb = 30, bio = 100, rad = 100) //Super Armor since Boss Mob
attack_sound = 'sound/weapons/bladeslice.ogg'
movement_cooldown = 0 //This is so he can't be kited well
- projectiletype = /obj/item/projectile/bullet/pellet/shotgun
+ projectiletype = /obj/projectile/bullet/pellet/shotgun
base_attack_cooldown = 7.5
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 517ea818fb2..a5b33821823 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
@@ -69,7 +69,7 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 100) // Same armor values as the vest they drop, plus simple mob immunities
+ armor_legacy_mob = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 100) // Same armor values as the vest they drop, plus simple mob immunities
corpse = /obj/spawner/corpse/syndicatesoldier
loot_list = list(/obj/item/material/knife/tacknife = 100) // Might as well give it the knife
@@ -158,7 +158,7 @@
// 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)
- if(O.force)
+ if(O.damage_force)
if(prob(20))
visible_message("\The [src] blocks \the [O] with its shield!")
if(user)
@@ -170,7 +170,7 @@
to_chat(user, "This weapon is ineffective, it does no damage.")
visible_message("\The [user] gently taps [src] with \the [O].")
-/mob/living/simple_mob/humanoid/merc/melee/sword/bullet_act(var/obj/item/projectile/Proj)
+/mob/living/simple_mob/humanoid/merc/melee/sword/bullet_act(var/obj/projectile/Proj)
if(!Proj) return
if(prob(35))
visible_message("[src] blocks [Proj] with its shield!")
@@ -191,7 +191,7 @@
desc = "A tough looking individual armed with an pistol."
icon_state = "syndicateranged"
icon_living = "syndicateranged"
- projectiletype = /obj/item/projectile/bullet/pistol/medium
+ projectiletype = /obj/projectile/bullet/pistol/medium
// casingtype = /obj/item/ammo_casing/spent //Makes infinite stacks of bullets when put in PoIs.
projectilesound = 'sound/weapons/Gunshot_light.ogg'
loot_list = list(/obj/item/gun/ballistic/colt = 100)
@@ -240,7 +240,7 @@
desc = "A tough looking individual armed with an laser rifle."
icon_state = "syndicateranged_laser"
icon_living = "syndicateranged_laser"
- projectiletype = /obj/item/projectile/beam/midlaser
+ projectiletype = /obj/projectile/beam/midlaser
projectilesound = 'sound/weapons/Laser.ogg'
loot_list = list(/obj/item/gun/energy/laser = 100)
@@ -253,7 +253,7 @@
desc = "A tough looking individual armed with an ion rifle."
icon_state = "syndicateranged_ionrifle"
icon_living = "syndicateranged_ionrifle"
- projectiletype = /obj/item/projectile/ion
+ projectiletype = /obj/projectile/ion
projectilesound = 'sound/weapons/Laser.ogg'
loot_list = list(/obj/item/gun/energy/ionrifle = 100)
@@ -266,7 +266,7 @@
desc = "A tough looking individual armed with a semiautomatic rifle."
icon_state = "syndicateranged_veteran"
icon_living = "syndicateranged_veteran"
- projectiletype = /obj/item/projectile/bullet/rifle/a762
+ projectiletype = /obj/projectile/bullet/rifle/a762
projectilesound = 'sound/weapons/Gunshot_heavy.ogg'
loot_list = list(/obj/item/gun/ballistic/garand = 100)
@@ -280,7 +280,7 @@
desc = "A tough looking individual armed with an handcannon."
icon_state = "syndicate_handcannon"
icon_living = "syndicate_handcannon"
- projectiletype = /obj/item/projectile/bullet/pistol/strong
+ projectiletype = /obj/projectile/bullet/pistol/strong
projectilesound = 'sound/weapons/Gunshot_deagle.ogg'
loot_list = list(/obj/item/gun/ballistic/deagle = 100)
@@ -302,7 +302,7 @@
desc = "A tough looking individual armed with a shotgun and a belt of grenades."
icon_state = "syndicateranged_shotgun"
icon_living = "syndicateranged_shotgun"
- projectiletype = /obj/item/projectile/bullet/pellet/shotgun // Buckshot
+ projectiletype = /obj/projectile/bullet/pellet/shotgun // Buckshot
projectilesound = 'sound/weapons/Gunshot_shotgun.ogg'
catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/human/grenadier)
@@ -336,7 +336,7 @@
movement_cooldown = 0
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit
min_oxy = 0
max_oxy = 0
@@ -362,7 +362,7 @@
movement_cooldown = 0
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit. This should already have been here when polaris patched these guys in.
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit. This should already have been here when polaris patched these guys in.
min_oxy = 0
max_oxy = 0
@@ -395,7 +395,7 @@
reload_max = 7
reload_time = 2 SECONDS //Takes a While to load all those shells.
- projectiletype = /obj/item/projectile/bullet/pellet/shotgun // Buckshot
+ projectiletype = /obj/projectile/bullet/pellet/shotgun // Buckshot
projectilesound = 'sound/weapons/Gunshot_shotgun.ogg'
loot_list = list(/obj/item/gun/ballistic/shotgun/pump/combat = 100)
@@ -410,7 +410,7 @@
base_attack_cooldown = 5 // Two attacks a second or so.
reload_max = 24
- projectiletype = /obj/item/projectile/bullet/pellet/shotgun // Buckshot
+ projectiletype = /obj/projectile/bullet/pellet/shotgun // Buckshot
projectilesound = 'sound/weapons/Gunshot_shotgun.ogg'
loot_list = list(/obj/item/gun/ballistic/automatic/as24 = 100)
@@ -427,7 +427,7 @@
base_attack_cooldown = 2.5 // Four Attacks a Second. MOAR DAKKA
reload_max = 50
- projectiletype = /obj/item/projectile/bullet/rifle/a545
+ projectiletype = /obj/projectile/bullet/rifle/a545
projectilesound = 'sound/weapons/Gunshot_light.ogg'
loot_list = list(/obj/item/gun/ballistic/automatic/lmg = 100)
@@ -445,7 +445,7 @@
reload_max = 3
reload_time = 0.5 // Meant to Simulate controlled Supressive Bursts
- projectiletype = /obj/item/projectile/beam/weaklaser
+ projectiletype = /obj/projectile/beam/weaklaser
projectilesound = 'sound/weapons/Laser.ogg'
loot_list = list(/obj/item/gun/energy/tommylaser = 100)
@@ -457,7 +457,7 @@
desc = "A tough looking individual armed with a assault rifle."
icon_state = "syndicatespace-commando"
icon_living = "syndicatespace-commando"
- projectiletype = /obj/item/projectile/bullet/rifle/a762
+ projectiletype = /obj/projectile/bullet/rifle/a762
projectilesound = 'sound/weapons/Gunshot_heavy.ogg'
loot_list = list(/obj/item/gun/ballistic/automatic/fal = 100)
@@ -483,10 +483,10 @@
desc = "Geeze, weren't shotgun ops bad enough? At least when you fade these jerks you get a flashbang to the face."
icon_state = "syndi-ranged-space-sup"
icon_living = "syndi-ranged-space-sup"
- armor = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 100) // this is the merc rig's stats
+ armor_legacy_mob = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 100) // this is the merc rig's stats
ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/suppressor
say_list_type = /datum/say_list/merc/elite
- projectiletype = /obj/item/projectile/bullet/pistol/medium/ap/suppressor // it's high velocity
+ projectiletype = /obj/projectile/bullet/pistol/medium/ap/suppressor // it's high velocity
projectilesound = 'sound/weapons/doompistol.ogg' // converted from .wavs extracted from doom 2
base_attack_cooldown = 3 // three? attacks a second
reload_max = 30 // extended mags
@@ -512,15 +512,15 @@
desc = "Geeze, weren't normal suppressors bad enough? At least if you fade this jerk, you'll have an awful time anyway."
icon_state = "syndi-ranged-space-sup-elite"
icon_living = "syndi-ranged-space-sup-elite"
- armor = list(melee = 80, bullet = 70, laser = 55, energy = 15, bomb = 80, bio = 100, rad = 100) // see code for military hardsuit
- projectiletype = /obj/item/projectile/bullet/pistol/medium/ap/suppressor/turbo // fuck it, fast bullets
+ armor_legacy_mob = list(melee = 80, bullet = 70, laser = 55, energy = 15, bomb = 80, bio = 100, rad = 100) // see code for military hardsuit
+ projectiletype = /obj/projectile/bullet/pistol/medium/ap/suppressor/turbo // fuck it, fast bullets
grenade_type = /obj/item/grenade/shooter/rubber // don't group up
grenade_timer = 30 // well, look what you've done, you've grouped up
// deathnade_path = /obj/item/grenade/flashbang/stingbang/shredbang // REALLY don't group up
// being Actual Professionals, they have better (read: player-level) blocking chances
/mob/living/simple_mob/humanoid/merc/ranged/space/suppressor/attackby(var/obj/item/O, var/mob/user)
- if(O.force)
+ if(O.damage_force)
if(prob(50))
visible_message("\The [src] blocks \the [O] with its shield!")
if(user)
@@ -531,7 +531,7 @@
else
visible_message("\The [user] gently taps [src] with \the [O].")
-/mob/living/simple_mob/humanoid/merc/ranged/space/suppressor/bullet_act(var/obj/item/projectile/Proj)
+/mob/living/simple_mob/humanoid/merc/ranged/space/suppressor/bullet_act(var/obj/projectile/Proj)
if(!Proj) return
if(prob(50))
visible_message("[src] blocks [Proj] with its shield!")
@@ -605,7 +605,7 @@
attack_sharp = 1
attack_edge = 1
attacktext = list("slashed", "stabbed")
- armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Matching Merc voidsuit stats to represent toughness.
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Matching Merc voidsuit stats to represent toughness.
min_oxy = 0 //Vox are spaceproof.
max_oxy = 0
@@ -629,7 +629,7 @@
/mob/living/simple_mob/humanoid/merc/voxpirate/pirate
name = "vox pirate"
desc = "A desperate looking Vox. Get your gun."
- projectiletype = /obj/item/projectile/bullet/rifle/a762
+ projectiletype = /obj/projectile/bullet/rifle/a762
projectilesound = 'sound/weapons/riflebolt.ogg'
needs_reload = TRUE
reload_max = 20
@@ -665,7 +665,7 @@
// 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)
- if(O.force)
+ if(O.damage_force)
if(prob(20))
visible_message("\The [src] blocks \the [O] with its sword!")
if(user)
@@ -677,7 +677,7 @@
to_chat(user, "This weapon is ineffective, it does no damage.")
visible_message("\The [user] gently taps [src] with \the [O].")
-/mob/living/simple_mob/humanoid/merc/voxpirate/boarder/bullet_act(var/obj/item/projectile/Proj)
+/mob/living/simple_mob/humanoid/merc/voxpirate/boarder/bullet_act(var/obj/projectile/Proj)
if(!Proj) return
if(prob(35))
visible_message("[src] blocks [Proj] with its sword!")
@@ -699,7 +699,7 @@
icon_dead = "voxboarder_r_dead"
catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/vox/boarder)
- projectiletype = /obj/item/projectile/bullet/pellet/shotgun
+ projectiletype = /obj/projectile/bullet/pellet/shotgun
projectilesound = 'sound/weapons/Gunshot_shotgun.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive
@@ -730,7 +730,7 @@
icon_dead = "voxboarder_t_dead"
catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/vox/technician)
- projectiletype = /obj/item/projectile/ion
+ projectiletype = /obj/projectile/ion
projectilesound = 'sound/weapons/Laser.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
@@ -760,9 +760,9 @@
icon_dead = "voxsuppresor_dead"
catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/vox/suppressor)
- armor = list(melee = 30, bullet = 50, laser = 60, energy = 30, bomb = 35, bio = 100, rad = 100) // Boosted armor to represent Tank role.
+ armor_legacy_mob = list(melee = 30, bullet = 50, laser = 60, energy = 30, bomb = 35, bio = 100, rad = 100) // Boosted armor to represent Tank role.
- projectiletype = /obj/item/projectile/sonic/weak
+ projectiletype = /obj/projectile/sonic/weak
projectilesound = 'sound/effects/basscannon.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/destructive
@@ -792,9 +792,9 @@
icon_dead = "voxcaptain_dead"
catalogue_data = list(/datum/category_item/catalogue/fauna/mercenary/vox/captain)
- armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 100) // Vox RIG armor values.
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 100) // Vox RIG armor values.
- projectiletype = /obj/item/projectile/beam/darkmatter
+ projectiletype = /obj/projectile/beam/darkmatter
projectilesound = 'sound/weapons/eLuger.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/destructive
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 38ac995fa01..26c64006536 100644
--- a/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm
@@ -57,7 +57,7 @@
icon_state = "piratemelee-armor"
icon_living = "piratemelee-armor"
movement_cooldown = 4
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
loot_list = list(/obj/item/material/knife/tacknife = 100, /obj/item/clothing/accessory/armor/armorplate/stab = 100)
corpse = /obj/spawner/corpse/pirate/melee_armor
@@ -98,7 +98,7 @@
icon_state = "piratemelee-machete-armor"
icon_living = "piratemelee-machete-armor"
movement_cooldown = 3
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
loot_list = list(/obj/item/material/knife/machete = 100, /obj/item/clothing/accessory/armor/armorplate/stab = 100)
corpse = /obj/spawner/corpse/pirate/melee_machete_armor
@@ -133,7 +133,7 @@
icon_state = "piratemelee-las-armor"
icon_living = "piratemelee-las-armor"
movement_cooldown = 4
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ 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)
corpse = /obj/spawner/corpse/pirate/melee_energy_armor
@@ -152,7 +152,7 @@
//This Should Allow all childs of the shield priate to block
/mob/living/simple_mob/humanoid/pirate/shield/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if(O.force)
+ if(O.damage_force)
if(prob(15))
visible_message("\The [src] blocks \the [O] with its shield!")
if(user)
@@ -164,7 +164,7 @@
to_chat(user, "This weapon is ineffective, it does no damage.")
visible_message("\The [user] gently taps [src] with \the [O].")
-/mob/living/simple_mob/humanoid/merc/melee/sword/bullet_act(var/obj/item/projectile/Proj)
+/mob/living/simple_mob/humanoid/merc/melee/sword/bullet_act(var/obj/projectile/Proj)
if(!Proj) return
if(prob(25))
visible_message("[src] blocks [Proj] with its shield!")
@@ -181,7 +181,7 @@
icon_state = "piratemelee-shield-armor"
icon_living = "piratemelee-shield-armor"
movement_cooldown = 3
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
loot_list = list(/obj/item/material/knife/tacknife = 100, /obj/item/shield/riot/tower = 100)
corpse = /obj/spawner/corpse/pirate/melee_shield_armor
@@ -219,7 +219,7 @@
icon_state = "piratemelee-shield-machete-armor"
icon_living = "piratemelee-shield-machete-armor"
movement_cooldown = 4
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
loot_list = list(/obj/item/material/knife/machete = 100, /obj/item/shield/riot/tower = 100)
corpse = /obj/spawner/corpse/pirate/melee_shield_machete_armor
@@ -239,7 +239,7 @@
needs_reload = TRUE
reload_max = 1
- projectiletype = /obj/item/projectile/bullet/shotgun
+ projectiletype = /obj/projectile/bullet/shotgun
projectilesound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
loot_list = list(/obj/item/gun/ballistic/pirate = 100, /obj/item/material/knife/tacknife = 100)
@@ -256,7 +256,7 @@
icon_state = "pirateranged-armor"
icon_living = "pirateranged-armor"
movement_cooldown = 4
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
loot_list = list(/obj/item/material/knife/tacknife = 100, /obj/item/gun/ballistic/pirate = 100, /obj/item/clothing/accessory/armor/armorplate/bulletproof = 100)
corpse = /obj/spawner/corpse/pirate/ranged_armor
@@ -276,7 +276,7 @@
needs_reload = TRUE
reload_max = 2
- projectiletype = /obj/item/projectile/bullet/pellet/shotgun
+ projectiletype = /obj/projectile/bullet/pellet/shotgun
projectilesound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
loot_list = list(/obj/item/gun/ballistic/shotgun/doublebarrel/sawn = 100, /obj/item/material/knife/tacknife = 100)
@@ -292,7 +292,7 @@
icon_state = "pirateranged-blunder-armor"
icon_living = "pirateranged-blunder-armor"
movement_cooldown = 4
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
loot_list = list(/obj/item/material/knife/tacknife = 100, /obj/item/gun/ballistic/shotgun/doublebarrel/sawn = 100, /obj/item/clothing/accessory/armor/armorplate/bulletproof = 100)
corpse = /obj/spawner/corpse/pirate/ranged_blunderbuss_armor
@@ -312,7 +312,7 @@
needs_reload = TRUE
reload_max = 1
- projectiletype = /obj/item/projectile/beam/heavylaser
+ projectiletype = /obj/projectile/beam/heavylaser
projectilesound = 'sound/weapons/weaponsounds_laserstrong.ogg'
loot_list = list(/obj/item/gun/energy/zip = 100, /obj/item/material/knife/tacknife = 100)
@@ -328,7 +328,7 @@
icon_state = "pirateranged-handcannon-armor"
icon_living = "pirateranged-handcannon-armor"
movement_cooldown = 4
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
loot_list = list(/obj/item/material/knife/tacknife = 100, /obj/item/gun/energy/zip = 100, /obj/item/clothing/accessory/armor/armorplate/bulletproof = 100)
corpse = /obj/spawner/corpse/pirate/ranged_laser_armor
@@ -350,7 +350,7 @@
attack_sound = 'sound/weapons/blade1.ogg'
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ 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)
@@ -374,7 +374,7 @@
melee_damage_lower = 15
melee_damage_upper = 15
- projectiletype = /obj/item/projectile/beam/midlaser
+ projectiletype = /obj/projectile/beam/midlaser
projectilesound = 'sound/weapons/weaponsounds_lasermid.ogg'
attack_sound = 'sound/weapons/bladeslice.ogg'
@@ -417,7 +417,7 @@
melee_damage_upper = 15
attack_sound = 'sound/weapons/bladeslice.ogg'
- projectiletype = /obj/item/projectile/bullet/pellet/shotgun
+ projectiletype = /obj/projectile/bullet/pellet/shotgun
projectilesound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
base_attack_cooldown = 5
@@ -445,7 +445,7 @@
melee_damage_upper = 15
attack_sound = 'sound/weapons/bladeslice.ogg'
- projectiletype = /obj/item/projectile/bullet/rifle/a762
+ projectiletype = /obj/projectile/bullet/rifle/a762
projectilesound = 'sound/weapons/weaponsounds_heavyrifleshot.ogg'
base_attack_cooldown = 10
@@ -467,7 +467,7 @@
needs_reload = TRUE
reload_max = 4 // More than capable to shredding explo's shield especially when backed up by a few mates.
- projectiletype = /obj/item/projectile/beam/heavylaser
+ projectiletype = /obj/projectile/beam/heavylaser
projectilesound = 'sound/weapons/weaponsounds_laserstrong.ogg'
base_attack_cooldown = 5
@@ -583,7 +583,7 @@
needs_reload = TRUE
reload_max = 2
- projectiletype = /obj/item/projectile/bullet/pellet/shotgun
+ projectiletype = /obj/projectile/bullet/pellet/shotgun
projectilesound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
loot_list = list(/obj/item/gun/ballistic/shotgun/doublebarrel/sawn = 100, /obj/item/material/knife/tacknife = 100)
@@ -597,7 +597,7 @@
icon_state = "pirateranged-blunder-armor"
icon_living = "pirateranged-blunder-armor"
movement_cooldown = 4
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
loot_list = list(/obj/item/material/knife/tacknife = 100, /obj/item/gun/ballistic/shotgun/doublebarrel/sawn = 100, /obj/item/clothing/suit/armor/material/makeshift = 100)
///////////////////////////////
@@ -615,7 +615,7 @@
needs_reload = TRUE
reload_max = 1
- projectiletype = /obj/item/projectile/beam/heavylaser
+ projectiletype = /obj/projectile/beam/heavylaser
projectilesound = 'sound/weapons/weaponsounds_laserstrong.ogg'
loot_list = list(/obj/item/gun/energy/zip = 100, /obj/item/material/knife/tacknife = 100)
@@ -629,7 +629,7 @@
icon_state = "pirateranged-handcannon-armor"
icon_living = "pirateranged-handcannon-armor"
movement_cooldown = 4
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
loot_list = list(/obj/item/material/knife/tacknife = 100, /obj/item/gun/energy/zip = 100, /obj/item/clothing/suit/armor/material/makeshift = 100)
///////////////////////////////
@@ -649,7 +649,7 @@
attack_sound = 'sound/weapons/blade1.ogg'
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 5, bomb = 5, bio = 100, rad = 100)
+ 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)
@@ -672,7 +672,7 @@
melee_damage_lower = 15
melee_damage_upper = 15
- projectiletype = /obj/item/projectile/beam/midlaser
+ projectiletype = /obj/projectile/beam/midlaser
projectilesound = 'sound/weapons/weaponsounds_lasermid.ogg'
attack_sound = 'sound/weapons/bladeslice.ogg'
@@ -711,7 +711,7 @@
melee_damage_upper = 15
attack_sound = 'sound/weapons/bladeslice.ogg'
- projectiletype = /obj/item/projectile/bullet/pellet/shotgun
+ projectiletype = /obj/projectile/bullet/pellet/shotgun
projectilesound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
base_attack_cooldown = 5
@@ -737,7 +737,7 @@
melee_damage_upper = 15
attack_sound = 'sound/weapons/bladeslice.ogg'
- projectiletype = /obj/item/projectile/bullet/rifle/a762
+ projectiletype = /obj/projectile/bullet/rifle/a762
projectilesound = 'sound/weapons/weaponsounds_heavyrifleshot.ogg'
base_attack_cooldown = 10
@@ -757,7 +757,7 @@
needs_reload = TRUE
reload_max = 4 // More than capable to shredding explo's shield especially when backed up by a few mates.
- projectiletype = /obj/item/projectile/beam/heavylaser
+ projectiletype = /obj/projectile/beam/heavylaser
projectilesound = 'sound/weapons/weaponsounds_laserstrong.ogg'
base_attack_cooldown = 5
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/possessed.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/possessed.dm
index 5e5719fb680..15943ec829f 100644
--- a/code/modules/mob/living/simple_mob/subtypes/humanoid/possessed.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/possessed.dm
@@ -36,7 +36,7 @@
melee_damage_upper = 25
attacktext = list("punched", "kicked", "smacked")
attack_sound = "punch"
- armor = list(melee = 30, bullet = 10, laser = 20,energy = 25, bomb = 20, bio = 100, rad = 100) //This should be the same as the base RIG.
+ armor_legacy_mob = list(melee = 30, bullet = 10, laser = 20,energy = 25, bomb = 20, bio = 100, rad = 100) //This should be the same as the base RIG.
has_hands = 1
humanoid_hands = 1
@@ -142,7 +142,7 @@
icon_state = "industrial-rig"
rig1 = /obj/item/rig/industrial/old
rig2 = /obj/item/rig/industrial/old/spring
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
/obj/item/rig/industrial/old
name = "old Industrial hardsuit"
@@ -158,7 +158,7 @@
icon_state = "merc-rig"
rig1 = /obj/item/rig/merc/old
rig2 = /obj/item/rig/merc/old/spring
- armor = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 60)
+ armor_legacy_mob = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 60)
/obj/item/rig/merc/old
name = "old crimson hardsuit control module"
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm
index 93d63c7fa53..82a15964ca6 100644
--- a/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm
@@ -40,7 +40,7 @@
icon_state = "russianranged"
icon_living = "russianranged"
- projectiletype = /obj/item/projectile/bullet
+ projectiletype = /obj/projectile/bullet
casingtype = /obj/item/ammo_casing/spent
projectilesound = 'sound/weapons/Gunshot4.ogg'
diff --git a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
index fcf5e4d8f80..a789fa97b98 100644
--- a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
@@ -45,7 +45,7 @@
return
-/mob/living/simple_mob/illusion/bullet_act(obj/item/projectile/P)
+/mob/living/simple_mob/illusion/bullet_act(obj/projectile/P)
if(!P)
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm
index 35a02d48ec2..8bc417e2d27 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm
@@ -47,7 +47,7 @@
hovering = TRUE
base_attack_cooldown = 5
- projectiletype = /obj/item/projectile/beam/drone
+ projectiletype = /obj/projectile/beam/drone
projectilesound = 'sound/weapons/laser3.ogg'
response_help = "pokes"
@@ -80,7 +80,7 @@
/mob/living/simple_mob/mechanical/combat_drone/Process_Spacemove(var/check_drift = 0)
return TRUE
-/obj/item/projectile/beam/drone
+/obj/projectile/beam/drone
damage = 10
/obj/item/shield_projector/rectangle/automatic/drone
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/cyber_horror/cyber_horror.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/cyber_horror/cyber_horror.dm
index 2773cbb4a68..275c68cf6f3 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/cyber_horror/cyber_horror.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/cyber_horror/cyber_horror.dm
@@ -35,7 +35,7 @@
movement_cooldown = 3
movement_sound = 'sound/effects/houndstep.ogg'
// To promote a more diverse weapon selection.
- armor = list(melee = 25, bullet = 25, laser = -20, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 25, bullet = 25, laser = -20, bio = 100, rad = 100)
hovering = FALSE
say_list_type = /datum/say_list/cyber_horror
@@ -68,7 +68,7 @@
icon_state = "plasma_cyber_horror"
icon_dead = "plasma_cyber_horror_dead"
- armor = list(melee = 40, bullet = -10, laser = 40, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 40, bullet = -10, laser = 40, bio = 100, rad = 100)
maxHealth = 75
health = 75
@@ -123,7 +123,7 @@
ai_holder_type = /datum/ai_holder/simple_mob/melee
// You do NOT Want to get in touchy range of this thing.
- armor = list(melee = 75, bullet = -10, laser = -25, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 75, bullet = -10, laser = -25, bio = 100, rad = 100)
hovering = FALSE
@@ -205,7 +205,7 @@
icon_state = "vox_cyber_horror"
icon_dead = "vox_cyber_horror_dead"
- armor = list(melee = 40, bullet = 30, laser = 30, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 40, bullet = 30, laser = 30, bio = 100, rad = 100)
ai_holder_type = /datum/ai_holder/simple_mob/melee
meat_amount = 2
@@ -299,7 +299,7 @@
..() // For the poison.
// Force unstealthing if attacked.
-/mob/living/simple_mob/mechanical/cyber_horror/tajaran/bullet_act(obj/item/projectile/P)
+/mob/living/simple_mob/mechanical/cyber_horror/tajaran/bullet_act(obj/projectile/P)
. = ..()
break_cloak()
@@ -316,13 +316,13 @@
maxHealth = 100
health = 100
- projectiletype = /obj/item/projectile/arc/blue_energy
+ projectiletype = /obj/projectile/arc/blue_energy
projectilesound = 'sound/weapons/Laser.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
- armor = list(melee = -30, bullet = 10, laser = 10, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = -30, bullet = 10, laser = 10, bio = 100, rad = 100)
-/obj/item/projectile/arc/blue_energy
+/obj/projectile/arc/blue_energy
name = "energy missle"
icon_state = "force_missile"
damage = 12
@@ -338,7 +338,7 @@
health = 50
base_attack_cooldown = 4
- projectiletype = /obj/item/projectile/beam/drone
+ projectiletype = /obj/projectile/beam/drone
projectilesound = 'sound/weapons/laser3.ogg'
movement_sound = 'sound/effects/servostep.ogg'
@@ -390,9 +390,9 @@
L.reagents.add_reagent(poison_type, poison_per_bite)
//These are the projectiles mobs use
-/obj/item/projectile/beam/drone
+/obj/projectile/beam/drone
damage = 3
-/obj/item/projectile/arc/blue_energy
+/obj/projectile/arc/blue_energy
name = "energy missle"
icon_state = "force_missile"
damage = 12
@@ -407,7 +407,7 @@
icon_dead = "the_changed_dead"
maxHealth = 450
health = 450
- armor = list(melee = 30, bullet = 20, laser = 20, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 30, bullet = 20, laser = 20, bio = 100, rad = 100)
response_harm = "harmlessly punches"
harm_intent_damage = 0
melee_damage_lower = 5
@@ -425,17 +425,17 @@
var/poison_type = "neurophage_nanites"
base_attack_cooldown = 30
- projectiletype = /obj/item/projectile/arc/blue_energy/priest
+ projectiletype = /obj/projectile/arc/blue_energy/priest
projectilesound = 'sound/weapons/Laser.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive/priest
-/obj/item/projectile/arc/blue_energy/priest
+/obj/projectile/arc/blue_energy/priest
name = "nanite cloud"
icon_state = "particle-heavy"
damage = 15
damage_type = BRUTE
-/obj/item/projectile/arc/blue_energy/priest/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/arc/blue_energy/priest/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
M.Confuse(rand(3,5))
@@ -487,7 +487,7 @@
visible_message(SPAN_WARNING( "[src] discharges a beam of concentrated energy!"))
playsound(src, 'sound/weapons/lasercannonfire.ogg', 70, 1)
face_atom(T)
- var/obj/item/projectile/arc/radioactive/priest/ball = new(loc)
+ var/obj/projectile/arc/radioactive/priest/ball = new(loc)
ball.old_style_target(T, src)
ball.fire()
sleep(2 SECONDS)
@@ -495,12 +495,12 @@
visible_message(SPAN_WARNING( "[src] closes its reactor port."))
playsound(src, 'sound/effects/turret/move2.wav', 50, 1)
-/obj/item/projectile/arc/radioactive/priest
+/obj/projectile/arc/radioactive/priest
name = "superheated plama discharge"
icon_state = "plasma3"
rad_power = RAD_INTENSITY_PROJ_ARC_HORROR_PRIEST
-/obj/item/projectile/arc/radioactive/priest/on_impact(turf/T)
+/obj/projectile/arc/radioactive/priest/on_impact(turf/T)
. = ..()
new /obj/effect/explosion(T)
explosion(T, 0, 1, 4)
@@ -588,7 +588,7 @@
desc = "The casing and writhing flesh of this body have been adorned in ritual wax and religious icons. Burned prayer sheets daubed in its own dripping blood flap in the stifling air. The cruciform body integrated into the machine wriggles feebly, its jaw tightly wagging up and down - it has no mouth."
maxHealth = 1500
health = 1500
- armor = list(melee = 50, bullet = 35, laser = 35, bio = 100, rad = 100)
+ armor_legacy_mob = list(melee = 50, bullet = 35, laser = 35, bio = 100, rad = 100)
movement_cooldown = 4
melee_damage_lower = 15
melee_damage_upper = 25
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm
index 1fcfaa59a66..5f368440c9f 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm
@@ -42,7 +42,7 @@
qdel(src)
// The hivebot's default projectile.
-/obj/item/projectile/bullet/hivebot
+/obj/projectile/bullet/hivebot
damage = 10
damage_type = BRUTE
sharp = FALSE
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 4cef00a9584..29088e3ee6a 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
@@ -3,7 +3,7 @@
/mob/living/simple_mob/mechanical/hivebot/ranged_damage
maxHealth = 2 LASERS_TO_KILL // 60 health
health = 2 LASERS_TO_KILL
- projectiletype = /obj/item/projectile/bullet/hivebot
+ projectiletype = /obj/projectile/bullet/hivebot
// The regular ranged hivebot, that fires somewhat weak projectiles.
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/basic
@@ -23,7 +23,7 @@
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser
name = "laser hivebot"
desc = "A robot with a photonic weapon integrated into itself."
- projectiletype = /obj/item/projectile/beam/blue
+ projectiletype = /obj/projectile/beam/blue
projectilesound = 'sound/weapons/Laser.ogg'
player_msg = "You have a laser attack."
@@ -35,7 +35,7 @@
icon_state = "yellow"
icon_living = "yellow"
- projectiletype = /obj/item/projectile/ion
+ projectiletype = /obj/projectile/ion
projectilesound = 'sound/weapons/Laser.ogg'
player_msg = "You have a ranged ion attack, which is very strong against other synthetics.
\
Be careful to not hit yourself or your team, as it will affect you as well."
@@ -64,13 +64,13 @@
icon_state = "red"
icon_living = "red"
- projectiletype = /obj/item/projectile/fire
+ projectiletype = /obj/projectile/fire
heat_resist = 1
player_msg = "Your attacks inflict a damage over time effect, that will \
harm your target slowly. The effect stacks with further attacks.
\
You are also immune to fire."
-/obj/item/projectile/fire
+/obj/projectile/fire
name = "ember"
icon = 'icons/effects/effects.dmi'
icon_state = "explosion_particle"
@@ -86,12 +86,12 @@
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/backline
name = "backline hivebot"
desc = "A robot that can fire short-ranged projectiles over their allies."
- projectiletype = /obj/item/projectile/arc/blue_energy
+ projectiletype = /obj/projectile/arc/blue_energy
projectilesound = 'sound/weapons/Laser.ogg'
player_msg = "Your attacks are short-ranged, but can arc over obstructions such as allies \
or barriers."
-/obj/item/projectile/arc/blue_energy
+/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.
@@ -104,7 +104,7 @@
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege
name = "siege engine hivebot"
desc = "A large robot capable of delivering long range bombardment."
- projectiletype = /obj/item/projectile/arc/test
+ projectiletype = /obj/projectile/arc/test
icon_scale_x = 2
icon_scale_y = 2
icon_state = "red"
@@ -119,17 +119,17 @@
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/emp
name = "ionic artillery hivebot"
desc = "A large robot capable of annihilating electronics from a long distance."
- projectiletype = /obj/item/projectile/arc/emp_blast
+ projectiletype = /obj/projectile/arc/emp_blast
-/obj/item/projectile/arc/emp_blast
+/obj/projectile/arc/emp_blast
name = "emp blast"
icon_state = "bluespace"
-/obj/item/projectile/arc/emp_blast/on_impact(turf/T)
+/obj/projectile/arc/emp_blast/on_impact(turf/T)
empulse(T, 2, 4, 7, 10) // Normal EMP grenade.
return ..()
-/obj/item/projectile/arc/emp_blast/weak/on_impact(turf/T)
+/obj/projectile/arc/emp_blast/weak/on_impact(turf/T)
empulse(T, 1, 2, 3, 4) // Sec EMP grenade.
return ..()
@@ -138,11 +138,11 @@
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/radiation
name = "desolator hivebot"
desc = "A large robot capable of irradiating a large area from afar."
- projectiletype = /obj/item/projectile/arc/radioactive
+ projectiletype = /obj/projectile/arc/radioactive
// Essentially a long ranged frag grenade.
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/fragmentation
name = "anti-personnel artillery hivebot"
desc = "A large robot capable of delivering fragmentation shells to rip apart their fleshy enemies."
- projectiletype = /obj/item/projectile/arc/fragmentation
+ projectiletype = /obj/projectile/arc/fragmentation
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/tank.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/tank.dm
index 3ba66b63fa1..89b630f3531 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/tank.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/tank.dm
@@ -56,31 +56,26 @@
// Note that armor effectively makes lasers do about 9 damage instead of 30,
// so it has an effective health of ~16.6 LASERS_TO_KILL if regular lasers are used.
// Xrays will do much better against this.
- armor = list(
+ armor_legacy_mob = list(
"melee" = 40,
+ "melee_soak" = 15,
"bullet" = 40,
+ "bullet_soak" = 10,
"laser" = 40,
+ "laser_soak" = 15,
"energy" = 30,
"bomb" = 30,
"bio" = 100,
"rad" = 100
)
- armor_soak = list(
- "melee" = 15,
- "bullet" = 10,
- "laser" = 15,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_melee
name = "riot hivebot"
desc = "A robot specialized in close quarters combat."
player_msg = "You are heavily armored against close quarters combat."
- armor = list(
+ armor_legacy_mob = list(
"melee" = 70,
+ "melee_soak" = 20,
"bullet" = 0,
"laser" = 0,
"energy" = 0,
@@ -88,66 +83,42 @@
"bio" = 100,
"rad" = 100
)
- armor_soak = list(
- "melee" = 20,
- "bullet" = 0,
- "laser" = 0,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_bullet
name = "bulletproof hivebot"
desc = "A robot specialized in ballistic defense."
player_msg = "You are heavily armored against ballistic weapons."
- armor = list(
+ armor_legacy_mob = list(
"melee" = 0,
"bullet" = 70,
+ "bullet_soak" = 20,
"laser" = 0,
"energy" = 0,
"bomb" = 0,
"bio" = 100,
"rad" = 100
)
- armor_soak = list(
- "melee" = 0,
- "bullet" = 20,
- "laser" = 0,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_laser
name = "ablative hivebot"
desc = "A robot specialized in photonic defense."
player_msg = "You are heavily armored against laser weapons."
- armor = list(
+ armor_legacy_mob = list(
"melee" = 0,
"bullet" = 0,
"laser" = 70,
+ "laser_soak" = 20,
"energy" = 0,
"bomb" = 0,
"bio" = 100,
"rad" = 100
)
- armor_soak = list(
- "melee" = 0,
- "bullet" = 0,
- "laser" = 20,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
+
var/reflect_chance = 40 // Same as regular ablative.
// Ablative Hivebots can reflect lasers just like humans.
-/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_laser/bullet_act(obj/item/projectile/P)
- if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
+/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_laser/bullet_act(obj/projectile/P)
+ if(istype(P, /obj/projectile/energy) || istype(P, /obj/projectile/beam))
var/reflect_prob = reflect_chance - round(P.damage/3)
if(prob(reflect_prob))
visible_message(SPAN_DANGER("The [P.name] gets reflected by [src]'s armor!"), \
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 9396bbb49d0..60ea5d44011 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
@@ -84,7 +84,7 @@
maxHealth = 450
deflect_chance = 25
has_repair_droid = TRUE
- armor = list(
+ armor_legacy_mob = list(
"melee" = 50,
"bullet" = 50,
"laser" = 50,
@@ -97,7 +97,7 @@
special_attack_min_range = 1
special_attack_max_range = 7
special_attack_cooldown = 10 SECONDS
- projectiletype = /obj/item/projectile/energy/homing_bolt // We're now a bullet hell game.
+ projectiletype = /obj/projectile/energy/homing_bolt // We're now a bullet hell game.
projectilesound = 'sound/weapons/wave.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
var/obj/effect/overlay/energy_ball/energy_ball = null
@@ -118,19 +118,19 @@
if(INTENT_GRAB) // Micro-singulo
launch_microsingularity(A)
-/obj/item/projectile/energy/homing_bolt
+/obj/projectile/energy/homing_bolt
name = "homing bolt"
icon_state = "force_missile"
damage = 20
damage_type = BURN
- check_armour = "laser"
+ damage_flag = ARMOR_LASER
-/obj/item/projectile/energy/homing_bolt/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
+/obj/projectile/energy/homing_bolt/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
..()
if(target)
set_homing_target(target)
-/obj/item/projectile/energy/homing_bolt/fire(angle, atom/direct_target)
+/obj/projectile/energy/homing_bolt/fire(angle, atom/direct_target)
..()
set_pixel_speed(0.5)
@@ -215,7 +215,7 @@
visible_message(SPAN_WARNING( "\The [src] fires a rocket into the air!"))
playsound(src, 'sound/weapons/rpg.ogg', 70, 1)
face_atom(T)
- var/obj/item/projectile/arc/explosive_rocket/rocket = new(loc)
+ var/obj/projectile/arc/explosive_rocket/rocket = new(loc)
rocket.old_style_target(T, src)
rocket.fire()
sleep(1 SECOND)
@@ -225,11 +225,11 @@
// Arcing rocket projectile that produces a weak explosion when it lands.
// Shouldn't punch holes in the floor, but will still hurt.
-/obj/item/projectile/arc/explosive_rocket
+/obj/projectile/arc/explosive_rocket
name = "rocket"
icon_state = "mortar"
-/obj/item/projectile/arc/explosive_rocket/on_impact(turf/T)
+/obj/projectile/arc/explosive_rocket/on_impact(turf/T)
new /obj/effect/explosion(T) // Weak explosions don't produce this on their own, apparently.
explosion(T, 0, 0, 2, adminlog = FALSE)
@@ -238,15 +238,15 @@
visible_message(SPAN_WARNING( "\The [src] fires an energetic sphere into the air!"))
playsound(src, 'sound/weapons/Laser.ogg', 50, 1)
face_atom(T)
- var/obj/item/projectile/arc/microsingulo/sphere = new(loc)
+ var/obj/projectile/arc/microsingulo/sphere = new(loc)
sphere.old_style_target(T, src)
sphere.fire()
-/obj/item/projectile/arc/microsingulo
+/obj/projectile/arc/microsingulo
name = "micro singularity"
icon_state = "bluespace"
-/obj/item/projectile/arc/microsingulo/on_impact(turf/T)
+/obj/projectile/arc/microsingulo/on_impact(turf/T)
new /obj/effect/temporary_effect/pulse/microsingulo(T)
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/combat_mecha.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/combat_mecha.dm
index 29e40120455..d667be5b147 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/combat_mecha.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/combat_mecha.dm
@@ -11,7 +11,7 @@
melee_attack_delay = 1 SECOND
attacktext = list("punched", "slammed", "uppercutted", "pummeled")
- armor = list(
+ armor_legacy_mob = list(
"melee" = 30,
"bullet" = 30,
"laser" = 15,
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm
index e38b4eb23bc..0bcedb7a3b0 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm
@@ -25,7 +25,7 @@
maxHealth = 400
deflect_chance = 20
- armor = list(
+ armor_legacy_mob = list(
"melee" = 50,
"bullet" = 35,
"laser" = 15,
@@ -37,7 +37,7 @@
melee_damage_lower = 40
melee_damage_upper = 40
base_attack_cooldown = 2 SECONDS
- projectiletype = /obj/item/projectile/beam/heavylaser
+ projectiletype = /obj/projectile/beam/heavylaser
var/defense_mode = FALSE
var/defense_deflect = 35
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm
index 1e241bed441..4cd3de1d9ec 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm
@@ -21,7 +21,7 @@
wreckage = /obj/structure/loot_pile/mecha/gygax
maxHealth = 300
- armor = list(
+ armor_legacy_mob = list(
"melee" = 25,
"bullet" = 20,
"laser" = 30,
@@ -31,7 +31,7 @@
"rad" = 100
)
- projectiletype = /obj/item/projectile/beam/midlaser
+ projectiletype = /obj/projectile/beam/midlaser
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
@@ -63,7 +63,7 @@
maxHealth = 400
deflect_chance = 25
has_repair_droid = TRUE
- armor = list(
+ armor_legacy_mob = list(
"melee" = 40,
"bullet" = 40,
"laser" = 50,
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/honker.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/honker.dm
index 1a89c613c52..b1b5001b4e6 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/honker.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/honker.dm
@@ -21,7 +21,7 @@
wreckage = /obj/structure/loot_pile/mecha/honker
maxHealth = 250
- armor = list(
+ armor_legacy_mob = list(
"melee" = 25,
"bullet" = 20,
"laser" = 30,
@@ -31,7 +31,7 @@
"rad" = 100
)
- projectiletype = /obj/item/projectile/bullet/honker/lethal
+ projectiletype = /obj/projectile/bullet/honker/lethal
ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive
@@ -66,7 +66,7 @@
maxHealth = 400
deflect_chance = 25
has_repair_droid = TRUE
- armor = list(
+ armor_legacy_mob = list(
"melee" = 40,
"bullet" = 40,
"laser" = 50,
@@ -76,4 +76,4 @@
"rad" = 100
)
- projectiletype = /obj/item/projectile/bullet/honker/lethal/heavy
+ projectiletype = /obj/projectile/bullet/honker/lethal/heavy
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/hoverpod.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/hoverpod.dm
index cc1eec0f868..ee31e518d41 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/hoverpod.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/hoverpod.dm
@@ -23,7 +23,7 @@
maxHealth = 150
hovering = TRUE // Can fly.
- projectiletype = /obj/item/projectile/beam
+ projectiletype = /obj/projectile/beam
base_attack_cooldown = 2 SECONDS
var/datum/effect_system/ion_trail_follow/ion_trail
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/marauder.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/marauder.dm
index 6b865a1fe49..3ec4ab6be4b 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/marauder.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/marauder.dm
@@ -19,7 +19,7 @@
maxHealth = 500
deflect_chance = 25
sight = SEE_SELF | SEE_MOBS
- armor = list(
+ armor_legacy_mob = list(
"melee" = 50,
"bullet" = 55,
"laser" = 40,
@@ -31,7 +31,7 @@
melee_damage_lower = 45
melee_damage_upper = 45
base_attack_cooldown = 2 SECONDS
- projectiletype = /obj/item/projectile/beam/heavylaser
+ projectiletype = /obj/projectile/beam/heavylaser
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm
index 0d1d51503ab..b7679d8825a 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm
@@ -15,7 +15,7 @@
mob_size = MOB_LARGE
// Very close to the base 'damage_absorption' var on the base mecha class.
- armor = list(
+ armor_legacy_mob = list(
"melee" = 20,
"bullet" = 10,
"laser" = 0,
@@ -111,7 +111,7 @@
return ..()
*/
-/mob/living/simple_mob/mechanical/mecha/bullet_act(obj/item/projectile/P)
+/mob/living/simple_mob/mechanical/mecha/bullet_act(obj/projectile/P)
if(prob(deflect_chance))
visible_message(SPAN_WARNING( "\The [P] is deflected by \the [src]'s armor!"))
deflect_sprite()
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/micro.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/micro.dm
index 5e446928fd1..cb35f16d78c 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/micro.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/micro.dm
@@ -22,7 +22,7 @@
faction = "mouse_army"
maxHealth = 150
- armor = list(
+ armor_legacy_mob = list(
"melee" = 25,
"bullet" = 20,
"laser" = 30,
@@ -32,7 +32,7 @@
"rad" = 100
)
- projectiletype = /obj/item/projectile/bullet/pistol/medium
+ projectiletype = /obj/projectile/bullet/pistol/medium
movement_cooldown = 2
base_attack_cooldown = 8
@@ -61,7 +61,7 @@
maxHealth = 200
heat_resist = 1
- armor = list(
+ armor_legacy_mob = list(
"melee" = 0,
"bullet" = 20,
"laser" = 50,
@@ -71,7 +71,7 @@
"rad" = 100
)
- projectiletype = /obj/item/projectile/bullet/incendiary/flamethrower/large
+ projectiletype = /obj/projectile/bullet/incendiary/flamethrower/large
movement_cooldown = 3
base_attack_cooldown = 15
@@ -99,7 +99,7 @@
maxHealth = 300
heat_resist = 1
- armor = list(
+ armor_legacy_mob = list(
"melee" = 20,
"bullet" = 50,
"laser" = 50,
@@ -109,7 +109,7 @@
"rad" = 100
)
- projectiletype = /obj/item/projectile/bullet/gyro
+ projectiletype = /obj/projectile/bullet/gyro
movement_cooldown = 5
base_attack_cooldown = 15
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 4d3d1653aba..d35058d6a50 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
@@ -29,7 +29,7 @@
melee_damage_upper = 5
base_attack_cooldown = 2 SECONDS
attacktext = list("injected")
- projectiletype = /obj/item/projectile/fake_syringe/poison
+ projectiletype = /obj/projectile/fake_syringe/poison
projectilesound = 'sound/weapons/empty.ogg' // Just like the syringe gun.
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/no_moonwalk
@@ -60,13 +60,13 @@
// Fake syringe that tests if target can be injected before applying damage/modifiers/etc.
-/obj/item/projectile/fake_syringe
+/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.
var/piercing = FALSE // If true, ignores thick material.
-/obj/item/projectile/fake_syringe/on_hit(atom/target, blocked = 0, def_zone = null)
+/obj/projectile/fake_syringe/on_hit(atom/target, blocked = 0, def_zone = null)
if(isliving(target))
var/mob/living/L = target
if(!L.can_inject(null, null, def_zone, piercing))
@@ -76,6 +76,6 @@
// Fake syringe, which inflicts a long lasting modifier that slowly kills them.
-/obj/item/projectile/fake_syringe/poison
+/obj/projectile/fake_syringe/poison
modifier_type_to_apply = /datum/modifier/poisoned
modifier_duration = 1 MINUTE // About 30 damage per stack over a minute.
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dm
index b0682c85f3d..3512bff0b19 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dm
@@ -22,7 +22,7 @@
maxHealth = 200
deflect_chance = 30
- armor = list(
+ armor_legacy_mob = list(
"melee" = 30,
"bullet" = 30,
"laser" = 30,
@@ -31,5 +31,5 @@
"bio" = 100,
"rad" = 100
)
- projectiletype = /obj/item/projectile/energy/declone
+ projectiletype = /obj/projectile/energy/declone
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/reticent.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/reticent.dm
index 93b25702f67..cc03898e2af 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/reticent.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/reticent.dm
@@ -26,7 +26,7 @@
var/obj/item/shield_projector/shields = null
maxHealth = 180
- armor = list(
+ armor_legacy_mob = list(
"melee" = 40,
"bullet" = 25,
"laser" = 10,
@@ -86,7 +86,7 @@
maxHealth = 350
deflect_chance = 40
has_repair_droid = TRUE
- armor = list(
+ armor_legacy_mob = list(
"melee" = 60,
"bullet" = 40,
"laser" = 50,
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/ripley.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/ripley.dm
index 1fa8f0c5b59..c456e1862ad 100644
--- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/ripley.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/ripley.dm
@@ -47,7 +47,7 @@
maxHealth = 250
heat_resist = 1
- armor = list(
+ armor_legacy_mob = list(
"melee" = 0,
"bullet" = 20,
"laser" = 50,
@@ -84,7 +84,7 @@
maxHealth = 250
heat_resist = 1
- armor = list(
+ armor_legacy_mob = list(
"melee" = 30,
"bullet" = 40,
"laser" = 50,
@@ -94,7 +94,7 @@
"rad" = 100
)
- projectiletype = /obj/item/projectile/bullet/pistol
+ projectiletype = /obj/projectile/bullet/pistol
base_attack_cooldown = 0.5 SECONDS
needs_reload = TRUE
reload_max = 30
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm
index 37d43e77c34..8e9dee3dbfb 100644
--- a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm
@@ -71,7 +71,7 @@
shock_resist = 0.1 //Electricity isn't very effective on stone, especially that from hell.
poison_resist = 1.0
- armor = list(
+ armor_legacy_mob = list(
"melee" = 10,
"bullet" = 10,
"laser" = 10,
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/artificer.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/artificer.dm
index be03e9c5df5..516a6e5981f 100644
--- a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/artificer.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/artificer.dm
@@ -57,5 +57,5 @@
icon_state = "caster_artificer"
icon_living = "caster_artificer"
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting
- projectiletype = /obj/item/projectile/beam/inversion
+ projectiletype = /obj/projectile/beam/inversion
projectilesound = 'sound/weapons/spiderlunge.ogg'
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm
index 69d76011127..25250ee65d9 100644
--- a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm
@@ -36,7 +36,7 @@
attack_sound = 'sound/weapons/pierce.ogg'
- armor = list(
+ armor_legacy_mob = list(
"melee" = 10,
"bullet" = 20,
"laser" = 20,
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/juggernaut.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/juggernaut.dm
index f788d49fe68..4f2d2734776 100644
--- a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/juggernaut.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/juggernaut.dm
@@ -46,7 +46,7 @@
/spell/targeted/construct_advanced/slam
)
- armor = list(
+ armor_legacy_mob = list(
"melee" = 70,
"bullet" = 30,
"laser" = 30,
@@ -63,15 +63,15 @@
. = ..()
AddComponent(/datum/component/horror_aura/strong)
-/mob/living/simple_mob/construct/juggernaut/bullet_act(var/obj/item/projectile/P)
+/mob/living/simple_mob/construct/juggernaut/bullet_act(var/obj/projectile/P)
var/reflectchance = 80 - round(P.damage/3)
if(prob(reflectchance))
var/damage_mod = rand(2,4)
var/projectile_dam_type = P.damage_type
var/incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3)))
- var/armorcheck = run_armor_check(null, P.check_armour)
- var/soakedcheck = get_armor_soak(null, P.check_armour)
- if(!(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)))
+ var/armorcheck = run_armor_check(null, P.damage_flag)
+ var/soakedcheck = get_armor_soak(null, P.damage_flag)
+ if(!(istype(P, /obj/projectile/energy) || istype(P, /obj/projectile/beam)))
visible_message("The [P.name] bounces off of [src]'s shell!", \
"The [P.name] bounces off of [src]'s shell!")
new /obj/item/material/shard/shrapnel(src.loc)
@@ -125,7 +125,7 @@
icon_scale_y = 2
var/energy = 0
var/max_energy = 1000
- armor = list(
+ armor_legacy_mob = list(
"melee" = 60,
"bullet" = 60,
"laser" = 60,
@@ -138,7 +138,7 @@
/spell/targeted/construct_advanced/slam
)
-/mob/living/simple_mob/construct/juggernaut/behemoth/bullet_act(var/obj/item/projectile/P)
+/mob/living/simple_mob/construct/juggernaut/behemoth/bullet_act(var/obj/projectile/P)
var/reflectchance = 80 - round(P.damage/3)
if(prob(reflectchance))
visible_message("The [P.name] gets reflected by [src]'s shell!", \
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm b/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm
index 0bc1be40060..c31ca3c9f1f 100644
--- a/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm
@@ -53,7 +53,7 @@
minbodytemp = 0
cold_damage_per_tick = 0
- projectiletype = /obj/item/projectile/icicle
+ projectiletype = /obj/projectile/icicle
base_attack_cooldown = 2 SECONDS
ranged_attack_delay = 1 SECOND
@@ -61,23 +61,23 @@
You are also immune to the cold, and you cause enemies around you to suffer periodic harm from the cold, if unprotected.
\
Unprotected enemies are also Chilled, making them slower and less evasive, and disabling effects last longer."
-/obj/item/projectile/icicle
+/obj/projectile/icicle
name = "icicle"
icon_state = "ice_2"
damage = 40
damage_type = BRUTE
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
armor_penetration = 30
speed = 2
icon_scale_x = 2 // It hits like a truck.
icon_scale_y = 2
sharp = TRUE
-/obj/item/projectile/icicle/on_impact(atom/A)
+/obj/projectile/icicle/on_impact(atom/A)
playsound(get_turf(A), "shatter", 70, 1)
return ..()
-/obj/item/projectile/icicle/get_structure_damage()
+/obj/projectile/icicle/get_structure_damage()
return damage / 2 // They're really deadly against mobs, but less effective against solid things.
/mob/living/simple_mob/slime/feral/dark_blue/handle_special()
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm
index c779668ee67..0855c3a641e 100644
--- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm
@@ -121,7 +121,7 @@
if(L.isSynthetic())
to_chat(src, "This subject is not biological...")
return FALSE
- if(L.run_mob_armor(null, "bio") >= 75)
+ if(L.legacy_mob_armor(null, "bio") >= 75)
to_chat(src, "I cannot reach this subject's biological matter...")
return FALSE
if(!Adjacent(L))
@@ -152,7 +152,7 @@
// 50% of giving +1 charge to the slime (same as above).
/mob/living/simple_mob/slime/xenobio/proc/consume(mob/living/victim, amount)
if(can_consume(victim))
- var/armor_modifier = abs((victim.run_mob_armor(null, "bio") / 100) - 1)
+ var/armor_modifier = abs((victim.legacy_mob_armor(null, "bio") / 100) - 1)
var/damage_done = amount * armor_modifier
if(damage_done > 0)
victim.adjustCloneLoss(damage_done * 0.6)
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm
index 062f9c10deb..d09542601e8 100644
--- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm
@@ -88,7 +88,7 @@
// The sloped armor.
// It's resistant to most weapons (but a spraybottle still kills it rather fast).
- armor = list(
+ armor_legacy_mob = list(
"melee" = 25,
"bullet" = 25,
"laser" = 25,
@@ -98,16 +98,6 @@
"rad" = 100
)
- armor_soak = list(
- "melee" = 5,
- "bullet" = 5,
- "laser" = 5,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
-
slime_mutation = list(
/mob/living/simple_mob/slime/xenobio/silver,
/mob/living/simple_mob/slime/xenobio/yellow,
@@ -132,7 +122,7 @@
melee_damage_upper = 5
shock_resist = 1
- projectiletype = /obj/item/projectile/beam/lightning/slime
+ projectiletype = /obj/projectile/beam/lightning/slime
projectilesound = 'sound/effects/lightningbolt.ogg'
glow_toggle = TRUE
@@ -163,7 +153,7 @@
power_charge = between(0, power_charge + 1, 10)
..()
-/obj/item/projectile/beam/lightning/slime
+/obj/projectile/beam/lightning/slime
power = 10
fire_sound = 'sound/effects/lightningbolt.ogg'
@@ -209,7 +199,7 @@
log_and_message_admins("[src] ignited due to exposure to fire.")
ignite()
-/mob/living/simple_mob/slime/xenobio/dark_purple/bullet_act(var/obj/item/projectile/P, var/def_zone)
+/mob/living/simple_mob/slime/xenobio/dark_purple/bullet_act(var/obj/projectile/P, var/def_zone)
if(P.damage_type && P.damage_type == BURN && P.damage) // Most bullets won't trigger the explosion, as a mercy towards Security.
log_and_message_admins("[src] ignited due to bring hit by a burning projectile[P.firer ? " by [key_name(P.firer)]" : ""].")
ignite()
@@ -217,7 +207,7 @@
return ..()
/mob/living/simple_mob/slime/xenobio/dark_purple/attackby(var/obj/item/W, var/mob/user)
- if(istype(W) && W.force && W.damtype == BURN)
+ if(istype(W) && W.damage_force && W.damtype == BURN)
log_and_message_admins("[src] ignited due to being hit with a burning weapon ([W]) by [key_name(user)].")
ignite()
else
@@ -295,8 +285,8 @@
/mob/living/simple_mob/slime/xenobio/amber
)
-/mob/living/simple_mob/slime/xenobio/silver/bullet_act(var/obj/item/projectile/P, var/def_zone)
- if(istype(P,/obj/item/projectile/beam) || istype(P, /obj/item/projectile/energy))
+/mob/living/simple_mob/slime/xenobio/silver/bullet_act(var/obj/projectile/P, var/def_zone)
+ if(istype(P,/obj/projectile/beam) || istype(P, /obj/projectile/energy))
visible_message(SPAN_DANGER("\The [src] reflects \the [P]!"))
// Find a turf near or on the original location to bounce to
@@ -664,7 +654,7 @@
log_and_message_admins("[src] exploded due to exposure to fire.")
explode()
-/mob/living/simple_mob/slime/xenobio/oil/bullet_act(obj/item/projectile/P, def_zone)
+/mob/living/simple_mob/slime/xenobio/oil/bullet_act(obj/projectile/P, def_zone)
if(P.damage_type && P.damage_type == BURN && P.damage) // Most bullets won't trigger the explosion, as a mercy towards Security.
log_and_message_admins("[src] exploded due to bring hit by a burning projectile[P.firer ? " by [key_name(P.firer)]" : ""].")
explode()
@@ -672,7 +662,7 @@
return ..()
/mob/living/simple_mob/slime/xenobio/oil/attackby(obj/item/W, mob/living/user)
- if(istype(W) && W.force && W.damtype == BURN)
+ if(istype(W) && W.damage_force && W.damtype == BURN)
log_and_message_admins("[src] exploded due to being hit with a burning weapon ([W]) by [key_name(user)].")
explode()
else
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm b/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm
index 58be7a3dc0d..a4e39b89688 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm
@@ -28,16 +28,7 @@
melee_damage_upper = 0
attacktext = list("honked")
- armor = list(
- "melee" = 80,
- "bullet" = 20,
- "laser" = 0,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
- armor_soak = list(
+ armor_legacy_mob = list(
"melee" = 80,
"bullet" = 20,
"laser" = 0,
@@ -77,16 +68,7 @@
melee_damage_upper = 0
attacktext = list("...")
- armor = list(
- "melee" = 80,
- "bullet" = 20,
- "laser" = 0,
- "energy" = 0,
- "bomb" = 0,
- "bio" = 0,
- "rad" = 0
- )
- armor_soak = list(
+ armor_legacy_mob = list(
"melee" = 80,
"bullet" = 20,
"laser" = 0,
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm b/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm
index 643e51f7ec3..5ca54b49261 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm
@@ -25,7 +25,7 @@
movement_cooldown = 5
see_in_dark = 3
- armor = list(
+ armor_legacy_mob = list(
"melee" = 15,//They thick as fuck boi
"bullet" = 15,
"laser" = 15,
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm
index 03696dcc1dd..15ef401c233 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm
@@ -214,7 +214,7 @@
melee_damage_upper = 30
attack_armor_pen = 50 //Its jaw is an airlock. Its got enough bite strength.
- armor = list(
+ armor_legacy_mob = list(
"melee" = 70,
"bullet" = 30,
"laser" = 30,
@@ -307,7 +307,7 @@
melee_damage_upper = 20
attack_armor_pen = 25 // NOM NOM
- armor = list(
+ armor_legacy_mob = list(
"melee" = 10,
"bullet" = 20,
"laser" = 20,
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm
index e66162432b2..57fbd21d09b 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm
@@ -6,7 +6,7 @@
//animal = TRUE
//stop_when_pulled = FALSE
//destroy_surroundings = TRUE
- armor = list(
+ armor_legacy_mob = list(
"melee" = 30,
"bullet" = 20,
"laser" = 20,
@@ -62,7 +62,7 @@
swallowTime = 4 SECONDS //A little longer to compensate for the above
vore_ignores_undigestable = FALSE
attacktext = list("shoved")
- armor = list(
+ armor_legacy_mob = list(
"melee" = 5,
"bullet" = 5,
"laser" = 5,
@@ -114,7 +114,7 @@
vore_default_mode = DM_HOLD
vore_digest_chance = 25
vore_absorb_chance = 25
- armor = list(
+ armor_legacy_mob = list(
"melee" = 15,
"bullet" = 15,
"laser" = 15,
@@ -166,7 +166,7 @@
vore_default_mode = DM_DRAIN
vore_digest_chance = 5
vore_ignores_undigestable = FALSE
- armor = list(
+ armor_legacy_mob = list(
"melee" = 5,
"bullet" = 5,
"laser" = 5,
@@ -226,7 +226,7 @@
vore_default_mode = DM_DRAIN
vore_digest_chance = 0
vore_ignores_undigestable = FALSE
- armor = list(
+ armor_legacy_mob = list(
"melee" = 5,
"bullet" = 5,
"laser" = 5,
@@ -273,7 +273,7 @@
//animal = TRUE
//stop_when_pulled = FALSE
//destroy_surroundings = TRUE
- armor = list(
+ armor_legacy_mob = list(
"melee" = 20,
"bullet" = 15,
"laser" = 15,
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/solarmoth_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/solarmoth_ch.dm
index 572e67f0dfe..9a552e2c53d 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/solarmoth_ch.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/solarmoth_ch.dm
@@ -66,7 +66,7 @@
minbodytemp = 0
heat_damage_per_tick = 0 //Even if the atmos stuff doesn't work, at least it won't take any damage.
- armor = list(
+ armor_legacy_mob = list(
"melee" = -50,
"bullet" = 0,
"laser" = 50,
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index d61d2c0c7d0..87694523c85 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -26,16 +26,23 @@
continue
var/datum/atom_hud/alternate_appearance/AA = v
AA.onNewMob(src)
- init_rendering()
hook_vr("mob_new",list(src))
+ // inventory
+ init_inventory()
+ // rendering
+ init_rendering()
// resize
update_transform()
// offset
reset_pixel_offsets()
+ // physiology
+ init_physiology()
+ // movespeed
+ update_movespeed(TRUE)
+ // actionspeed
+ initialize_actionspeed()
. = ..()
update_config_movespeed()
- update_movespeed(TRUE)
- initialize_actionspeed()
/**
* Delete a mob
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 097b3732faa..7921d8d65c0 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -52,6 +52,12 @@
/// Last world.time we turned in our spot without moving (see: facing directions)
var/last_turn = 0
+ //? Physiology
+ /// overall physiology - see physiology.dm
+ var/datum/physiology/physiology
+ /// physiology modifiers - see physiology.dm; set to list of paths at init to initialize into instances.
+ var/list/datum/physiology_modifier/physiology_modifiers
+
//? Actionspeed
/// List of action speed modifiers applying to this mob
var/list/actionspeed_modification //Lazy list, see mob_movespeed.dm
@@ -68,6 +74,10 @@
/// shifted pixel y
var/shift_pixel_y = 0
+ //? Inventory
+ /// our inventory datum, if any.
+ var/datum/inventory/inventory
+
//! Size
//! todo kill this with fire it should just be part of icon_scale_x/y.
/// our size multiplier
diff --git a/code/modules/mob/movement.dm b/code/modules/mob/movement.dm
index 16c65caca6f..ce2319d891c 100644
--- a/code/modules/mob/movement.dm
+++ b/code/modules/mob/movement.dm
@@ -49,8 +49,8 @@
var/mob/moving_mob = mover
if ((other_mobs && moving_mob.other_mobs))
return TRUE
- if(istype(mover, /obj/item/projectile))
- var/obj/item/projectile/P = mover
+ if(istype(mover, /obj/projectile))
+ var/obj/projectile/P = mover
return !P.can_hit_target(src, P.permutated, src == P.original, TRUE)
// thrown things still hit us even when nondense
if(!mover.density && !mover.throwing)
diff --git a/code/modules/mob/perspective.dm b/code/modules/mob/perspective.dm
index d87d230033e..f796d2dfbc1 100644
--- a/code/modules/mob/perspective.dm
+++ b/code/modules/mob/perspective.dm
@@ -118,7 +118,9 @@
self_perspective.see_invisible = see_invisible
self_perspective.sight = sight
-////////// ALL OF THESE SHOULD BE REGEXED LATER /////////////
+//? Perspective - Self
+
+// * ALL OF THESE SHOULD BE REGEXED LATER *
// However, there is currently no way to deal with the getters due to them requiring self_perspective be set, but
// we don't necessarily want all mobs to have it, as perspectives are generally for client'd mobs
// We'll decide later, the setters/getters work for now.
@@ -163,4 +165,3 @@
*/
/mob/proc/GetSeeInDarkSelf()
return self_perspective? self_perspective.see_in_dark : see_in_dark
-
diff --git a/code/modules/mob/physiology.dm b/code/modules/mob/physiology.dm
new file mode 100644
index 00000000000..ed387a463bb
--- /dev/null
+++ b/code/modules/mob/physiology.dm
@@ -0,0 +1,42 @@
+/**
+ * physiology holder
+ */
+/datum/physiology
+
+/datum/physiology/proc/apply(datum/physiology_modifier/modifier)
+
+/datum/physiology/proc/revert(datum/physiology_modifier/modifier)
+
+/**
+ * physiology modifier
+ */
+/datum/physiology_modifier
+
+/**
+ * subtype for hardcoded physiology modifiers
+ */
+/datum/physiology_modifier/intrinsic
+
+/mob/proc/init_physiology()
+ for(var/i in 1 to length(physiology_modifiers))
+ if(ispath(physiology_modifiers[i]))
+ physiology_modifiers[i] = new physiology_modifiers[i]
+ rebuild_physiology()
+
+/mob/proc/add_physiology_modifier(datum/physiology_modifier/modifier)
+ ASSERT(!(modifier in physiology_modifiers))
+ physiology_modifiers += modifier
+ physiology.apply(modifier)
+
+/mob/proc/remove_physiology_modifier(datum/physiology_modifier/modifier)
+ ASSERT(modifier in physiology_modifiers)
+ physiology_modifiers -= modifier
+ physiology.revert(modifier)
+
+/mob/proc/rebuild_physiology()
+ physiology = new
+ for(var/datum/physiology_modifier/modifier as anything in physiology_modifiers)
+ if(!istype(modifier))
+ physiology_modifiers -= modifier
+ continue
+ physiology.apply(modifier)
diff --git a/code/modules/modular_computers/computers/modular_computer/damage.dm b/code/modules/modular_computers/computers/modular_computer/damage.dm
index a6b08005916..15596c13952 100644
--- a/code/modules/modular_computers/computers/modular_computer/damage.dm
+++ b/code/modules/modular_computers/computers/modular_computer/damage.dm
@@ -49,7 +49,7 @@
* "Burn" damage is equally strong against internal components and exterior casing
* "Brute" damage mostly damages the casing.
*/
-/obj/item/modular_computer/bullet_act(obj/item/projectile/Proj)
+/obj/item/modular_computer/bullet_act(obj/projectile/Proj)
switch(Proj.damage_type)
if(BRUTE)
take_damage(Proj.damage, Proj.damage / 2)
diff --git a/code/modules/organs/external/external.dm b/code/modules/organs/external/external.dm
index 92548aff44b..b2824e715ad 100644
--- a/code/modules/organs/external/external.dm
+++ b/code/modules/organs/external/external.dm
@@ -6,6 +6,10 @@
organ_tag = "limb"
decays = FALSE
+ //? Coverage
+ /// body_cover_flags that count as covering us
+ var/body_part_flags = NONE
+
//? Wounds
/// Wound datum list.
var/list/wounds
@@ -51,8 +55,6 @@
var/transparent = 0
/// Icon state base.
var/icon_name = null
- /// Part flag
- var/body_part = null
/// Used in mob overlay layering calculations.
var/icon_position = 0
/// Used when caching robolimb icons.
@@ -482,9 +484,9 @@
if(user == src.owner)
var/grasp
- if(user.l_hand == tool && (src.body_part & (ARM_LEFT|HAND_LEFT)))
+ if(user.l_hand == tool && (src.body_part_flags & (ARM_LEFT|HAND_LEFT)))
grasp = BP_L_HAND
- else if(user.r_hand == tool && (src.body_part & (ARM_RIGHT|HAND_RIGHT)))
+ else if(user.r_hand == tool && (src.body_part_flags & (ARM_RIGHT|HAND_RIGHT)))
grasp = BP_R_HAND
if(grasp)
@@ -980,12 +982,12 @@ Note that amputating the affected organ does in fact remove the infection from t
holder = owner
if(!holder)
return
- if (holder.handcuffed && (body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT)))
+ if (holder.handcuffed && (body_part_flags in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT)))
holder.visible_message(\
"\The [holder.handcuffed.name] falls off of [holder.name].",\
"\The [holder.handcuffed.name] falls off you.")
holder.drop_item_to_ground(holder.handcuffed, INV_OP_FORCE)
- if (holder.legcuffed && (body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT)))
+ if (holder.legcuffed && (body_part_flags in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT)))
holder.visible_message(\
"\The [holder.legcuffed.name] falls off of [holder.name].",\
"\The [holder.legcuffed.name] falls off you.")
@@ -1398,7 +1400,7 @@ Note that amputating the affected organ does in fact remove the infection from t
var/list/covering_clothing = list()
if(!target_covering)
- target_covering = src.body_part
+ target_covering = src.body_part_flags
if(owner)
var/list/protective_gear = list(owner.head, owner.wear_mask, owner.wear_suit, owner.w_uniform, owner.gloves, owner.shoes, owner.glasses)
@@ -1407,7 +1409,7 @@ Note that amputating the affected organ does in fact remove the infection from t
covering_clothing |= gear
if(LAZYLEN(gear.accessories))
for(var/obj/item/clothing/accessory/bling in gear.accessories)
- if(bling.body_cover_flags & src.body_part)
+ if(bling.body_cover_flags & src.body_part_flags)
covering_clothing |= bling
return covering_clothing
diff --git a/code/modules/organs/external/species/diona.dm b/code/modules/organs/external/species/diona.dm
index c58fcd61367..05cbb025224 100644
--- a/code/modules/organs/external/species/diona.dm
+++ b/code/modules/organs/external/species/diona.dm
@@ -32,7 +32,7 @@
max_damage = 200
min_broken_damage = 50
w_class = ITEMSIZE_HUGE
- body_part = UPPER_TORSO
+ body_part_flags = UPPER_TORSO
vital = TRUE
cannot_amputate = TRUE
parent_organ = null
@@ -44,7 +44,7 @@
max_damage = 100
min_broken_damage = 50
w_class = ITEMSIZE_LARGE
- body_part = LOWER_TORSO
+ body_part_flags = LOWER_TORSO
parent_organ = BP_TORSO
/obj/item/organ/external/diona/arm
@@ -54,7 +54,7 @@
max_damage = 30
min_broken_damage = 20
w_class = ITEMSIZE_NORMAL
- body_part = ARM_LEFT
+ body_part_flags = ARM_LEFT
parent_organ = BP_TORSO
can_grasp = TRUE
@@ -62,7 +62,7 @@
name = "right upper tendril"
organ_tag = BP_R_ARM
icon_name = "r_arm"
- body_part = ARM_RIGHT
+ body_part_flags = ARM_RIGHT
/obj/item/organ/external/diona/leg
name = "left lower tendril"
@@ -71,7 +71,7 @@
max_damage = 30
min_broken_damage = 20
w_class = ITEMSIZE_NORMAL
- body_part = LEG_LEFT
+ body_part_flags = LEG_LEFT
icon_position = LEFT
parent_organ = BP_GROIN
can_stand = TRUE
@@ -80,7 +80,7 @@
name = "right lower tendril"
organ_tag = BP_R_LEG
icon_name = "r_leg"
- body_part = LEG_RIGHT
+ body_part_flags = LEG_RIGHT
icon_position = RIGHT
/obj/item/organ/external/diona/foot
@@ -90,7 +90,7 @@
max_damage = 25
min_broken_damage = 10
w_class = ITEMSIZE_SMALL
- body_part = FOOT_LEFT
+ body_part_flags = FOOT_LEFT
icon_position = LEFT
parent_organ = BP_R_LEG
can_stand = TRUE
@@ -99,7 +99,7 @@
name = "right foot"
organ_tag = BP_R_FOOT
icon_name = "r_foot"
- body_part = FOOT_RIGHT
+ body_part_flags = FOOT_RIGHT
icon_position = RIGHT
parent_organ = BP_R_LEG
joint = "right ankle"
@@ -112,7 +112,7 @@
max_damage = 25
min_broken_damage = 15
w_class = ITEMSIZE_SMALL
- body_part = HAND_LEFT
+ body_part_flags = HAND_LEFT
parent_organ = BP_L_ARM
can_grasp = TRUE
@@ -120,7 +120,7 @@
name = "right grasper"
organ_tag = BP_R_HAND
icon_name = "r_hand"
- body_part = HAND_RIGHT
+ body_part_flags = HAND_RIGHT
parent_organ = BP_R_ARM
//DIONA ORGANS.
diff --git a/code/modules/organs/external/species/unathi.dm b/code/modules/organs/external/species/unathi.dm
index 4de1f000753..5596f9db919 100644
--- a/code/modules/organs/external/species/unathi.dm
+++ b/code/modules/organs/external/species/unathi.dm
@@ -12,7 +12,7 @@
max_damage = 75
min_broken_damage = 35
eye_icon = "eyes_s"
- force = 5
+ damage_force = 5
throw_force = 10
/obj/item/organ/external/head/unathi/digi
diff --git a/code/modules/organs/external/subtypes/standard.dm b/code/modules/organs/external/subtypes/standard.dm
index e86a6240e4a..ba6570859a1 100644
--- a/code/modules/organs/external/subtypes/standard.dm
+++ b/code/modules/organs/external/subtypes/standard.dm
@@ -11,7 +11,7 @@
max_damage = 100
min_broken_damage = 35
w_class = ITEMSIZE_HUGE
- body_part = UPPER_TORSO
+ body_part_flags = UPPER_TORSO
vital = TRUE
amputation_point = "spine"
joint = "neck"
@@ -53,7 +53,7 @@
max_damage = 100
min_broken_damage = 35
w_class = ITEMSIZE_LARGE
- body_part = LOWER_TORSO
+ body_part_flags = LOWER_TORSO
vital = TRUE
parent_organ = BP_TORSO
amputation_point = "lumbar"
@@ -83,12 +83,12 @@
max_damage = 80
min_broken_damage = 30
w_class = ITEMSIZE_NORMAL
- body_part = ARM_LEFT
+ body_part_flags = ARM_LEFT
parent_organ = BP_TORSO
joint = "left elbow"
amputation_point = "left shoulder"
can_grasp = TRUE
- force = 7
+ damage_force = 7
throw_force = 10
/obj/item/organ/external/arm/handle_germ_effects()
@@ -112,7 +112,7 @@
organ_tag = BP_R_ARM
name = "right arm"
icon_name = "r_arm"
- body_part = ARM_RIGHT
+ body_part_flags = ARM_RIGHT
joint = "right elbow"
amputation_point = "right shoulder"
@@ -123,13 +123,13 @@
max_damage = 80
min_broken_damage = 30
w_class = ITEMSIZE_NORMAL
- body_part = LEG_LEFT
+ body_part_flags = LEG_LEFT
icon_position = LEFT
parent_organ = BP_GROIN
joint = "left knee"
amputation_point = "left hip"
can_stand = TRUE
- force = 10
+ damage_force = 10
throw_force = 12
/obj/item/organ/external/leg/handle_germ_effects()
@@ -150,7 +150,7 @@
organ_tag = BP_R_LEG
name = "right leg"
icon_name = "r_leg"
- body_part = LEG_RIGHT
+ body_part_flags = LEG_RIGHT
icon_position = RIGHT
joint = "right knee"
amputation_point = "right hip"
@@ -162,13 +162,13 @@
max_damage = 50
min_broken_damage = 15
w_class = ITEMSIZE_SMALL
- body_part = FOOT_LEFT
+ body_part_flags = FOOT_LEFT
icon_position = LEFT
parent_organ = BP_L_LEG
joint = "left ankle"
amputation_point = "left ankle"
can_stand = TRUE
- force = 3
+ damage_force = 3
throw_force = 6
/obj/item/organ/external/foot/handle_germ_effects()
@@ -189,7 +189,7 @@
organ_tag = BP_R_FOOT
name = "right foot"
icon_name = "r_foot"
- body_part = FOOT_RIGHT
+ body_part_flags = FOOT_RIGHT
icon_position = RIGHT
parent_organ = BP_R_LEG
joint = "right ankle"
@@ -202,14 +202,14 @@
max_damage = 50
min_broken_damage = 15
w_class = ITEMSIZE_SMALL
- body_part = HAND_LEFT
+ body_part_flags = HAND_LEFT
parent_organ = BP_L_ARM
joint = "left wrist"
amputation_point = "left wrist"
can_grasp = TRUE
organ_rel_size = 10
base_miss_chance = 50
- force = 3
+ damage_force = 3
throw_force = 5
/obj/item/organ/external/hand/handle_germ_effects()
@@ -233,7 +233,7 @@
organ_tag = BP_R_HAND
name = "right hand"
icon_name = "r_hand"
- body_part = HAND_RIGHT
+ body_part_flags = HAND_RIGHT
parent_organ = BP_R_ARM
joint = "right wrist"
amputation_point = "right wrist"
@@ -246,7 +246,7 @@
max_damage = 75
min_broken_damage = 35
w_class = ITEMSIZE_NORMAL
- body_part = HEAD
+ body_part_flags = HEAD
vital = TRUE
parent_organ = BP_TORSO
joint = "jaw"
@@ -255,7 +255,7 @@
cannot_gib = TRUE
encased = "skull"
base_miss_chance = 40
- force = 3
+ damage_force = 3
throw_force = 7
var/can_intake_reagents = TRUE
diff --git a/code/modules/organs/external/subtypes/stump.dm b/code/modules/organs/external/subtypes/stump.dm
index 6085a959051..88bc0fe1a4d 100644
--- a/code/modules/organs/external/subtypes/stump.dm
+++ b/code/modules/organs/external/subtypes/stump.dm
@@ -6,7 +6,7 @@
/obj/item/organ/external/stump/Initialize(mapload, internal, obj/item/organ/external/limb)
if(istype(limb))
organ_tag = limb.organ_tag
- body_part = limb.body_part
+ body_part_flags = limb.body_part_flags
amputation_point = limb.amputation_point
joint = limb.joint
parent_organ = limb.parent_organ
diff --git a/code/modules/organs/internal/subtypes/brain.dm b/code/modules/organs/internal/subtypes/brain.dm
index f07473590cc..185bea4d987 100644
--- a/code/modules/organs/internal/subtypes/brain.dm
+++ b/code/modules/organs/internal/subtypes/brain.dm
@@ -9,7 +9,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
vital = 1
decay_rate = ORGAN_DECAY_PER_SECOND_BRAIN
icon_state = "brain2"
- force = 1.0
+ damage_force = 1.0
w_class = ITEMSIZE_SMALL
throw_force = 1.0
throw_speed = 3
diff --git a/code/modules/overmap/ships/computers/sensors.dm b/code/modules/overmap/ships/computers/sensors.dm
index 582919e8cad..1795f193cc0 100644
--- a/code/modules/overmap/ships/computers/sensors.dm
+++ b/code/modules/overmap/ships/computers/sensors.dm
@@ -195,7 +195,7 @@
else if(health < max_health * 0.75)
. += "It shows signs of damage!"
-/obj/machinery/shipsensors/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/shipsensors/bullet_act(var/obj/projectile/Proj)
take_damage(Proj.get_structure_damage())
..()
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 2bb7037582f..e2a0ba9485b 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -175,7 +175,7 @@
active = 1
icon_state = active_icon_state
embed_chance = active_embed_chance
- force = active_force
+ damage_force = active_force
throw_force = active_throwforce
@@ -201,7 +201,7 @@
active = 0
icon_state = default_icon_state
embed_chance = initial(embed_chance)
- force = initial(force)
+ damage_force = initial(damage_force)
throw_force = initial(throw_force)
sharp = initial(sharp)
edge = initial(edge)
diff --git a/code/modules/power/antimatter/containment_jar.dm b/code/modules/power/antimatter/containment_jar.dm
index 6c68d0c52f7..06ab7babc64 100644
--- a/code/modules/power/antimatter/containment_jar.dm
+++ b/code/modules/power/antimatter/containment_jar.dm
@@ -5,7 +5,7 @@
icon_state = "jar"
density = 0
anchored = 0
- force = 8
+ damage_force = 8
throw_force = 10
throw_speed = 1
throw_range = 2
diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm
index f2063b263da..75ad385a600 100644
--- a/code/modules/power/antimatter/control.dm
+++ b/code/modules/power/antimatter/control.dm
@@ -117,9 +117,9 @@
return
-/obj/machinery/power/am_control_unit/bullet_act(var/obj/item/projectile/Proj)
- if(Proj.check_armour != "bullet")
- stability -= Proj.force
+/obj/machinery/power/am_control_unit/bullet_act(var/obj/projectile/Proj)
+ if(Proj.damage_flag != "bullet")
+ stability -= Proj.damage
return 0
@@ -170,8 +170,8 @@
"You hear a thunk.")
return
- if(W.force >= 20)
- stability -= W.force/2
+ if(W.damage_force >= 20)
+ stability -= W.damage_force/2
check_stability()
..()
return
diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm
index c5946f5832b..be64a6b7476 100644
--- a/code/modules/power/antimatter/shielding.dm
+++ b/code/modules/power/antimatter/shielding.dm
@@ -99,9 +99,9 @@
return
-/obj/machinery/am_shielding/bullet_act(var/obj/item/projectile/Proj)
- if(Proj.check_armour != "bullet")
- stability -= Proj.force/2
+/obj/machinery/am_shielding/bullet_act(var/obj/projectile/Proj)
+ if(Proj.damage_flag != "bullet")
+ stability -= Proj.damage/2
return 0
@@ -125,8 +125,8 @@
/obj/machinery/am_shielding/attackby(obj/item/W, mob/user)
if(!istype(W) || !user) return
- if(W.force > 10)
- stability -= W.force/2
+ if(W.damage_force > 10)
+ stability -= W.damage_force/2
check_stability()
..()
return
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 6d182599e63..c181d43c22a 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -843,7 +843,7 @@ GLOBAL_LIST_EMPTY(apcs)
else
if ((machine_stat & BROKEN) \
&& !opened \
- && W.force >= 5 \
+ && W.damage_force >= 5 \
&& W.w_class >= ITEMSIZE_SMALL )
user.visible_message("The [src.name] has been hit with the [W.name] by [user.name]!", \
"You hit the [src.name] with your [W.name]!", \
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 5a8709730ce..4eb2ddf84f3 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -973,9 +973,9 @@ GLOBAL_LIST_INIT(possible_cable_coil_colours, list(
. = ..()
if(embed_chance == -1) //From /obj/item, don't want to do what the normal cable_coil does
if(sharp)
- embed_chance = force/w_class
+ embed_chance = damage_force/w_class
else
- embed_chance = force/(w_class*3)
+ embed_chance = damage_force/(w_class*3)
update_icon()
remove_obj_verb(src, /obj/item/stack/cable_coil/verb/make_restraint)
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index f22e816c812..cef2dbdf7e9 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -9,7 +9,7 @@
icon_state = "cell"
item_state = "cell"
origin_tech = list(TECH_POWER = 1)
- force = 5.0
+ damage_force = 5.0
throw_force = 5.0
throw_speed = 3
throw_range = 5
diff --git a/code/modules/power/cells/device_cells.dm b/code/modules/power/cells/device_cells.dm
index af578824218..6fa5710e2e1 100644
--- a/code/modules/power/cells/device_cells.dm
+++ b/code/modules/power/cells/device_cells.dm
@@ -5,7 +5,7 @@
icon_state = "dcell"
item_state = "egg6"
w_class = ITEMSIZE_SMALL
- force = 0
+ damage_force = 0
throw_speed = 5
throw_range = 7
maxcharge = 480
diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm
index ceec7f8f01f..eff1ef5682b 100644
--- a/code/modules/power/fusion/core/_core.dm
+++ b/code/modules/power/fusion/core/_core.dm
@@ -87,7 +87,7 @@ var/list/fusion_cores = list()
owned_field.AddParticles(name, quantity)
. = 1
-/obj/machinery/power/fusion_core/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/power/fusion_core/bullet_act(var/obj/projectile/Proj)
if(owned_field)
. = owned_field.bullet_act(Proj)
diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm
index 1df142c3015..2df45b17c43 100644
--- a/code/modules/power/fusion/core/core_field.dm
+++ b/code/modules/power/fusion/core/core_field.dm
@@ -42,7 +42,7 @@ GLOBAL_VAR_INIT(max_fusion_air_heat, INFINITY)
. = ..()
ignore_types = typecacheof(list(
/obj/effect,
- /obj/item/projectile,
+ /obj/projectile,
/atom/movable/fire,
/obj/structure/cable,
/obj/machinery/atmospherics,
@@ -488,7 +488,7 @@ GLOBAL_VAR_INIT(max_fusion_air_heat, INFINITY)
STOP_PROCESSING(SSobj, src)
. = ..()
-/obj/effect/fusion_em_field/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/fusion_em_field/bullet_act(var/obj/projectile/Proj)
AddEnergy(Proj.damage)
update_icon()
return 0
diff --git a/code/modules/power/fusion/fusion_particle_catcher.dm b/code/modules/power/fusion/fusion_particle_catcher.dm
index c389f8ae412..ea8ae497ff5 100644
--- a/code/modules/power/fusion/fusion_particle_catcher.dm
+++ b/code/modules/power/fusion/fusion_particle_catcher.dm
@@ -32,12 +32,12 @@
density = 0
name = "collector [mysize] OFF"
-/obj/effect/fusion_particle_catcher/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/fusion_particle_catcher/bullet_act(var/obj/projectile/Proj)
parent.AddEnergy(Proj.damage)
update_icon()
return 0
/obj/effect/fusion_particle_catcher/CanAllowThrough(atom/movable/mover, turf/target)
- if(istype(mover, /obj/effect/accelerated_particle) || istype(mover, /obj/item/projectile/beam))
+ if(istype(mover, /obj/effect/accelerated_particle) || istype(mover, /obj/projectile/beam))
return !density
return TRUE
diff --git a/code/modules/power/fusion/gyrotron/gyrotron.dm b/code/modules/power/fusion/gyrotron/gyrotron.dm
index 9ffd19e484a..eee57233263 100644
--- a/code/modules/power/fusion/gyrotron/gyrotron.dm
+++ b/code/modules/power/fusion/gyrotron/gyrotron.dm
@@ -40,7 +40,7 @@ var/list/gyrotrons = list()
return rate * 10
/obj/machinery/power/emitter/gyrotron/get_emitter_beam()
- var/obj/item/projectile/beam/emitter/E = ..()
+ var/obj/projectile/beam/emitter/E = ..()
E.damage = mega_energy * 50
return E
diff --git a/code/modules/power/lighting/lighting.dm b/code/modules/power/lighting/lighting.dm
index 0d4053fe029..7c6aa8de00e 100644
--- a/code/modules/power/lighting/lighting.dm
+++ b/code/modules/power/lighting/lighting.dm
@@ -644,7 +644,7 @@ var/global/list/light_type_cache = list()
else if(status != LIGHT_BROKEN && status != LIGHT_EMPTY)
- if(prob(1+W.force * 5))
+ if(prob(1+W.damage_force * 5))
to_chat(user, "You hit the light, and it smashes!")
for(var/mob/M in viewers(src))
diff --git a/code/modules/power/lighting/lights.dm b/code/modules/power/lighting/lights.dm
index 778e9c02bb8..6b1b657dc5a 100644
--- a/code/modules/power/lighting/lights.dm
+++ b/code/modules/power/lighting/lights.dm
@@ -5,7 +5,7 @@
*/
/obj/item/light
icon = 'icons/obj/lighting.dmi'
- force = 2
+ damage_force = 2
throw_force = 5
w_class = ITEMSIZE_TINY
matter = list(MAT_STEEL = 60)
@@ -250,7 +250,7 @@
SPAN_DANGER("You hear a small glass object shatter."),
)
status = LIGHT_BROKEN
- force = 5
+ damage_force = 5
sharp = 1
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, TRUE)
update_icon()
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 113f9ea1571..71120742112 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -605,7 +605,7 @@
tesla_zap(src, 5, power_gen * 50)
addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, get_turf(src), 2, 3, 4, 8), 100) // Not a normal explosion.
-/obj/machinery/power/rtg/abductor/bullet_act(obj/item/projectile/Proj)
+/obj/machinery/power/rtg/abductor/bullet_act(obj/projectile/Proj)
. = ..()
if(!going_kaboom && istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)))
log_and_message_admins("[ADMIN_LOOKUPFLW(Proj.firer)] triggered an Abductor Core explosion at [x],[y],[z] via projectile.")
diff --git a/code/modules/power/singularity/act.dm b/code/modules/power/singularity/act.dm
index 2033fdb5b57..83edb58c974 100644
--- a/code/modules/power/singularity/act.dm
+++ b/code/modules/power/singularity/act.dm
@@ -90,7 +90,7 @@
qdel(src)
return 50000
-/obj/item/projectile/beam/emitter/singularity_pull()
+/obj/projectile/beam/emitter/singularity_pull()
return
/obj/effect/projectile/emitter/singularity_pull()
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index d702ebe177d..5031edb71ea 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -140,7 +140,7 @@
s.set_up(5, 1, src)
s.start()
- var/obj/item/projectile/beam/emitter/A = get_emitter_beam()
+ var/obj/projectile/beam/emitter/A = get_emitter_beam()
A.damage = round(power_per_shot/EMITTER_DAMAGE_POWER_TRANSFER)
A.firer = src
A.fire(dir2angle(dir))
@@ -246,7 +246,7 @@
user.visible_message("[user.name] emags [src].","You short out the lock.")
return 1
-/obj/machinery/power/emitter/bullet_act(var/obj/item/projectile/P)
+/obj/machinery/power/emitter/bullet_act(var/obj/projectile/P)
if(!P || !P.damage || P.get_structure_damage() <= 0 )
return
@@ -288,4 +288,4 @@
return burst_delay
/obj/machinery/power/emitter/proc/get_emitter_beam()
- return new /obj/item/projectile/beam/emitter(get_turf(src))
+ return new /obj/projectile/beam/emitter(get_turf(src))
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index dc4d70dcc98..bfa09404df6 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -154,8 +154,8 @@ field_generator power level display
/obj/machinery/field_generator/emp_act()
return 0
-/obj/machinery/field_generator/bullet_act(var/obj/item/projectile/Proj)
- if(istype(Proj, /obj/item/projectile/beam))
+/obj/machinery/field_generator/bullet_act(var/obj/projectile/Proj)
+ if(istype(Proj, /obj/projectile/beam))
power += Proj.damage * EMITTER_DAMAGE_POWER_TRANSFER
update_icon()
return 0
diff --git a/code/modules/power/singularity/particle_accelerator/particle_smasher.dm b/code/modules/power/singularity/particle_accelerator/particle_smasher.dm
index 51f2517ba9a..14d1d1f499b 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_smasher.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_smasher.dm
@@ -127,8 +127,8 @@
else
set_light(0, 0, "#FFFFFF")
-/obj/machinery/particle_smasher/bullet_act(var/obj/item/projectile/Proj)
- if(istype(Proj, /obj/item/projectile/beam))
+/obj/machinery/particle_smasher/bullet_act(var/obj/projectile/Proj)
+ if(istype(Proj, /obj/projectile/beam))
if(Proj.damage >= 50)
TryCraft()
return 0
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index eae2ac24aaf..5de3b7015db 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -64,7 +64,7 @@ GLOBAL_LIST_BOILERPLATE(all_singularities, /obj/singularity)
if(3)
energy -= round(((energy+1)/4),1)
-/obj/singularity/bullet_act(obj/item/projectile/P)
+/obj/singularity/bullet_act(obj/projectile/P)
return 0 //Will there be an impact? Who knows. Will we see it? No.
/obj/singularity/Bump(atom/A)
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 3258bdd980a..80063e97aa7 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -80,7 +80,7 @@ GLOBAL_LIST_EMPTY(solars_list)
return
else if (W)
src.add_fingerprint(user)
- src.health -= W.force
+ src.health -= W.damage_force
src.healthcheck()
..()
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index e9cb8eb978d..be892c9744d 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -364,7 +364,7 @@
return 1
-/obj/machinery/power/supermatter/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/power/supermatter/bullet_act(var/obj/projectile/Proj)
var/turf/L = loc
if(!istype(L)) // We don't run process() when we are in space
return 0 // This stops people from being able to really power up the supermatter
@@ -373,7 +373,7 @@
var/added_energy
var/added_damage
var/proj_damage = Proj.get_structure_damage()
- if(istype(Proj, /obj/item/projectile/beam))
+ if(istype(Proj, /obj/projectile/beam))
added_energy = proj_damage * config_bullet_energy * CHARGING_FACTOR / POWER_FACTOR
power += added_energy
else
diff --git a/code/modules/projectiles/ammunition/ammo_casing.dm b/code/modules/projectiles/ammunition/ammo_casing.dm
index 2b433f05196..193c30854ef 100644
--- a/code/modules/projectiles/ammunition/ammo_casing.dm
+++ b/code/modules/projectiles/ammunition/ammo_casing.dm
@@ -16,7 +16,7 @@
/// projectile type
var/projectile_type
/// stored projectile - either null for un-init'd, FALSE for empty, or an instance
- VAR_PRIVATE/obj/item/projectile/stored
+ VAR_PRIVATE/obj/projectile/stored
//! Icon
/// switch to "[initial(state)]-spent" after expenditure
diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm
index 1ef6b2d9762..4a822772fee 100644
--- a/code/modules/projectiles/ammunition/rounds.dm
+++ b/code/modules/projectiles/ammunition/rounds.dm
@@ -26,14 +26,14 @@
/obj/item/ammo_casing/a357
desc = "A .357 bullet casing."
caliber = ".357"
- projectile_type = /obj/item/projectile/bullet/pistol/strong
+ projectile_type = /obj/projectile/bullet/pistol/strong
matter = list(MAT_STEEL = 210)
/obj/item/ammo_casing/a357/silver
desc = "A .357 silver bullet casing. Bless and Sancitfied to banish otherworlds entities."
caliber = ".357"
icon_state = "ag-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/strong
+ projectile_type = /obj/projectile/bullet/pistol/strong
matter = list(MAT_STEEL = 350, MAT_SILVER = 200)
/*
@@ -43,25 +43,25 @@
/obj/item/ammo_casing/a38
desc = "A .38 bullet casing."
caliber = ".38"
- projectile_type = /obj/item/projectile/bullet/pistol
+ projectile_type = /obj/projectile/bullet/pistol
matter = list(MAT_STEEL = 60)
/obj/item/ammo_casing/a38/rubber
desc = "A .38 rubber bullet casing."
icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/rubber
+ projectile_type = /obj/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/a38/emp
name = ".38 haywire round"
desc = "A .38 bullet casing fitted with a single-use ion pulse generator."
icon_state = "empcasing"
- projectile_type = /obj/item/projectile/ion/small
+ projectile_type = /obj/projectile/ion/small
matter = list(MAT_STEEL = 130, MAT_URANIUM = 100)
/obj/item/ammo_casing/a38/silver
desc = "A .38 silver bullet casing. Bless and Sancitfied to banish otherworlds entities."
icon_state = "ag-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/silver
+ projectile_type = /obj/projectile/bullet/pistol/silver
matter = list(MAT_STEEL = 130, MAT_SILVER = 100)
@@ -72,19 +72,19 @@
/obj/item/ammo_casing/a44
desc = "A .44 bullet casing."
caliber = ".44"
- projectile_type = /obj/item/projectile/bullet/pistol/strong
+ projectile_type = /obj/projectile/bullet/pistol/strong
matter = list(MAT_STEEL = 210)
/obj/item/ammo_casing/a44/rubber
icon_state = "r-casing"
desc = "A .44 rubber bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
+ projectile_type = /obj/projectile/bullet/pistol/rubber/strong
matter = list(MAT_STEEL = 60)
/obj/item/ammo_casing/a44/silver
desc = "A .44 silver bullet casing. Bless and Sancitfied to banish otherworlds entities."
icon_state = "ag_casing"
- projectile_type = /obj/item/projectile/bullet/pistol/strong/silver
+ projectile_type = /obj/projectile/bullet/pistol/strong/silver
matter = list(MAT_STEEL = 350, MAT_SILVER = 200)
/*
@@ -94,7 +94,7 @@
/obj/item/ammo_casing/a75
desc = "A .75 gyrojet rocket sheathe."
caliber = ".75"
- projectile_type = /obj/item/projectile/bullet/gyro
+ projectile_type = /obj/projectile/bullet/gyro
matter = list(MAT_STEEL = 4000)
/*
@@ -104,42 +104,42 @@
/obj/item/ammo_casing/a9mm
desc = "A 9mm bullet casing."
caliber = "9mm"
- projectile_type = /obj/item/projectile/bullet/pistol
+ projectile_type = /obj/projectile/bullet/pistol
matter = list(MAT_STEEL = 60)
/obj/item/ammo_casing/a9mm/ap
desc = "A 9mm armor-piercing bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/ap
+ projectile_type = /obj/projectile/bullet/pistol/ap
matter = list(MAT_STEEL = 80)
/obj/item/ammo_casing/a9mm/hp
desc = "A 9mm hollow-point bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/hp
+ projectile_type = /obj/projectile/bullet/pistol/hp
/obj/item/ammo_casing/a9mm/hunter
desc = "A 9mm hunting bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/hunter
+ projectile_type = /obj/projectile/bullet/pistol/hunter
matter = list(MAT_STEEL = 80)
/obj/item/ammo_casing/a9mm/flash
desc = "A 9mm flash shell casing."
icon_state = "r-casing"
- projectile_type = /obj/item/projectile/energy/flash
+ projectile_type = /obj/projectile/energy/flash
/obj/item/ammo_casing/a9mm/rubber
desc = "A 9mm rubber bullet casing."
icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/rubber
+ projectile_type = /obj/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/a9mm/practice
desc = "A 9mm practice bullet casing."
icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/practice
+ projectile_type = /obj/projectile/bullet/practice
/obj/item/ammo_casing/a9mm/silver
desc = "A 9mm silver bullet casing. Bless and Sancitfied to banish otherworlds entities."
icon_state = "ag-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/silver
+ projectile_type = /obj/projectile/bullet/pistol/silver
matter = list(MAT_STEEL = 130, MAT_SILVER = 100)
/*
@@ -148,22 +148,22 @@
/obj/item/ammo_casing/a57x28mm
desc = "A 5.7x28mm bullet casing."
caliber = "5.7x28mm"
- projectile_type = /obj/item/projectile/bullet/pistol/lap
+ projectile_type = /obj/projectile/bullet/pistol/lap
matter = list(MAT_STEEL = 30, MAT_COPPER = 30)
/obj/item/ammo_casing/a57x28mm/ap
desc = "A 5.7x28mm armor-piercing bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/ap
+ projectile_type = /obj/projectile/bullet/pistol/ap
matter = list(MAT_STEEL = 80, MAT_COPPER = 30)
/obj/item/ammo_casing/a57x28mm/hp
desc = "A 5.7x28mm hollow-point bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/hp
+ projectile_type = /obj/projectile/bullet/pistol/hp
matter = list(MAT_STEEL = 60, MAT_COPPER = 30)
/obj/item/ammo_casing/a57x28mm/hunter
desc = "A 5.7x28mm hunting bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/hunter
+ projectile_type = /obj/projectile/bullet/pistol/hunter
matter = list(MAT_STEEL = 30, MAT_COPPER = 50)
/*
@@ -173,53 +173,53 @@
/obj/item/ammo_casing/a45
desc = "A .45 bullet casing."
caliber = ".45"
- projectile_type = /obj/item/projectile/bullet/pistol/medium
+ projectile_type = /obj/projectile/bullet/pistol/medium
matter = list(MAT_STEEL = 75)
/obj/item/ammo_casing/a45/ap
desc = "A .45 Armor-Piercing bullet casing."
icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/medium/ap
+ projectile_type = /obj/projectile/bullet/pistol/medium/ap
/obj/item/ammo_casing/a45/hunter
desc = "A .45 hunting bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/medium/hunter
+ projectile_type = /obj/projectile/bullet/pistol/medium/hunter
matter = list(MAT_STEEL = 75)
/obj/item/ammo_casing/a45/practice
desc = "A .45 practice bullet casing."
icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/practice
+ projectile_type = /obj/projectile/bullet/practice
matter = list(MAT_STEEL = 60)
/obj/item/ammo_casing/a45/rubber
desc = "A .45 rubber bullet casing."
icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/rubber
+ projectile_type = /obj/projectile/bullet/pistol/rubber
matter = list(MAT_STEEL = 60)
/obj/item/ammo_casing/a45/flash
desc = "A .45 flash shell casing."
icon_state = "r-casing"
- projectile_type = /obj/item/projectile/energy/flash
+ projectile_type = /obj/projectile/energy/flash
matter = list(MAT_STEEL = 60)
/obj/item/ammo_casing/a45/emp
name = ".45 haywire round"
desc = "A .45 bullet casing fitted with a single-use ion pulse generator."
- projectile_type = /obj/item/projectile/ion/small
+ projectile_type = /obj/projectile/ion/small
icon_state = "empcasing"
matter = list(MAT_STEEL = 130, MAT_URANIUM = 100)
/obj/item/ammo_casing/a45/hp
desc = "A .45 hollow-point bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/medium/hp
+ projectile_type = /obj/projectile/bullet/pistol/medium/hp
/obj/item/ammo_casing/a45/silver
name = ".45 silver round"
desc = "A .45 silver bullet casing. Bless and Sancitfied to banish otherworlds entities."
icon_state = "ag-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/silver
+ projectile_type = /obj/projectile/bullet/pistol/silver
matter = list(MAT_STEEL = 130, MAT_SILVER = 100)
@@ -230,13 +230,13 @@
/obj/item/ammo_casing/a10mm
desc = "A 10mm bullet casing."
caliber = "10mm"
- projectile_type = /obj/item/projectile/bullet/pistol/medium
+ projectile_type = /obj/projectile/bullet/pistol/medium
matter = list(MAT_STEEL = 75)
/obj/item/ammo_casing/a10mm/emp
name = "10mm haywire round"
desc = "A 10mm bullet casing fitted with a single-use ion pulse generator."
- projectile_type = /obj/item/projectile/ion/small
+ projectile_type = /obj/projectile/ion/small
icon_state = "empcasing"
matter = list(MAT_STEEL = 130, MAT_URANIUM = 100)
@@ -249,7 +249,7 @@
desc = "A 12 gauge slug."
icon_state = "slshell"
caliber = "12g"
- projectile_type = /obj/item/projectile/bullet/shotgun
+ projectile_type = /obj/projectile/bullet/shotgun
matter = list(MAT_STEEL = 360)
fall_sounds = list('sound/weapons/guns/shotgun_fall.ogg')
@@ -257,34 +257,34 @@
name = "shotgun shell"
desc = "A 12 gauge shell."
icon_state = "gshell"
- projectile_type = /obj/item/projectile/bullet/pellet/shotgun
+ projectile_type = /obj/projectile/bullet/pellet/shotgun
/obj/item/ammo_casing/a12g/blank
name = "shotgun shell"
desc = "A blank shell."
icon_state = "blshell"
- projectile_type = /obj/item/projectile/bullet/blank
+ projectile_type = /obj/projectile/bullet/blank
matter = list(MAT_STEEL = 90)
/obj/item/ammo_casing/a12g/practice
name = "shotgun shell"
desc = "A practice shell."
icon_state = "pshell"
- projectile_type = /obj/item/projectile/bullet/practice
+ projectile_type = /obj/projectile/bullet/practice
matter = list(MAT_STEEL = 90)
/obj/item/ammo_casing/a12g/beanbag
name = "beanbag shell"
desc = "A beanbag shell."
icon_state = "bshell"
- projectile_type = /obj/item/projectile/bullet/shotgun/beanbag
+ projectile_type = /obj/projectile/bullet/shotgun/beanbag
matter = list(MAT_STEEL = 180)
/obj/item/ammo_casing/a12g/improvised
name = "improvised shell"
desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards."
icon_state = "improvshell"
- projectile_type = /obj/item/projectile/bullet/pellet/shotgun_improvised
+ projectile_type = /obj/projectile/bullet/pellet/shotgun_improvised
matter = list(MAT_STEEL = 500, MAT_GLASS = 200)
//Can stun in one hit if aimed at the head, but
@@ -293,7 +293,7 @@
name = "stun shell"
desc = "A 12 gauge taser cartridge."
icon_state = "stunshell"
- projectile_type = /obj/item/projectile/energy/electrode/stunshot
+ projectile_type = /obj/projectile/energy/electrode/stunshot
matter = list(MAT_STEEL = 360, MAT_GLASS = 720)
//Does not stun, only blinds, but has area of effect.
@@ -301,7 +301,7 @@
name = "flare shell"
desc = "A chemical shell used to signal distress or provide illumination."
icon_state = "fshell"
- projectile_type = /obj/item/projectile/energy/flash/flare
+ projectile_type = /obj/projectile/energy/flash/flare
matter = list(MAT_STEEL = 90, MAT_GLASS = 90)
//Silver 12g
@@ -310,7 +310,7 @@
desc = "A 12 gauge slug. Bless and Sancitfied to banish otherworlds entities."
icon_state = "agshell"
caliber = "12g"
- projectile_type = /obj/item/projectile/bullet/pellet/shotgun/silver
+ projectile_type = /obj/projectile/bullet/pellet/shotgun/silver
matter = list(MAT_STEEL = 360, MAT_SILVER = 240)
//Wooden Stake 12g
@@ -319,7 +319,7 @@
desc = "A specialized shell designed to launch a wooden stake. Bless and Sancitfied to banish otherworlds entities."
icon_state = "agshell"
caliber = "12g"
- projectile_type = /obj/item/projectile/bullet/shotgun/stake
+ projectile_type = /obj/projectile/bullet/shotgun/stake
matter = list(MAT_STEEL = 500)
//Techshell & Derivatives
@@ -335,15 +335,15 @@
name = "meteorslug shell"
desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired."
icon_state = "mshell"
- projectile_type = /obj/item/projectile/meteor/slug
+ projectile_type = /obj/projectile/meteor/slug
matter = list(MAT_STEEL = 500, MAT_GOLD = 200)
/obj/item/ammo_casing/a12g/techshell/emp
name = "ion shell"
desc = "An advanced shotgun round that creates a small EMP when it strikes a target."
icon_state = "empshell"
- projectile_type = /obj/item/projectile/scatter/ion
-// projectile_type = /obj/item/projectile/bullet/shotgun/ion
+ projectile_type = /obj/projectile/scatter/ion
+// projectile_type = /obj/projectile/bullet/shotgun/ion
matter = list(MAT_STEEL = 360, MAT_URANIUM = 240)
/obj/item/ammo_casing/a12g/techshell/pulseslug
@@ -352,27 +352,27 @@
energy blast. While the heat and power drain limit it to one use, it can still allow an operator to engage targets that ballistic ammunition \
would have difficulty with."
icon_state = "plshell"
- projectile_type = /obj/item/projectile/beam/pulse/shotgun
+ projectile_type = /obj/projectile/beam/pulse/shotgun
matter = list(MAT_STEEL = 500, MAT_SILVER = 200)
/obj/item/ammo_casing/a12g/techshell/dragonsbreath
name = "dragonsbreath shell"
desc = "A shotgun shell which fires a spread of incendiary pellets."
icon_state = "ishell"
- projectile_type = /obj/item/projectile/bullet/incendiary/shotgun
+ projectile_type = /obj/projectile/bullet/incendiary/shotgun
/obj/item/ammo_casing/a12g/techshell/frag12
name = "FRAG-12 slug"
desc = "A high explosive breaching round for a 12 gauge shotgun."
icon_state = "heshell"
- projectile_type = /obj/item/projectile/bullet/shotgun/frag12
+ projectile_type = /obj/projectile/bullet/shotgun/frag12
matter = list(MAT_STEEL = 500, MAT_PHORON = 200)
/obj/item/ammo_casing/a12g/techshell/laserslug
name = "scatter laser shell"
desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a scatter laser weapon in a ballistic package."
icon_state = "lshell"
- projectile_type = /obj/item/projectile/scatter/laser
+ projectile_type = /obj/projectile/scatter/laser
matter = list(MAT_STEEL = 500, MAT_GLASS = 200)
/*
@@ -383,45 +383,45 @@
desc = "A 7.62mm bullet casing."
caliber = "7.62mm"
icon_state = "rifle-casing"
- projectile_type = /obj/item/projectile/bullet/rifle/a762
+ projectile_type = /obj/projectile/bullet/rifle/a762
matter = list(MAT_STEEL = 200)
/obj/item/ammo_casing/a762/ap
desc = "A 7.62mm armor-piercing bullet casing."
- projectile_type = /obj/item/projectile/bullet/rifle/a762/ap
+ projectile_type = /obj/projectile/bullet/rifle/a762/ap
matter = list(MAT_STEEL = 300)
/obj/item/ammo_casing/a762/practice
desc = "A 7.62mm practice bullet casing."
icon_state = "rifle-casing" // Need to make an icon for these
- projectile_type = /obj/item/projectile/bullet/practice
+ projectile_type = /obj/projectile/bullet/practice
matter = list(MAT_STEEL = 90)
/obj/item/ammo_casing/a762/blank
desc = "A blank 7.62mm bullet casing."
- projectile_type = /obj/item/projectile/bullet/blank
+ projectile_type = /obj/projectile/bullet/blank
matter = list(MAT_STEEL = 90)
/obj/item/ammo_casing/a762/hp
desc = "A 7.62mm hollow-point bullet casing."
- projectile_type = /obj/item/projectile/bullet/rifle/a762/hp
+ projectile_type = /obj/projectile/bullet/rifle/a762/hp
/obj/item/ammo_casing/a762/hunter
desc = "A 7.62mm hunting bullet casing."
- projectile_type = /obj/item/projectile/bullet/rifle/a762/hunter
+ projectile_type = /obj/projectile/bullet/rifle/a762/hunter
/obj/item/ammo_casing/a762/sniper
desc = "A 7.62mm high velocity bullet casing optimised for a marksman rifle."
- projectile_type = /obj/item/projectile/bullet/rifle/a762/sniper
+ projectile_type = /obj/projectile/bullet/rifle/a762/sniper
/obj/item/ammo_casing/a762/sniperhunter
desc = "A 7.62mm high velocity hunter bullet casing optimised for a marksman rifle."
- projectile_type = /obj/item/projectile/bullet/rifle/a762/sniperhunter
+ projectile_type = /obj/projectile/bullet/rifle/a762/sniperhunter
/obj/item/ammo_casing/a762/silver
desc = "A 7.62mm hunting bullet casing. Bless and Sancitfied to banish otherworlds entities."
icon_state = "agrifle-casing"
- projectile_type = /obj/item/projectile/bullet/rifle/a762/silver
+ projectile_type = /obj/projectile/bullet/rifle/a762/silver
matter = list(MAT_STEEL = 300, MAT_SILVER = 150)
/*
@@ -432,7 +432,7 @@
desc = "A 14.5mm shell."
icon_state = "lcasing"
caliber = "14.5mm"
- projectile_type = /obj/item/projectile/bullet/rifle/a145
+ projectile_type = /obj/projectile/bullet/rifle/a145
matter = list(MAT_STEEL = 1250)
/*
@@ -443,32 +443,32 @@
desc = "A 5.45mm bullet casing."
caliber = "5.45mm"
icon_state = "rifle-casing"
- projectile_type = /obj/item/projectile/bullet/rifle/a545
+ projectile_type = /obj/projectile/bullet/rifle/a545
matter = list(MAT_STEEL = 180)
/obj/item/ammo_casing/a545/ap
desc = "A 5.45mm armor-piercing bullet casing."
- projectile_type = /obj/item/projectile/bullet/rifle/a545/ap
+ projectile_type = /obj/projectile/bullet/rifle/a545/ap
matter = list(MAT_STEEL = 270)
/obj/item/ammo_casing/a545/practice
desc = "A 5.45mm practice bullet casing."
icon_state = "rifle-casing" // Need to make an icon for these
- projectile_type = /obj/item/projectile/bullet/practice
+ projectile_type = /obj/projectile/bullet/practice
matter = list(MAT_STEEL = 90)
/obj/item/ammo_casing/a545/blank
desc = "A blank 5.45mm bullet casing."
- projectile_type = /obj/item/projectile/bullet/blank
+ projectile_type = /obj/projectile/bullet/blank
matter = list(MAT_STEEL = 90)
/obj/item/ammo_casing/a545/hp
desc = "A 5.45mm hollow-point bullet casing."
- projectile_type = /obj/item/projectile/bullet/rifle/a545/hp
+ projectile_type = /obj/projectile/bullet/rifle/a545/hp
/obj/item/ammo_casing/a545/hunter
desc = "A 5.45mm hunting bullet casing."
- projectile_type = /obj/item/projectile/bullet/rifle/a545/hunter
+ projectile_type = /obj/projectile/bullet/rifle/a545/hunter
/*
* 10x24mm Caseless
@@ -478,7 +478,7 @@
desc = "A 10x24mm caseless round, common during the Xenomorph wars due to its use the the battle rifles of the United Solar Marine Corps."
caliber = "10mmCL"
icon_state = "casing"
- projectile_type = /obj/item/projectile/bullet/pistol/medium
+ projectile_type = /obj/projectile/bullet/pistol/medium
matter = list(MAT_STEEL = 180)
casing_flags = CASING_DELETE
@@ -486,14 +486,14 @@
desc = "A 10x24mm caseless round, common during the Xenomorph wars due to its use the the battle rifles of the United Solar Marine Corps. This one was meant to shred armored targets."
caliber = "10mmCL"
icon_state = "casing"
- projectile_type = /obj/item/projectile/bullet/pistol/medium/ap
+ projectile_type = /obj/projectile/bullet/pistol/medium/ap
matter = list(MAT_STEEL = 180)
/obj/item/ammo_casing/a10x24mmcaseless/hp
desc = "A 10x24mm caseless round, common during the Xenomorph wars due to its use the the battle rifles of the United Solar Marine Corps. This one was meant to shred armored targets."
caliber = "10mmCL"
icon_state = "casing"
- projectile_type = /obj/item/projectile/bullet/pistol/medium/hp
+ projectile_type = /obj/projectile/bullet/pistol/medium/hp
matter = list(MAT_STEEL = 180)
/*
@@ -504,13 +504,13 @@
desc = "A 5mm solid phoron caseless round."
caliber = "5mm caseless"
icon_state = "casing" // Placeholder. Should probably be purple.
- projectile_type = /obj/item/projectile/bullet/pistol // Close enough to be comparable.
+ projectile_type = /obj/projectile/bullet/pistol // Close enough to be comparable.
matter = list(MAT_STEEL = 180)
casing_flags = CASING_DELETE
/obj/item/ammo_casing/a5mmcaseless/stun
desc = "A 5mm solid phoron caseless stun round."
- projectile_type = /obj/item/projectile/energy/electrode // Maybe nerf this considering there's 30 rounds in a mag.
+ projectile_type = /obj/projectile/energy/electrode // Maybe nerf this considering there's 30 rounds in a mag.
/*
* Misc
@@ -520,13 +520,13 @@
name = "rocket shell"
desc = "A high explosive designed to be fired from a launcher."
icon_state = "rocketshell"
- projectile_type = /obj/item/projectile/bullet/srmrocket
+ projectile_type = /obj/projectile/bullet/srmrocket
caliber = "rocket"
matter = list(MAT_STEEL = 10000)
/obj/item/ammo_casing/rocket/weak
name = "low-yield rocket shell"
- projectile_type = /obj/item/projectile/bullet/srmrocket/weak
+ projectile_type = /obj/projectile/bullet/srmrocket/weak
matter = list(MAT_STEEL = 5000)
/obj/item/ammo_casing/cap
@@ -535,7 +535,7 @@
caliber = "caps"
icon_state = "r-casing"
color = "#FF0000"
- projectile_type = /obj/item/projectile/bullet/pistol/cap
+ projectile_type = /obj/projectile/bullet/pistol/cap
matter = list(MAT_STEEL = 85)
/obj/item/ammo_casing/spent // For simple hostile mobs only, so they don't cough up usable bullets when firing. This is for literally nothing else.
@@ -548,7 +548,7 @@
caliber = "organic"
icon_state = "globule"
color = "#FFE0E2"
- projectile_type = /obj/item/projectile/bullet/organic
+ projectile_type = /obj/projectile/bullet/organic
matter = list("flesh" = 100)
/obj/item/ammo_casing/organic/wax
@@ -557,7 +557,7 @@
caliber = "apidean"
icon_state = "globule"
color = "#E6E685"
- projectile_type = /obj/item/projectile/bullet/organic/wax
+ projectile_type = /obj/projectile/bullet/organic/wax
matter = list("wax" = 100)
/obj/item/ammo_casing/musket
@@ -565,7 +565,7 @@
desc = "A solid ball made of lead."
icon_state = "musketball"
caliber = "musket"
- projectile_type = /obj/item/projectile/bullet/musket
+ projectile_type = /obj/projectile/bullet/musket
matter = list("lead" = 100)
casing_flags = CASING_DELETE
@@ -573,7 +573,7 @@
name = "silver musket ball"
desc = "A solid ball made of a lead-silver alloy."
icon_state = "silverball"
- projectile_type = /obj/item/projectile/bullet/musket/silver
+ projectile_type = /obj/projectile/bullet/musket/silver
matter = list("lead" = 100, "silver" = 100)
/obj/item/ammo_casing/musket/blunderbuss
@@ -581,14 +581,14 @@
desc = "A bundle of lead balls and other assorted shrapnel."
icon_state = "blunderbuss"
caliber = "blunderbuss"
- projectile_type = /obj/item/projectile/bullet/pellet/blunderbuss
+ projectile_type = /obj/projectile/bullet/pellet/blunderbuss
matter = list("lead" = 500)
/obj/item/ammo_casing/musket/blunderbuss/silver
name = "sliver shot"
desc = "A bundle of silver lead allow balls and other assorted bits of silver."
icon_state = "silverbuss"
- projectile_type = /obj/item/projectile/bullet/pellet/blunderbuss/silver
+ projectile_type = /obj/projectile/bullet/pellet/blunderbuss/silver
matter = list("lead" = 500, "silver" = 500)
//Ten Gauge Rounds for Exotic Shotguns
@@ -597,36 +597,36 @@
desc = "A brass jacketed 10 gauge slug shell."
icon_state = "brshell"
caliber = "10g"
- projectile_type = /obj/item/projectile/bullet/heavy_shotgun
+ projectile_type = /obj/projectile/bullet/heavy_shotgun
matter = list(MAT_STEEL = 300, "brass" = 200)
fall_sounds = list('sound/weapons/guns/shotgun_fall.ogg')
/obj/item/ammo_casing/a10g/pellet //Spread variant.
name = "heavy shotgun shell"
desc = "A brass jacketed 10 gauge shot shell."
- projectile_type = /obj/item/projectile/scatter/heavy_shotgun
+ projectile_type = /obj/projectile/scatter/heavy_shotgun
/obj/item/ammo_casing/a10g/silver
name = "heavy silver shotgun shell"
desc = "A brass jacketed 10 gauge filled with blessed silver shot."
- projectile_type = /obj/item/projectile/scatter/heavy_shotgun/silver
+ projectile_type = /obj/projectile/scatter/heavy_shotgun/silver
//Related to the above, knockback specific variants for Grit.
/obj/item/ammo_casing/a10g/grit
name = "tooled heavy shotgun slug"
desc = "A custom brass jacketed 10 gauge slug shell."
- projectile_type = /obj/item/projectile/bullet/heavy_shotgun/grit
+ projectile_type = /obj/projectile/bullet/heavy_shotgun/grit
/obj/item/ammo_casing/a10g/pellet/grit
name = "tooled heavy shotgun shell"
desc = "A custom brass jacketed 10 gauge shot shell."
- projectile_type = /obj/item/projectile/scatter/heavy_shotgun/grit
+ projectile_type = /obj/projectile/scatter/heavy_shotgun/grit
//Arrows
/obj/item/ammo_casing/arrow
name = "arrow of questionable material"
desc = "You shouldn't be seeing this arrow."
- projectile_type = /obj/item/projectile/bullet/reusable/arrow
+ projectile_type = /obj/projectile/bullet/reusable/arrow
caliber = "arrow"
icon_state = "arrow"
throw_force = 3 //good luck hitting someone with the pointy end of the arrow
@@ -641,38 +641,38 @@
name = "bone arrow"
desc = "An arrow made of bone, knapped to a piercing tip."
icon_state = "ashenarrow"
- projectile_type = /obj/item/projectile/bullet/reusable/arrow/bone
+ projectile_type = /obj/projectile/bullet/reusable/arrow/bone
/obj/item/ammo_casing/arrow/ash
name = "ashen arrow"
desc = "An arrow made of wood, hardened by fire."
icon_state = "ashenarrow"
- projectile_type = /obj/item/projectile/bullet/reusable/arrow/ash
+ projectile_type = /obj/projectile/bullet/reusable/arrow/ash
/obj/item/ammo_casing/arrow/bone_ap
name = "hardened bone arrow"
desc = "An arrow made of bone and sinew. The tip is sharp enough to pierce through a goliath plate."
icon_state = "bonearrow"
- projectile_type = /obj/item/projectile/bullet/reusable/arrow/bone_ap
+ projectile_type = /obj/projectile/bullet/reusable/arrow/bone_ap
/obj/item/ammo_casing/arrow/bronze
name = "bronze arrow"
desc = "An arrow made of wood, tipped with bronze. The tip is dense enough to provide some armor penetration."
icon_state = "bronzearrow"
- projectile_type = /obj/item/projectile/bullet/reusable/arrow/bronze
+ projectile_type = /obj/projectile/bullet/reusable/arrow/bronze
//Plunger
/obj/item/ammo_casing/arrow/plunger
name = "plunger"
desc = "It's a plunger, for plunging."
icon_state = "plunger"
- projectile_type = /obj/item/projectile/bullet/reusable/plunger
+ projectile_type = /obj/projectile/bullet/reusable/plunger
//Foam Darts
/obj/item/ammo_casing/foam
name = "foam dart"
desc = "A soft projectile made out of orange foam with a blue plastic tip."
- projectile_type = /obj/item/projectile/bullet/reusable/foam
+ projectile_type = /obj/projectile/bullet/reusable/foam
caliber = "foamdart"
icon_state = "foamdart"
throw_force = 0 //good luck hitting someone with the pointy end of the arrow
@@ -684,5 +684,5 @@
/obj/item/ammo_casing/foam/riot
name = "riot dart"
desc = "A flexible projectile made out of hardened orange foam with a red plastic tip."
- projectile_type = /obj/item/projectile/bullet/reusable/foam/riot
+ projectile_type = /obj/projectile/bullet/reusable/foam/riot
icon_state = "foamdart_riot"
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 9a29fb62d97..c5e7b4151a1 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -45,7 +45,7 @@
throw_force = 5
throw_speed = 4
throw_range = 5
- force = 5
+ damage_force = 5
preserve_item = 1
origin_tech = list(TECH_COMBAT = 1)
attack_verb = list("struck", "hit", "bashed")
@@ -66,7 +66,7 @@
var/list/burst_accuracy = list(0) //allows for different accuracies for each shot in a burst. Applied on top of accuracy
var/list/dispersion = list(0)
var/mode_name = null
- var/projectile_type = /obj/item/projectile //On ballistics, only used to check for the cham gun
+ var/projectile_type = /obj/projectile //On ballistics, only used to check for the cham gun
var/holy = FALSE //For Divinely blessed guns
var/obj/item/ammo_casing/chambered = null
@@ -463,8 +463,8 @@
handle_click_empty()
break
- if(istype(projectile, /obj/item/projectile))
- var/obj/item/projectile/P = projectile
+ if(istype(projectile, /obj/projectile))
+ var/obj/projectile/P = projectile
var/acc = burst_accuracy[min(i, burst_accuracy.len)]
var/disp = dispersion[min(i, dispersion.len)]
@@ -597,7 +597,7 @@
update_icon()
/obj/item/gun/proc/process_point_blank(obj/projectile, mob/user, atom/target)
- var/obj/item/projectile/P = projectile
+ var/obj/projectile/P = projectile
if(!istype(P))
return //default behaviour only applies to true projectiles
@@ -618,7 +618,7 @@
P.damage *= damage_mult
/obj/item/gun/proc/process_accuracy(obj/projectile, mob/living/user, atom/target, var/burst, var/held_twohanded)
- var/obj/item/projectile/P = projectile
+ var/obj/projectile/P = projectile
if(!istype(P))
return //default behaviour only applies to true projectiles
@@ -652,7 +652,7 @@
//does the actual launching of the projectile
/obj/item/gun/proc/process_projectile(obj/projectile, mob/user, atom/target, var/target_zone, var/params=null)
- var/obj/item/projectile/P = projectile
+ var/obj/projectile/P = projectile
if(!istype(P))
return FALSE //default behaviour only applies to true projectiles
@@ -671,7 +671,7 @@
return launched
-/obj/item/gun/proc/play_fire_sound(var/mob/user, var/obj/item/projectile/P)
+/obj/item/gun/proc/play_fire_sound(var/mob/user, var/obj/projectile/P)
var/shot_sound = fire_sound
if(!shot_sound && istype(P) && P.fire_sound) // If the gun didn't have a fire_sound, but the projectile exists, and has a sound...
@@ -698,11 +698,11 @@
M.visible_message("[user] decided life was worth living")
mouthshoot = 0
return
- var/obj/item/projectile/in_chamber = consume_next_projectile()
+ var/obj/projectile/in_chamber = consume_next_projectile()
if (istype(in_chamber))
user.visible_message("[user] pulls the trigger.")
play_fire_sound(M, in_chamber)
- if(istype(in_chamber, /obj/item/projectile/beam/lasertag))
+ if(istype(in_chamber, /obj/projectile/beam/lasertag))
user.show_message("You feel rather silly, trying to commit suicide with a toy.")
mouthshoot = 0
return
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 1bb1446147f..77037dce9b7 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -7,7 +7,7 @@
w_class = ITEMSIZE_NORMAL
matter = list(MAT_STEEL = 1000)
recoil = 0
- projectile_type = /obj/item/projectile/bullet/pistol/strong //Only used for chameleon guns
+ projectile_type = /obj/projectile/bullet/pistol/strong //Only used for chameleon guns
var/caliber = ".357" //determines which casings will fit
var/handle_casings = EJECT_CASINGS //determines how spent casings should be handled
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index ecd9572a6ab..3f8add2e6a6 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -13,7 +13,7 @@
var/accept_cell_type = /obj/item/cell/device
var/cell_type = /obj/item/cell/device/weapon
- projectile_type = /obj/item/projectile/beam/practice
+ projectile_type = /obj/projectile/beam/practice
var/modifystate
var/charge_meter = 1 //if set, the icon state will be chosen based on the current charge
diff --git a/code/modules/projectiles/guns/energy/hooklauncher.dm b/code/modules/projectiles/guns/energy/hooklauncher.dm
index 657f1b5eb5e..cf8df2af173 100644
--- a/code/modules/projectiles/guns/energy/hooklauncher.dm
+++ b/code/modules/projectiles/guns/energy/hooklauncher.dm
@@ -13,7 +13,7 @@
charge_cost = 300
cell_type = /obj/item/cell/device/weapon
- projectile_type = /obj/item/projectile/energy/hook
+ projectile_type = /obj/projectile/energy/hook
// An easily concealable not-ripoff version. It would be silenced, if it didn't make it blatant you're the one using it.
@@ -31,9 +31,9 @@
charge_cost = 400
charge_meter = FALSE
- projectile_type = /obj/item/projectile/energy/hook/ring
+ projectile_type = /obj/projectile/energy/hook/ring
firemodes = list(
- list(mode_name="manipulate", fire_delay=15, projectile_type=/obj/item/projectile/energy/hook/ring, charge_cost = 400),
- list(mode_name="battle", fire_delay=8, projectile_type=/obj/item/projectile/beam/xray, charge_cost = 260),
+ list(mode_name="manipulate", fire_delay=15, projectile_type=/obj/projectile/energy/hook/ring, charge_cost = 400),
+ list(mode_name="battle", fire_delay=8, projectile_type=/obj/projectile/beam/xray, charge_cost = 260),
)
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 513a425d6a4..9ab793fe836 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -30,7 +30,7 @@
// flight_x_offset = 15
// flight_y_offset = 9
// automatic_charge_overlays = FALSE
- projectile_type = /obj/item/projectile/kinetic
+ projectile_type = /obj/projectile/kinetic
charge_cost = 1200
battery_lock = TRUE
fire_sound = 'sound/weapons/kenetic_accel.ogg'
@@ -53,7 +53,7 @@
return
. = ..()
if(.)
- var/obj/item/projectile/P = .
+ var/obj/projectile/P = .
modify_projectile(P)
/obj/item/gun/energy/kinetic_accelerator/handle_post_fire(mob/user, atom/target, pointblank, reflex)
@@ -66,7 +66,7 @@
desc = "A premium kinetic accelerator fitted with an extended barrel and increased pressure tank."
icon_state = "premiumgun"
item_state = "premiumgun"
- projectile_type = /obj/item/projectile/kinetic/premium
+ projectile_type = /obj/projectile/kinetic/premium
*/
/obj/item/gun/energy/kinetic_accelerator/examine(mob/user)
@@ -110,7 +110,7 @@
for(var/A in modkits)
. += A
-/obj/item/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/projectile/kinetic/K)
K.kinetic_gun = src //do something special on-hit, easy!
for(var/A in get_modkits())
var/obj/item/borg/upgrade/modkit/M = A
@@ -201,12 +201,12 @@
. += emptystate
//Projectiles
-/obj/item/projectile/kinetic
+/obj/projectile/kinetic
name = "kinetic force"
icon_state = null
damage = 30
damage_type = BRUTE
- check_armour = "bomb"
+ damage_flag = ARMOR_BOMB
range = 4
// log_override = TRUE
@@ -214,16 +214,16 @@
var/pressure_decrease = 1/3
var/obj/item/gun/energy/kinetic_accelerator/kinetic_gun
-/obj/item/projectile/kinetic/premium
+/obj/projectile/kinetic/premium
damage = 40
damage_type = BRUTE
range = 5
-/obj/item/projectile/kinetic/Destroy()
+/obj/projectile/kinetic/Destroy()
kinetic_gun = null
return ..()
-/obj/item/projectile/kinetic/Bump(atom/target)
+/obj/projectile/kinetic/Bump(atom/target)
if(kinetic_gun)
var/list/mods = kinetic_gun.get_modkits()
for(var/obj/item/borg/upgrade/modkit/M in mods)
@@ -234,22 +234,22 @@
pressure_decrease_active = TRUE
return ..()
-/obj/item/projectile/kinetic/projectile_attack_mob(mob/living/target_mob, distance, miss_modifier)
+/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
pressure_decrease_active = TRUE
return ..()
-/obj/item/projectile/kinetic/on_range()
+/obj/projectile/kinetic/on_range()
strike_thing()
..()
-/obj/item/projectile/kinetic/on_hit(atom/target)
+/obj/projectile/kinetic/on_hit(atom/target)
strike_thing(target)
. = ..()
-/obj/item/projectile/kinetic/proc/strike_thing(atom/target)
+/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
@@ -345,14 +345,14 @@
if(forcemove)
forceMove(get_turf(KA))
-/obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/projectile/kinetic/K)
//use this one for effects you want to trigger before any damage is done at all and before damage is decreased by pressure
-/obj/item/borg/upgrade/modkit/proc/projectile_prehit(obj/item/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/proc/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
//use this one for effects you want to trigger before mods that do damage
-/obj/item/borg/upgrade/modkit/proc/projectile_strike_predamage(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/proc/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
//and this one for things that don't need to trigger before other damage-dealing mods
-/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
//Range
/obj/item/borg/upgrade/modkit/range
@@ -361,7 +361,7 @@
modifier = 1
cost = 25
-/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/projectile/kinetic/K)
K.range += modifier
@@ -371,7 +371,7 @@
desc = "Increases the damage of kinetic accelerator when installed."
modifier = 10
-/obj/item/borg/upgrade/modkit/damage/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/damage/modify_projectile(obj/projectile/kinetic/K)
K.damage += modifier
@@ -431,10 +431,10 @@
turf_aoe = initial(turf_aoe)
stats_stolen = FALSE
-/obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/projectile/kinetic/K)
K.name = "kinetic explosion"
-/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(stats_stolen)
return
new /obj/effect/temp_visual/explosion/fast(target_turf)
@@ -445,7 +445,7 @@
M.GetDrilled(TRUE)
if(modifier)
for(var/mob/living/L in range(1, target_turf) - K.firer - target)
- var/armor = L.run_armor_check(K.def_zone, K.check_armour)
+ var/armor = L.run_armor_check(K.def_zone, K.damage_flag)
// var/armor = L.run_armor_check(K.def_zone, K.flag, null, null, K.armour_penetration)
L.apply_damage(K.damage*modifier, K.damage_type, K.def_zone, armor)
// L.apply_damage(K.damage*modifier, K.damage_type, K.def_zone, armor)
@@ -482,7 +482,7 @@
modifier = -14 //Makes the cooldown 3 seconds(with no cooldown mods) if you miss. Don't miss.
cost = 50
-/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
var/valid_repeat = FALSE
if(isliving(target))
var/mob/living/L = target
@@ -503,7 +503,7 @@
cost = 20
var/static/list/damage_heal_order = list(BRUTE, BURN, OXY)
-/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/item/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(isliving(target) && isliving(K.firer))
var/mob/living/L = target
if(L.stat == DEAD)
@@ -519,7 +519,7 @@
cost = 30
modifier = 0.25 //A bonus 15 damage if you burst the field on a target, 60 if you lure them into it.
-/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(target_turf && !ismineralturf(target_turf)) //Don't make fields on mineral turfs.
var/obj/effect/resonance/R = locate(/obj/effect/resonance) in target_turf
if(R)
@@ -538,7 +538,7 @@
var/maximum_bounty = 25
var/list/bounties_reaped = list()
-/obj/item/borg/upgrade/modkit/bounty/projectile_prehit(obj/item/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/bounty/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(isliving(target))
var/mob/living/L = target
var/list/existing_marks = L.has_status_effect_list(STATUS_EFFECT_SYPHONMARK)
@@ -549,7 +549,7 @@
qdel(SM)
L.apply_status_effect(STATUS_EFFECT_SYPHONMARK, src)
-/obj/item/borg/upgrade/modkit/bounty/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/bounty/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
if(isliving(target))
var/mob/living/L = target
if(bounties_reaped[L.type])
@@ -578,7 +578,7 @@
maximum_of_type = 2
cost = 35
-/obj/item/borg/upgrade/modkit/indoors/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/indoors/modify_projectile(obj/projectile/kinetic/K)
K.pressure_decrease *= modifier
@@ -635,7 +635,7 @@
denied_type = /obj/item/borg/upgrade/modkit/tracer
var/bolt_color = "#FFFFFF"
-/obj/item/borg/upgrade/modkit/tracer/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/tracer/modify_projectile(obj/projectile/kinetic/K)
K.icon_state = "ka_tracer"
K.color = bolt_color
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 9a2748fee7d..66a003d44a3 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -8,16 +8,16 @@
fire_delay = 8
slot_flags = SLOT_BELT|SLOT_BACK
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
matter = list(MAT_STEEL = 2000)
- projectile_type = /obj/item/projectile/beam/midlaser
+ projectile_type = /obj/projectile/beam/midlaser
heavy = TRUE
one_handed_penalty = 30
firemodes = list(
- list(mode_name="normal", fire_delay=8, projectile_type=/obj/item/projectile/beam/midlaser, charge_cost = 240),
- list(mode_name="suppressive", fire_delay=5, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60),
+ list(mode_name="normal", fire_delay=8, projectile_type=/obj/projectile/beam/midlaser, charge_cost = 240),
+ list(mode_name="suppressive", fire_delay=5, projectile_type=/obj/projectile/beam/weaklaser, charge_cost = 60),
)
/obj/item/gun/energy/laser/mounted
@@ -32,14 +32,14 @@
/obj/item/gun/energy/laser/practice
name = "practice laser carbine"
desc = "A modified version of the HI G40E, this one fires less concentrated energy bolts designed for target practice."
- projectile_type = /obj/item/projectile/beam/practice
+ projectile_type = /obj/projectile/beam/practice
charge_cost = 48
cell_type = /obj/item/cell/device
firemodes = list(
- list(mode_name="normal", projectile_type=/obj/item/projectile/beam/practice, charge_cost = 48),
- list(mode_name="suppressive", projectile_type=/obj/item/projectile/beam/practice, charge_cost = 12),
+ list(mode_name="normal", projectile_type=/obj/projectile/beam/practice, charge_cost = 48),
+ list(mode_name="suppressive", projectile_type=/obj/projectile/beam/practice, charge_cost = 12),
)
/obj/item/gun/energy/retro
@@ -49,7 +49,7 @@
desc = "An older model of the basic lasergun. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."
slot_flags = SLOT_BELT
w_class = ITEMSIZE_NORMAL
- projectile_type = /obj/item/projectile/beam
+ projectile_type = /obj/projectile/beam
fire_delay = 10 //old technology
/obj/item/gun/energy/retro/mounted
@@ -102,7 +102,7 @@
fire_delay = 10 // Handguns should be inferior to two-handed weapons. Even alien ones I suppose.
charge_cost = 480 // Five shots.
- projectile_type = /obj/item/projectile/beam/cyan
+ projectile_type = /obj/projectile/beam/cyan
cell_type = /obj/item/cell/device/weapon/recharge/alien // Self charges.
origin_tech = list(TECH_COMBAT = 8, TECH_MAGNET = 7)
modifystate = "alienpistol"
@@ -113,10 +113,10 @@
icon_state = "caplaser"
item_state = "caplaser"
desc = "A rare weapon, handcrafted by a now defunct specialty manufacturer on Luna for a small fortune. It's certainly aged well."
- force = 5
+ damage_force = 5
slot_flags = SLOT_BELT
w_class = ITEMSIZE_NORMAL
- projectile_type = /obj/item/projectile/beam
+ projectile_type = /obj/projectile/beam
origin_tech = null
fire_delay = 10 //Old pistol
charge_cost = 480 //to compensate a bit for self-recharging
@@ -130,7 +130,7 @@
item_state = null
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
slot_flags = SLOT_BELT|SLOT_BACK
- projectile_type = /obj/item/projectile/beam/heavylaser/cannon
+ projectile_type = /obj/projectile/beam/heavylaser/cannon
battery_lock = 1
fire_delay = 20
w_class = ITEMSIZE_LARGE
@@ -146,7 +146,7 @@
recharge_time = 10
//accuracy = 0 // Mounted cannons are just fine the way they are.
one_handed_penalty = 0 // Not sure if two-handing gets checked for mounted weapons, but better safe than sorry.
- projectile_type = /obj/item/projectile/beam/heavylaser
+ projectile_type = /obj/projectile/beam/heavylaser
charge_cost = 400
fire_delay = 20
@@ -157,7 +157,7 @@
heavy = TRUE
item_state = "xray"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
- projectile_type = /obj/item/projectile/beam/xray
+ projectile_type = /obj/projectile/beam/xray
charge_cost = 200
/obj/item/gun/energy/sniperrifle
@@ -168,11 +168,11 @@
item_state = "sniper"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "z8carbine", SLOT_ID_LEFT_HAND = "z8carbine") //placeholder
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4)
- projectile_type = /obj/item/projectile/beam/sniper
+ projectile_type = /obj/projectile/beam/sniper
slot_flags = SLOT_BACK
charge_cost = 600
fire_delay = 35
- force = 10
+ damage_force = 10
heavy = TRUE
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
accuracy = 25 //shooting at the hip
@@ -205,11 +205,11 @@
icon_state = "eshotgun"
item_state = "shotgun"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_POWER = 3)
- projectile_type = /obj/item/projectile/beam/sniper
+ projectile_type = /obj/projectile/beam/sniper
slot_flags = SLOT_BACK
charge_cost = 1300
fire_delay = 20
- force = 8
+ damage_force = 8
heavy = TRUE
w_class = ITEMSIZE_LARGE
accuracy = 70
@@ -231,7 +231,7 @@
icon_state = "ecshotgun"
item_state = "cshotgun"
charge_cost = 1000
- force = 12
+ damage_force = 12
accuracy = 70
scoped_accuracy = 95
@@ -243,24 +243,24 @@
desc = "Based off an ancient model of laser gun, the NT-Tagger will make you the terror of the next workplace lasertag tournament."
origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 2)
matter = list(MAT_STEEL = 2000)
- projectile_type = /obj/item/projectile/beam/lasertag/blue
+ projectile_type = /obj/projectile/beam/lasertag/blue
cell_type = /obj/item/cell/device/weapon/recharge
battery_lock = 1
/obj/item/gun/energy/lasertag/blue
icon_state = "bluetag"
item_state = "bluetag"
- projectile_type = /obj/item/projectile/beam/lasertag/blue
+ projectile_type = /obj/projectile/beam/lasertag/blue
pin = /obj/item/firing_pin/tag/blue
/obj/item/gun/energy/lasertag/red
icon_state = "redtag"
item_state = "redtag"
- projectile_type = /obj/item/projectile/beam/lasertag/red
+ projectile_type = /obj/projectile/beam/lasertag/red
pin = /obj/item/firing_pin/tag/red
/obj/item/gun/energy/lasertag/omni
- projectile_type = /obj/item/projectile/beam/lasertag/omni
+ projectile_type = /obj/projectile/beam/lasertag/omni
// Laser scattergun, proof of concept.
@@ -271,7 +271,7 @@
desc = "A strange Almachi weapon, utilizing a refracting prism to turn a single laser blast into a diverging cluster."
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 1, TECH_MATERIAL = 4)
heavy = TRUE
- projectile_type = /obj/item/projectile/scatter/laser
+ projectile_type = /obj/projectile/scatter/laser
// Other laser guns.
@@ -284,7 +284,7 @@
heavy = TRUE
slot_flags = SLOT_BACK
charge_cost = 60 // 40 shots, lay down the firepower
- projectile_type = /obj/item/projectile/beam/weaklaser
+ projectile_type = /obj/projectile/beam/weaklaser
cell_type = /obj/item/cell/device/weapon
origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 5, TECH_ILLEGAL = 3)
@@ -302,7 +302,7 @@
w_class = ITEMSIZE_SMALL
slot_flags = SLOT_BELT|SLOT_BACK
charge_cost = 1500 //You got 1 shot...
- projectile_type = /obj/item/projectile/beam/heavylaser //But it hurts a lot
+ projectile_type = /obj/projectile/beam/heavylaser //But it hurts a lot
cell_type = /obj/item/cell/device/weapon
//NT SpecOps Laser Rifle
@@ -314,14 +314,14 @@
fire_delay = 6
slot_flags = SLOT_BELT|SLOT_BACK
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 2)
matter = list(MAT_STEEL = 2000, "plastic" = 1000)
- projectile_type = /obj/item/projectile/beam/midlaser
+ projectile_type = /obj/projectile/beam/midlaser
heavy = FALSE
one_handed_penalty = 25
firemodes = list(
- list(mode_name="normal", fire_delay=6, projectile_type=/obj/item/projectile/beam/midlaser, charge_cost = 200),
- list(mode_name="suppressive", fire_delay=3, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 50),
+ list(mode_name="normal", fire_delay=6, projectile_type=/obj/projectile/beam/midlaser, charge_cost = 200),
+ list(mode_name="suppressive", fire_delay=3, projectile_type=/obj/projectile/beam/weaklaser, charge_cost = 50),
)
diff --git a/code/modules/projectiles/guns/energy/modular/lasermediums.dm b/code/modules/projectiles/guns/energy/modular/lasermediums.dm
index f542b08c384..7d5dcaa162d 100644
--- a/code/modules/projectiles/guns/energy/modular/lasermediums.dm
+++ b/code/modules/projectiles/guns/energy/modular/lasermediums.dm
@@ -5,126 +5,126 @@
/obj/item/modularlaser/lasermedium
name = "modular laser part"
desc = "I shouldn't exist."
- var/obj/item/projectile/beamtype = /obj/item/projectile/beam
- var/obj/item/projectile/scatterbeam = /obj/item/projectile/scatter/laser
+ var/obj/projectile/beamtype = /obj/projectile/beam
+ var/obj/projectile/scatterbeam = /obj/projectile/scatter/laser
var/beamcost = 120
var/firename = "pew"
/obj/item/modularlaser/lasermedium/stun
name = "stun beam medium"
desc = "Allows a modular energy gun to fire basic stun beams."
- beamtype = /obj/item/projectile/beam/stun
- scatterbeam = /obj/item/projectile/scatter/stun
+ beamtype = /obj/projectile/beam/stun
+ scatterbeam = /obj/projectile/scatter/stun
beamcost = 240
firename = "stun"
/obj/item/modularlaser/lasermedium/stun/weak
name = "low-power stun beam medium"
desc = "Allows a modular energy gun to fire weak stun beams."
- beamtype = /obj/item/projectile/beam/stun/weak
- scatterbeam = /obj/item/projectile/scatter/stun/weak
+ beamtype = /obj/projectile/beam/stun/weak
+ scatterbeam = /obj/projectile/scatter/stun/weak
beamcost = 120
firename = "weak stun"
/obj/item/modularlaser/lasermedium/net
name = "entangling beam medium"
desc = "Allows a modular energy gun to fire entangling net beams."
- beamtype = /obj/item/projectile/beam/energy_net
- scatterbeam = /obj/item/projectile/scatter/energy_net
+ beamtype = /obj/projectile/beam/energy_net
+ scatterbeam = /obj/projectile/scatter/energy_net
beamcost = 1200 //hefty cost.
firename = "energy net"
/obj/item/modularlaser/lasermedium/electrode
name = "electrode projector tube"
desc = "Allows a modular energy gun to fire basic stunning electrodes."
- beamtype = /obj/item/projectile/energy/electrode/strong
- scatterbeam = /obj/item/projectile/scatter/stun/electrode
+ beamtype = /obj/projectile/energy/electrode/strong
+ scatterbeam = /obj/projectile/scatter/stun/electrode
beamcost = 240
firename = "electrode stun"
/obj/item/modularlaser/lasermedium/laser
name = "laser beam medium"
desc = "Allows a modular energy gun to fire basic laser beams."
- beamtype = /obj/item/projectile/beam
- scatterbeam = /obj/item/projectile/scatter/laser
+ beamtype = /obj/projectile/beam
+ scatterbeam = /obj/projectile/scatter/laser
beamcost = 240
firename = "lethal"
/obj/item/modularlaser/lasermedium/laser/weak
name = "low-power laser beam medium"
desc = "Allows a modular energy gun to fire supressive laser beams."
- beamtype = /obj/item/projectile/beam/weaklaser
- scatterbeam = /obj/item/projectile/scatter/laser/weak
+ beamtype = /obj/projectile/beam/weaklaser
+ scatterbeam = /obj/projectile/scatter/laser/weak
beamcost = 60
firename = "weak laser"
/obj/item/modularlaser/lasermedium/laser/sniper
name = "focused laser beam medium"
desc = "Allows a modular energy gun to fire extremely focused laser beams."
- beamtype = /obj/item/projectile/beam/sniper
- scatterbeam = /obj/item/projectile/beam/sniper //no shotgun snipers. you can have shotgun cannons though!
+ beamtype = /obj/projectile/beam/sniper
+ scatterbeam = /obj/projectile/beam/sniper //no shotgun snipers. you can have shotgun cannons though!
beamcost = 300
firename = "focused laser"
/obj/item/modularlaser/lasermedium/laser/heavy
name = "robust beam medium"
desc = "Allows a modular energy gun to fire heavy laser beams."
- beamtype = /obj/item/projectile/beam/heavylaser
- scatterbeam = /obj/item/projectile/scatter/laser/heavylaser
+ beamtype = /obj/projectile/beam/heavylaser
+ scatterbeam = /obj/projectile/scatter/laser/heavylaser
beamcost = 600
firename = "heavy laser"
/obj/item/modularlaser/lasermedium/laser/cannon
name = "uranium-235 excited medium"
desc = "Allows a modular energy gun to fire heavy laser cannon beams."
- beamtype = /obj/item/projectile/beam/heavylaser/cannon
- scatterbeam = /obj/item/projectile/scatter/laser/heavylaser/cannon
+ beamtype = /obj/projectile/beam/heavylaser/cannon
+ scatterbeam = /obj/projectile/scatter/laser/heavylaser/cannon
beamcost = 800
firename = "cannon beam"
/obj/item/modularlaser/lasermedium/laser/xray
name = "xraser beam medium"
desc = "Allows a modular energy gun to fire exotic x-ray beams."
- beamtype = /obj/item/projectile/beam/gamma
- scatterbeam = /obj/item/projectile/scatter/gamma
+ beamtype = /obj/projectile/beam/gamma
+ scatterbeam = /obj/projectile/scatter/gamma
firename = "xraser"
/obj/item/modularlaser/lasermedium/laser/pulse //Badmin only.
name = "pulse beam medium"
desc = "Allows a modular energy gun to fire pulse beams."
- beamtype = /obj/item/projectile/beam/pulse
- scatterbeam = /obj/item/projectile/scatter/laser/pulse //haha fuck
+ beamtype = /obj/projectile/beam/pulse
+ scatterbeam = /obj/projectile/scatter/laser/pulse //haha fuck
beamcost = 240
firename = "DESTROY"
/obj/item/modularlaser/lasermedium/dig
name = "excavation beam medium"
desc = "Allows a modular energy gun to fire excavation laser beams. Yours is the beam that will pierce the heavens!"
- beamtype = /obj/item/projectile/beam/excavation
- scatterbeam = /obj/item/projectile/scatter/excavation
+ beamtype = /obj/projectile/beam/excavation
+ scatterbeam = /obj/projectile/scatter/excavation
beamcost = 12
firename = "excavate"
/obj/item/modularlaser/lasermedium/lightning
name = "electric beam medium"
desc = "Allows a modular energy gun to fire lightning!"
- beamtype = /obj/item/projectile/beam/shock
- scatterbeam = /obj/item/projectile/scatter/shock
+ beamtype = /obj/projectile/beam/shock
+ scatterbeam = /obj/projectile/scatter/shock
beamcost = 300
firename = "tesla"
/obj/item/modularlaser/lasermedium/hook
name = "energy grappler projection tube"
desc = "Allows a modular energy gun to fire an energy grappler. "
- beamtype = /obj/item/projectile/energy/hook
- scatterbeam = /obj/item/projectile/energy/hook
+ beamtype = /obj/projectile/energy/hook
+ scatterbeam = /obj/projectile/energy/hook
beamcost = 400
firename = "graviton grapple"
/obj/item/modularlaser/lasermedium/phase
name = "phase projection tube"
desc = "Allows a modular energy gun to fire phase waves for killing wildlife. "
- beamtype = /obj/item/projectile/energy/phase/heavy
- scatterbeam = /obj/item/projectile/scatter/phase
+ beamtype = /obj/projectile/energy/phase/heavy
+ scatterbeam = /obj/projectile/scatter/phase
beamcost = 80
firename = "phase"
diff --git a/code/modules/projectiles/guns/energy/modular/modulargun.dm b/code/modules/projectiles/guns/energy/modular/modulargun.dm
index 77be3f713bf..478ea311799 100644
--- a/code/modules/projectiles/guns/energy/modular/modulargun.dm
+++ b/code/modules/projectiles/guns/energy/modular/modulargun.dm
@@ -9,7 +9,7 @@
icon_state = "mod_pistol"
cell_type = /obj/item/cell/device/weapon
charge_cost = 120
- projectile_type = /obj/item/projectile/beam
+ projectile_type = /obj/projectile/beam
var/cores = 1//How many lasing cores can we support?
var/assembled = 1 //Are we open?
var/obj/item/modularlaser/lasermedium/primarycore //Lasing medium core.
@@ -63,7 +63,7 @@
firemodes = list()
var/burstmode = circuit.maxburst //Max burst controlled by the laser control circuit.
//to_chat(world, "The modular weapon at [src.loc] has begun generating a firemode.")
- var/obj/item/projectile/beammode = primarycore.beamtype //Primary mode fire type.
+ var/obj/projectile/beammode = primarycore.beamtype //Primary mode fire type.
var/chargecost = primarycore.beamcost * lasercap.costmod //Cost for primary fire.
chargecost += lasercooler.costadd //Cooler adds a flat amount post capacitor based on firedelay mod. Can be negative.
var/scatter = laserlens.scatter //Does it scatter the beams?
@@ -72,8 +72,8 @@
accuracy = laserlens.accuracy
var/chargecost_lethal = 120
var/chargecost_special = 120
- var/obj/item/projectile/beammode_lethal
- var/obj/item/projectile/beammode_special
+ var/obj/projectile/beammode_lethal
+ var/obj/projectile/beammode_special
if(cores > 1 && secondarycore) //Secondary firemode
beammode_lethal = secondarycore.beamtype
chargecost_lethal = secondarycore.beamcost * lasercap.costmod
@@ -183,7 +183,7 @@
if(!assembled)
to_chat(user, "The gun is open!")
return FALSE
- if(projectile_type == /obj/item/projectile)
+ if(projectile_type == /obj/projectile)
to_chat(user, "The gun is experiencing a checking error! Open and close the weapon, or try removing all the parts and placing them back in.")
var/datum/firemode/new_mode = firemodes[1]
new_mode.apply_to(src)
diff --git a/code/modules/projectiles/guns/energy/netgun_vr.dm b/code/modules/projectiles/guns/energy/netgun_vr.dm
index b88709e1c0f..f87e7ceeb06 100644
--- a/code/modules/projectiles/guns/energy/netgun_vr.dm
+++ b/code/modules/projectiles/guns/energy/netgun_vr.dm
@@ -8,13 +8,13 @@
fire_sound = 'sound/weapons/eluger.ogg'
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_MAGNET = 3)
- projectile_type = /obj/item/projectile/beam/stun/blue
+ projectile_type = /obj/projectile/beam/stun/blue
charge_cost = 240
fire_delay = 5
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/blue, fire_sound='sound/weapons/Taser.ogg', charge_cost=240, fire_delay=5),
- list(mode_name="capture", projectile_type=/obj/item/projectile/beam/energy_net, fire_sound = 'sound/weapons/eluger.ogg', charge_cost=1200, fire_delay=50)
+ list(mode_name="stun", projectile_type=/obj/projectile/beam/stun/blue, fire_sound='sound/weapons/Taser.ogg', charge_cost=240, fire_delay=5),
+ list(mode_name="capture", projectile_type=/obj/projectile/beam/energy_net, fire_sound = 'sound/weapons/eluger.ogg', charge_cost=1200, fire_delay=50)
)
/obj/item/gun/energy/netgun/update_icon()
diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm
index 2d72da13b88..079c4c49694 100644
--- a/code/modules/projectiles/guns/energy/nuclear.dm
+++ b/code/modules/projectiles/guns/energy/nuclear.dm
@@ -5,13 +5,13 @@
item_state = null //so the human update icon uses the icon_state instead.
fire_delay = 10 // Handguns should be inferior to two-handed weapons.
- projectile_type = /obj/item/projectile/beam/stun/med
+ projectile_type = /obj/projectile/beam/stun/med
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
modifystate = "energystun"
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="energystun", charge_cost = 240),
- list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="energykill", charge_cost = 480),
+ list(mode_name="stun", projectile_type=/obj/projectile/beam/stun/med, modifystate="energystun", charge_cost = 240),
+ list(mode_name="lethal", projectile_type=/obj/projectile/beam, modifystate="energykill", charge_cost = 480),
)
/obj/item/gun/energy/gun/mounted
@@ -26,11 +26,11 @@
icon_state = "fm-2tstun100" //May resprite this to be more rifley
item_state = null //so the human update icon uses the icon_state instead.
charge_cost = 100
- force = 8
+ damage_force = 8
w_class = ITEMSIZE_LARGE //Probably gonna make it a rifle sooner or later
fire_delay = 6
heavy = TRUE
- projectile_type = /obj/item/projectile/beam/stun/weak
+ projectile_type = /obj/projectile/beam/stun/weak
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3)
modifystate = "fm-2tstun"
@@ -38,10 +38,10 @@
one_handed_penalty = 30
firemodes = list(
- list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="fm-2tstun", charge_cost = 100),
- list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(65,65,65), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="fm-2tstun"),
- list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="fm-2tkill", charge_cost = 200),
- list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(65,65,65), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="fm-2tkill"),
+ list(mode_name="stun", burst=1, projectile_type=/obj/projectile/beam/stun/weak, modifystate="fm-2tstun", charge_cost = 100),
+ list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(65,65,65), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/projectile/beam/stun/weak, modifystate="fm-2tstun"),
+ list(mode_name="lethal", burst=1, projectile_type=/obj/projectile/beam/burstlaser, modifystate="fm-2tkill", charge_cost = 200),
+ list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(65,65,65), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/projectile/beam/burstlaser, modifystate="fm-2tkill"),
)
/obj/item/gun/energy/gun/miningcarbine
@@ -50,28 +50,28 @@
icon_state = "fm-2tstun100" //May resprite this to be more rifley
item_state = null //so the human update icon uses the icon_state instead.
charge_cost = 20
- force = 8
+ damage_force = 8
w_class = ITEMSIZE_LARGE
fire_delay = 3
- projectile_type = /obj/item/projectile/beam/excavation
+ projectile_type = /obj/projectile/beam/excavation
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 2)
modifystate = "fm-2tstun"
firemodes = list(
- list(mode_name="mine", burst=1, projectile_type=/obj/item/projectile/beam/excavation, modifystate="fm-2tstun", charge_cost = 20),
- list(mode_name="mine burst", burst=5, fire_delay=null, move_delay=4, burst_accuracy=list(65,65,65), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/excavation, modifystate="fm-2tstun"),
- list(mode_name="scatter", burst=1, projectile_type=/obj/item/projectile/scatter/excavation, modifystate="fm-2tkill", charge_cost = 40),
- list(mode_name="scatter burst", burst=5, fire_delay=null, move_delay=4, burst_accuracy=list(65,65,65), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/scatter/excavation, modifystate="fm-2tkill"),
+ list(mode_name="mine", burst=1, projectile_type=/obj/projectile/beam/excavation, modifystate="fm-2tstun", charge_cost = 20),
+ list(mode_name="mine burst", burst=5, fire_delay=null, move_delay=4, burst_accuracy=list(65,65,65), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/projectile/beam/excavation, modifystate="fm-2tstun"),
+ list(mode_name="scatter", burst=1, projectile_type=/obj/projectile/scatter/excavation, modifystate="fm-2tkill", charge_cost = 40),
+ list(mode_name="scatter burst", burst=5, fire_delay=null, move_delay=4, burst_accuracy=list(65,65,65), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/projectile/scatter/excavation, modifystate="fm-2tkill"),
)
/obj/item/gun/energy/gun/nuclear
name = "advanced energy gun"
desc = "An energy gun with an experimental miniaturized reactor."
icon_state = "nucgunstun"
- projectile_type = /obj/item/projectile/beam/stun
+ projectile_type = /obj/projectile/beam/stun
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_POWER = 3)
slot_flags = SLOT_BELT
- force = 8 //looks heavier than a pistol
+ damage_force = 8 //looks heavier than a pistol
w_class = ITEMSIZE_LARGE //Looks bigger than a pistol, too.
heavy = TRUE
fire_delay = 6 //This one's not a handgun, it should have the same fire delay as everything else
@@ -83,8 +83,8 @@
one_handed_penalty = 30 // It's rather bulky at the fore, so holding it in one hand is harder than with two.
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, modifystate="nucgunstun", charge_cost = 240),
- list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="nucgunkill", charge_cost = 480),
+ list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, modifystate="nucgunstun", charge_cost = 240),
+ list(mode_name="lethal", projectile_type=/obj/projectile/beam, modifystate="nucgunkill", charge_cost = 480),
)
/obj/item/gun/energy/gun/multiphase
@@ -96,19 +96,19 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/inhands/guns_right.dmi',
)
icon_state = "multiphasedis100"
- projectile_type = /obj/item/projectile/beam/stun/disabler
+ projectile_type = /obj/projectile/beam/stun/disabler
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_POWER = 3)
slot_flags = SLOT_BELT|SLOT_HOLSTER
- force = 10 //for the HOS to lay down a good beating in desperate situations. Holdover from TG.
+ damage_force = 10 //for the HOS to lay down a good beating in desperate situations. Holdover from TG.
w_class = ITEMSIZE_NORMAL
fire_delay = 6 //standard rate
battery_lock = 0
modifystate = null
firemodes = list(
- list(mode_name="disable", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/stun/disabler, modifystate="multiphasedis", charge_cost = 100),
- list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/energy/electrode/goldenbolt, modifystate="multiphasestun", charge_cost = 480),
- list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam, modifystate="multiphasekill", charge_cost = 240),
+ list(mode_name="disable", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/projectile/beam/stun/disabler, modifystate="multiphasedis", charge_cost = 100),
+ list(mode_name="stun", burst=1, projectile_type=/obj/projectile/energy/electrode/goldenbolt, modifystate="multiphasestun", charge_cost = 480),
+ list(mode_name="lethal", burst=1, projectile_type=/obj/projectile/beam, modifystate="multiphasekill", charge_cost = 240),
)
//NT SpecOps Laser Pistol
@@ -122,6 +122,6 @@
modifystate = "clpistolstun"
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="clpistolstun", charge_cost = 200),
- list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="clpistolkill", charge_cost = 400),
+ list(mode_name="stun", projectile_type=/obj/projectile/beam/stun/med, modifystate="clpistolstun", charge_cost = 200),
+ list(mode_name="lethal", projectile_type=/obj/projectile/beam, modifystate="clpistolkill", charge_cost = 400),
)
diff --git a/code/modules/projectiles/guns/energy/particle.dm b/code/modules/projectiles/guns/energy/particle.dm
index d1dd151327d..8735ef20261 100644
--- a/code/modules/projectiles/guns/energy/particle.dm
+++ b/code/modules/projectiles/guns/energy/particle.dm
@@ -16,7 +16,7 @@
fire_sound = 'sound/weapons/blaster.ogg'
slot_flags = SLOT_BELT
w_class = ITEMSIZE_NORMAL
- projectile_type = /obj/item/projectile/bullet/particle
+ projectile_type = /obj/projectile/bullet/particle
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2, TECH_MATERIAL = 2)
fire_delay = 10
charge_cost = 200 //slightly more shots than lasers
@@ -30,7 +30,7 @@
item_state = "particle_item"
desc = "A Kawashima Material Technology Model E-8 anti-particle projector. A down-scale of the same technology behind the Model 9 anti-particle cannon, fitted with an enhanced power-generation unit for theoretically infinite recharges."
slot_flags = SLOT_BELT
- force = 8 //looks heavier than a pistol
+ damage_force = 8 //looks heavier than a pistol
w_class = ITEMSIZE_LARGE //bigger than a pistol, too.
heavy = TRUE
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 5, TECH_POWER = 3, TECH_MAGNET = 3)
@@ -50,11 +50,11 @@
fire_sound = 'sound/weapons/lasercannonfire.ogg'
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_POWER = 4, TECH_MAGNET = 4)
- projectile_type = /obj/item/projectile/bullet/particle/heavy
+ projectile_type = /obj/projectile/bullet/particle/heavy
battery_lock = 1
fire_delay = 15 // fires faster than a laser cannon. c'mon, it's an awesome-but-impractical endgame gun.
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
- force = 10
+ damage_force = 10
one_handed_penalty = 60 // The thing's heavy and huge.
accuracy = 70
charge_cost = 400 // 6 shots
@@ -169,16 +169,16 @@
// projectiles below
-/obj/item/projectile/bullet/particle
+/obj/projectile/bullet/particle
name = "antimatter pellet"
icon = 'icons/obj/projectiles_vr.dmi'
icon_state = "particle"
damage = 40
damage_type = BURN
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
embed_chance = 0
-/obj/item/projectile/bullet/particle/heavy
+/obj/projectile/bullet/particle/heavy
name = "antimatter slug"
icon_state = "particle-heavy"
damage = 80 // same as a laser cannon
@@ -187,8 +187,8 @@
light_power = 1
light_color = "#CCFFFF"
-/turf/simulated/mineral/bullet_act(var/obj/item/projectile/Proj)
- if(istype(Proj, /obj/item/projectile/bullet/particle))
+/turf/simulated/mineral/bullet_act(var/obj/projectile/Proj)
+ if(istype(Proj, /obj/projectile/bullet/particle))
if(prob(Proj.damage))
GetDrilled()
..()
diff --git a/code/modules/projectiles/guns/energy/phase.dm b/code/modules/projectiles/guns/energy/phase.dm
index c86e6f19735..ccc597173a5 100644
--- a/code/modules/projectiles/guns/energy/phase.dm
+++ b/code/modules/projectiles/guns/energy/phase.dm
@@ -8,7 +8,7 @@
wielded_item_state = "phasecarbine-wielded"
slot_flags = SLOT_BACK|SLOT_BELT
charge_cost = 240
- projectile_type = /obj/item/projectile/energy/phase
+ projectile_type = /obj/projectile/energy/phase
one_handed_penalty = 15
no_pin_required = 1
@@ -20,7 +20,7 @@
w_class = ITEMSIZE_NORMAL
slot_flags = SLOT_BELT|SLOT_HOLSTER
charge_cost = 300
- projectile_type = /obj/item/projectile/energy/phase/light
+ projectile_type = /obj/projectile/energy/phase/light
one_handed_penalty = 0
/obj/item/gun/energy/phasegun/pistol/mounted
@@ -41,7 +41,7 @@
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BACK
charge_cost = 150
- projectile_type = /obj/item/projectile/energy/phase/heavy
+ projectile_type = /obj/projectile/energy/phase/heavy
one_handed_penalty = 30
/obj/item/gun/energy/phasegun/cannon
@@ -54,6 +54,6 @@
slot_flags = SLOT_BACK
heavy = TRUE
charge_cost = 100
- projectile_type = /obj/item/projectile/energy/phase/heavy/cannon
+ projectile_type = /obj/projectile/energy/phase/heavy/cannon
accuracy = 70
one_handed_penalty = 65
diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm
index 3b28e5332f6..0d7949cb48b 100644
--- a/code/modules/projectiles/guns/energy/pulse.dm
+++ b/code/modules/projectiles/guns/energy/pulse.dm
@@ -5,8 +5,8 @@
icon_state = "pulse"
item_state = null //so the human update icon uses the icon_state instead.
slot_flags = SLOT_BELT|SLOT_BACK
- force = 10
- projectile_type = /obj/item/projectile/beam
+ damage_force = 10
+ projectile_type = /obj/projectile/beam
charge_cost = 120
sel_mode = 2
accuracy = 90
@@ -14,9 +14,9 @@
heavy = TRUE
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_delay=null, charge_cost = 120),
- list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_delay=null, charge_cost = 120),
- list(mode_name="DESTROY", projectile_type=/obj/item/projectile/beam/pulse, fire_delay=null, charge_cost = 240),
+ list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, fire_delay=null, charge_cost = 120),
+ list(mode_name="lethal", projectile_type=/obj/projectile/beam, fire_delay=null, charge_cost = 120),
+ list(mode_name="DESTROY", projectile_type=/obj/projectile/beam/pulse, fire_delay=null, charge_cost = 240),
)
/obj/item/gun/energy/pulse_rifle/mounted
@@ -26,7 +26,7 @@
/obj/item/gun/energy/pulse_rifle/destroyer
name = "\improper NT-PD-1 pulse destroyer"
desc = "A heavy-duty, pulse-based energy weapon. Because of its complexity and cost, it is rarely seen in use except by specialists."
- projectile_type=/obj/item/projectile/beam/pulse
+ projectile_type=/obj/projectile/beam/pulse
charge_cost = 120
/obj/item/gun/energy/pulse_rifle/destroyer/attack_self(mob/user)
@@ -41,17 +41,17 @@
icon_state = "pulse_pistol"
item_state = null
slot_flags = SLOT_BELT|SLOT_HOLSTER
- force = 10
- projectile_type = /obj/item/projectile/beam
+ damage_force = 10
+ projectile_type = /obj/projectile/beam
charge_cost = 240
sel_mode = 2
accuracy = 90
one_handed_penalty = 10
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_delay=null, charge_cost = 240),
- list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_delay=null, charge_cost = 240),
- list(mode_name="DESTROY", projectile_type=/obj/item/projectile/beam/pulse, fire_delay=null, charge_cost = 480),
+ list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, fire_delay=null, charge_cost = 240),
+ list(mode_name="lethal", projectile_type=/obj/projectile/beam, fire_delay=null, charge_cost = 240),
+ list(mode_name="DESTROY", projectile_type=/obj/projectile/beam/pulse, fire_delay=null, charge_cost = 480),
)
//I've always liked the M1911, but it's kinda silly, the more I think about it. So I'm just gonna comment it out and put in the Pulse Pistol to replace it.
@@ -66,8 +66,8 @@
one_handed_penalty = 0
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_delay=null, charge_cost = 240),
- list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_delay=null, charge_cost = 240),
- list(mode_name="DESTROY", projectile_type=/obj/item/projectile/beam/pulse, fire_delay=null, charge_cost = 480),
+ list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, fire_delay=null, charge_cost = 240),
+ list(mode_name="lethal", projectile_type=/obj/projectile/beam, fire_delay=null, charge_cost = 240),
+ list(mode_name="DESTROY", projectile_type=/obj/projectile/beam/pulse, fire_delay=null, charge_cost = 480),
)
*/
diff --git a/code/modules/projectiles/guns/energy/sizegun_vr.dm b/code/modules/projectiles/guns/energy/sizegun_vr.dm
index 704327132c5..10990d321ec 100644
--- a/code/modules/projectiles/guns/energy/sizegun_vr.dm
+++ b/code/modules/projectiles/guns/energy/sizegun_vr.dm
@@ -10,7 +10,7 @@
item_state = null //so the human update icon uses the icon_state instead
fire_sound = 'sound/weapons/wave.ogg'
charge_cost = 240
- projectile_type = /obj/item/projectile/beam/sizelaser
+ projectile_type = /obj/projectile/beam/sizelaser
origin_tech = list(TECH_BLUESPACE = 4)
modifystate = "sizegun-shrink"
no_pin_required = 1
@@ -18,7 +18,7 @@
var/size_set_to = 1
firemodes = list(
list(mode_name = "select size",
- projectile_type = /obj/item/projectile/beam/sizelaser,
+ projectile_type = /obj/projectile/beam/sizelaser,
modifystate = "sizegun-grow",
fire_sound = 'sound/weapons/pulse3.ogg'
))
@@ -36,7 +36,7 @@
/obj/item/gun/energy/sizegun/consume_next_projectile()
. = ..()
- var/obj/item/projectile/beam/sizelaser/G = .
+ var/obj/projectile/beam/sizelaser/G = .
if(istype(G))
G.set_size = size_set_to
@@ -61,19 +61,19 @@
// Beams for size gun
//
-/obj/item/projectile/beam/sizelaser
+/obj/projectile/beam/sizelaser
name = "size beam"
icon_state = "xray"
nodamage = 1
damage = 0
- check_armour = "laser"
+ damage_flag = ARMOR_LASER
var/set_size = 1 //Let's default to 100%
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
-/obj/item/projectile/beam/sizelaser/on_hit(var/atom/target)
+/obj/projectile/beam/sizelaser/on_hit(var/atom/target)
var/mob/living/M = target
if(!M.permit_sizegun)
M.visible_message("[src] has no effect on [M].")
@@ -91,11 +91,11 @@
return 1
-/obj/item/projectile/beam/sizelaser/shrink
+/obj/projectile/beam/sizelaser/shrink
set_size = 0.5 //50% of current size
-/obj/item/projectile/beam/sizelaser/grow
+/obj/projectile/beam/sizelaser/grow
set_size = 2.0 //200% of current size
@@ -107,7 +107,7 @@
item_state = null //so the human update icon uses the icon_state instead
fire_sound = 'sound/weapons/wave.ogg'
charge_cost = 240
- projectile_type = /obj/item/projectile/bullet/stripper
+ projectile_type = /obj/projectile/bullet/stripper
origin_tech = list(TECH_BLUESPACE = 4)
modifystate = "sizegun-shrink"
no_pin_required = 1
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index fe787bbb4af..0b58f58ddbd 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -6,10 +6,10 @@
wielded_item_state = "ionrifle-wielded"
origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 4)
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
slot_flags = SLOT_BACK
heavy = TRUE
- projectile_type = /obj/item/projectile/ion
+ projectile_type = /obj/projectile/ion
one_handed_penalty = 15
/obj/item/gun/energy/ionrifle/emp_act(severity)
@@ -21,11 +21,11 @@
icon_state = "ionpistol"
item_state = null
w_class = ITEMSIZE_NORMAL
- force = 5
+ damage_force = 5
slot_flags = SLOT_BELT|SLOT_HOLSTER
heavy = FALSE
charge_cost = 480
- projectile_type = /obj/item/projectile/ion/pistol
+ projectile_type = /obj/projectile/ion/pistol
/obj/item/gun/energy/decloner
name = "biological demolecularisor"
@@ -33,14 +33,14 @@
icon_state = "decloner"
item_state = "decloner"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4, TECH_POWER = 3)
- projectile_type = /obj/item/projectile/energy/declone
+ projectile_type = /obj/projectile/energy/declone
/obj/item/gun/energy/floragun
name = "floral somatoray"
desc = "A tool that discharges controlled radiation which induces mutation in plant cells."
icon_state = "floramut100"
item_state = "floramut"
- projectile_type = /obj/item/projectile/energy/floramut
+ projectile_type = /obj/projectile/energy/floramut
origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3)
modifystate = "floramut"
cell_type = /obj/item/cell/device/weapon/recharge
@@ -49,9 +49,9 @@
var/singleton/plantgene/gene = null
firemodes = list(
- list(mode_name="induce mutations", projectile_type=/obj/item/projectile/energy/floramut, modifystate="floramut"),
- list(mode_name="increase yield", projectile_type=/obj/item/projectile/energy/florayield, modifystate="florayield"),
- list(mode_name="induce specific mutations", projectile_type=/obj/item/projectile/energy/floramut/gene, modifystate="floramut"),
+ list(mode_name="induce mutations", projectile_type=/obj/projectile/energy/floramut, modifystate="floramut"),
+ list(mode_name="increase yield", projectile_type=/obj/projectile/energy/florayield, modifystate="florayield"),
+ list(mode_name="induce specific mutations", projectile_type=/obj/projectile/energy/floramut/gene, modifystate="floramut"),
)
/obj/item/gun/energy/floragun/afterattack(obj/target, mob/user, adjacent_flag)
@@ -80,7 +80,7 @@
/obj/item/gun/energy/floragun/consume_next_projectile()
. = ..()
- var/obj/item/projectile/energy/floramut/gene/G = .
+ var/obj/projectile/energy/floramut/gene/G = .
if(istype(G))
G.gene = gene
@@ -92,7 +92,7 @@
slot_flags = SLOT_BELT|SLOT_BACK
w_class = ITEMSIZE_LARGE
heavy = TRUE
- projectile_type = /obj/item/projectile/meteor
+ projectile_type = /obj/projectile/meteor
cell_type = /obj/item/cell/potato
charge_cost = 100
self_recharge = 1
@@ -116,7 +116,7 @@
name = "mind flayer"
desc = "A custom-built weapon of some kind."
icon_state = "xray"
- projectile_type = /obj/item/projectile/beam/mindflayer
+ projectile_type = /obj/projectile/beam/mindflayer
one_handed_penalty = 15
/obj/item/gun/energy/toxgun
@@ -125,7 +125,7 @@
icon_state = "toxgun"
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_COMBAT = 5, TECH_PHORON = 4)
- projectile_type = /obj/item/projectile/energy/phoron
+ projectile_type = /obj/projectile/energy/phoron
/* Staves */
@@ -138,7 +138,7 @@
slot_flags = SLOT_BACK
w_class = ITEMSIZE_LARGE
charge_cost = 480
- projectile_type = /obj/item/projectile/change
+ projectile_type = /obj/projectile/change
origin_tech = null
cell_type = /obj/item/cell/device/weapon/recharge
battery_lock = 1
@@ -161,7 +161,7 @@
/obj/item/gun/energy/staff/animate
name = "staff of animation"
desc = "An artifact that spits bolts of life force, which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines."
- projectile_type = /obj/item/projectile/animate
+ projectile_type = /obj/projectile/animate
charge_cost = 240
*/
/obj/item/gun/energy/staff/focus
@@ -170,17 +170,17 @@
icon = 'icons/obj/wizard.dmi'
icon_state = "focus"
slot_flags = SLOT_BACK
- projectile_type = /obj/item/projectile/forcebolt
+ projectile_type = /obj/projectile/forcebolt
/*
attack_self(mob/living/user as mob)
- if(projectile_type == "/obj/item/projectile/forcebolt")
+ if(projectile_type == "/obj/projectile/forcebolt")
charge_cost = 400
to_chat(user, "The [src.name] will now strike a small area.")
- projectile_type = "/obj/item/projectile/forcebolt/strong"
+ projectile_type = "/obj/projectile/forcebolt/strong"
else
charge_cost = 200
to_chat(user, "The [src.name] will now strike only a single person.")
- projectile_type = "/obj/item/projectile/forcebolt"
+ projectile_type = "/obj/projectile/forcebolt"
*/
/obj/item/gun/energy/dakkalaser
@@ -192,7 +192,7 @@
w_class = ITEMSIZE_HUGE
heavy = TRUE
charge_cost = 24 // 100 shots, it's a spray and pray (to RNGesus) weapon.
- projectile_type = /obj/item/projectile/energy/blue_pellet
+ projectile_type = /obj/projectile/energy/blue_pellet
cell_type = /obj/item/cell/device/weapon/recharge
battery_lock = 1
accuracy = 75 // Suppressive weapons don't work too well if there's no risk of being hit.
@@ -218,7 +218,7 @@
heavy = TRUE
charge_cost = 10000 // Uses large cells, can at max have 3 shots.
- projectile_type = /obj/item/projectile/beam/tungsten
+ projectile_type = /obj/projectile/beam/tungsten
cell_type = /obj/item/cell/high
accept_cell_type = /obj/item/cell
@@ -300,12 +300,12 @@
//_vr Items:
/obj/item/gun/energy/ionrifle/weak
- projectile_type = /obj/item/projectile/ion/small
+ projectile_type = /obj/projectile/ion/small
/obj/item/gun/energy/medigun //Adminspawn/ERT etc
name = "directed restoration system"
desc = "The BL-3 'Phoenix' is an adaptation on the ML-3 'Medbeam' design that channels the power of the beam into a single healing laser. It is highly energy-inefficient, but its medical power cannot be denied."
- force = 5
+ damage_force = 5
icon_state = "medbeam"
item_state = "medbeam"
icon = 'icons/obj/gun/energy.dmi'
@@ -314,7 +314,7 @@
fire_delay = 12
fire_sound = 'sound/weapons/eluger.ogg'
- projectile_type = /obj/item/projectile/beam/medigun
+ projectile_type = /obj/projectile/beam/medigun
accept_cell_type = /obj/item/cell
cell_type = /obj/item/cell/high
@@ -325,10 +325,10 @@
icon_state = "service_grip"
item_state = "service_grip"
desc = "An anomalous weapon, long kept secure. It has recently been acquired by NanoTrasen's Paracausal Monitoring Division. How did it get here?"
- force = 5
+ damage_force = 5
slot_flags = SLOT_BELT
w_class = ITEMSIZE_NORMAL
- projectile_type = /obj/item/projectile/bullet/pistol/medium/silver
+ projectile_type = /obj/projectile/bullet/pistol/medium/silver
origin_tech = null
fire_delay = 10 //Old pistol
charge_cost = 480 //to compensate a bit for self-recharging
@@ -381,28 +381,28 @@
/obj/item/gun/energy/service/shatter
name = "service weapon (shatter)"
icon_state = "service_shatter"
- projectile_type = /obj/item/projectile/bullet/pellet/shotgun/silver
+ projectile_type = /obj/projectile/bullet/pellet/shotgun/silver
fire_delay = 15 //Increased by 50% for strength.
charge_cost = 600 //Charge increased due to shotgun round.
/obj/item/gun/energy/service/spin
name = "service weapon (spin)"
icon_state = "service_spin"
- projectile_type = /obj/item/projectile/bullet/pistol/spin
+ projectile_type = /obj/projectile/bullet/pistol/spin
fire_delay = 0 //High fire rate.
charge_cost = 80 //Lower cost per shot to encourage rapid fire.
/obj/item/gun/energy/service/pierce
name = "service weapon (pierce)"
icon_state = "service_pierce"
- projectile_type = /obj/item/projectile/bullet/rifle/a762/ap/silver
+ projectile_type = /obj/projectile/bullet/rifle/a762/ap/silver
fire_delay = 15 //Increased by 50% for strength.
charge_cost = 600 //Charge increased due to sniper round.
/obj/item/gun/energy/service/charge
name = "service weapon (charge)"
icon_state = "service_charge"
- projectile_type = /obj/item/projectile/bullet/burstbullet/service //Formerly: obj/item/projectile/bullet/gyro. A little too robust.
+ projectile_type = /obj/projectile/bullet/burstbullet/service //Formerly: obj/projectile/bullet/gyro. A little too robust.
fire_delay = 20
charge_cost = 800 //Three shots.
@@ -413,9 +413,9 @@
icon = 'icons/obj/gun/magic.dmi'
icon_state = "staffofchaos"
item_state = "staffofchaos"
- force = 5
+ damage_force = 5
charge_meter = 0
- projectile_type = /obj/item/projectile/beam/emitter
+ projectile_type = /obj/projectile/beam/emitter
fire_delay = 10
charge_cost = 800
cell_type = /obj/item/cell/device/weapon/recharge/captain
@@ -427,14 +427,14 @@
desc = "A industrial energy projector turned into a crude, portable weapon. The Tyrmalin answer to armored hardsuits used by pirates, what it lacks in precision, it makes up for in firepower."
icon_state = "ermitter_gun"
item_state = "pulse"
- projectile_type = /obj/item/projectile/beam/emitter
+ projectile_type = /obj/projectile/beam/emitter
fire_delay = 10
charge_cost = 900
cell_type = /obj/item/cell
slot_flags = SLOT_BELT|SLOT_BACK
w_class = ITEMSIZE_LARGE
heavy = TRUE
- force = 10
+ damage_force = 10
origin_tech = list(TECH_COMBAT = 3, TECH_ENGINEERING = 3, TECH_MAGNET = 2)
matter = list(MAT_STEEL = 2000, MAT_GLASS = 1000)
one_handed_penalty = 50
@@ -444,14 +444,14 @@
desc = "These jury-rigged pistols are sometimes fielded by Tyrmalin facing sythetic pirates or faulty machinery. Capable of discharging a single ionized bolt before needing to recharge, they're often treated as holdout or ambush weapons."
icon_state = "botbuster"
charge_cost = 1300
- projectile_type = /obj/item/projectile/ion/pistol
+ projectile_type = /obj/projectile/ion/pistol
/obj/item/gun/energy/jezzail
name = "Microfission Jezzail"
desc = "Deceptively primitive in appearance, this finely tuned rifle uses an onboard reactor to stimulate the growth of an anomalous crystal. Fragments of this crystal are utilized as ammunition by the weapon."
icon_state = "warplockgun"
item_state = "huntrifle"
- projectile_type = /obj/item/projectile/bullet/cyanideround/jezzail
+ projectile_type = /obj/projectile/bullet/cyanideround/jezzail
fire_delay = 20
charge_cost = 600
cell_type = /obj/item/cell/device/weapon
@@ -459,5 +459,5 @@
slot_flags = SLOT_BACK
w_class = ITEMSIZE_LARGE
heavy = TRUE
- force = 10
+ damage_force = 10
one_handed_penalty = 60
diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm
index 39307b70bfa..6e1fa88fe69 100644
--- a/code/modules/projectiles/guns/energy/stun.dm
+++ b/code/modules/projectiles/guns/energy/stun.dm
@@ -6,12 +6,12 @@
fire_delay = 4
- projectile_type = /obj/item/projectile/energy/electrode
+ projectile_type = /obj/projectile/energy/electrode
modifystate = "taser"
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/energy/electrode, modifystate="taser", charge_cost = 240),
- list(mode_name="disable", projectile_type=/obj/item/projectile/beam/disabler/weak, modifystate="taserblue", charge_cost = 160),
+ list(mode_name="stun", projectile_type=/obj/projectile/energy/electrode, modifystate="taser", charge_cost = 240),
+ list(mode_name="disable", projectile_type=/obj/projectile/beam/disabler/weak, modifystate="taserblue", charge_cost = 160),
)
/obj/item/gun/energy/taser/mounted
@@ -32,7 +32,7 @@
/obj/item/gun/energy/taser/mounted/cyborg/swarm
name = "disabler"
desc = "An archaic device which attacks the target's nervous-system or control circuits."
- projectile_type = /obj/item/projectile/beam/stun/disabler
+ projectile_type = /obj/projectile/beam/stun/disabler
charge_cost = 200
recharge_time = 0.5 SECONDS
@@ -42,7 +42,7 @@
icon_state = "stunrevolver"
item_state = "stunrevolver"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
- projectile_type = /obj/item/projectile/energy/electrode/strong
+ projectile_type = /obj/projectile/energy/electrode/strong
charge_cost = 400
/obj/item/gun/energy/crossbow
@@ -55,7 +55,7 @@
matter = list(MAT_STEEL = 2000)
slot_flags = SLOT_BELT | SLOT_HOLSTER
silenced = 1
- projectile_type = /obj/item/projectile/energy/bolt
+ projectile_type = /obj/projectile/energy/bolt
charge_cost = 480
cell_type = /obj/item/cell/device/weapon/recharge
battery_lock = 1
@@ -63,16 +63,16 @@
/obj/item/gun/energy/crossbow/ninja
name = "energy dart thrower"
- projectile_type = /obj/item/projectile/energy/dart
+ projectile_type = /obj/projectile/energy/dart
/obj/item/gun/energy/crossbow/largecrossbow
name = "energy crossbow"
desc = "A weapon favored by mercenary infiltration teams."
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
matter = list(MAT_STEEL = 200000)
slot_flags = SLOT_BELT
- projectile_type = /obj/item/projectile/energy/bolt/large
+ projectile_type = /obj/projectile/energy/bolt/large
/obj/item/gun/energy/plasmastun
name = "plasma pulse projector"
@@ -82,7 +82,7 @@
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_POWER = 3)
fire_delay = 20
charge_cost = 600
- projectile_type = /obj/item/projectile/energy/plasmastun
+ projectile_type = /obj/projectile/energy/plasmastun
one_handed_penalty = 5
/obj/item/gun/energy/civtas
@@ -91,7 +91,7 @@
icon_state = "civtas"
item_state = "concealed"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3, TECH_POWER = 3)
- projectile_type = /obj/item/projectile/energy/electrode/stunshot
+ projectile_type = /obj/projectile/energy/electrode/stunshot
fire_delay = 4
charge_cost = 1500
cell_type = /obj/item/cell/device/weapon
diff --git a/code/modules/projectiles/guns/energy/temperature.dm b/code/modules/projectiles/guns/energy/temperature.dm
index f8aa6e7ac5a..b8cbc8249e6 100644
--- a/code/modules/projectiles/guns/energy/temperature.dm
+++ b/code/modules/projectiles/guns/energy/temperature.dm
@@ -6,10 +6,10 @@
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_POWER = 3, TECH_MAGNET = 2)
slot_flags = SLOT_BELT|SLOT_BACK
no_pin_required = 1
- projectile_type = /obj/item/projectile/temp
+ projectile_type = /obj/projectile/temp
one_handed_penalty = 15
firemodes = list(
- list(mode_name="endothermic beam", projectile_type = /obj/item/projectile/temp, charge_cost = 240),
- list(mode_name="exothermic beam", projectile_type = /obj/item/projectile/temp/hot, charge_cost = 240),
+ list(mode_name="endothermic beam", projectile_type = /obj/projectile/temp, charge_cost = 240),
+ list(mode_name="exothermic beam", projectile_type = /obj/projectile/temp/hot, charge_cost = 240),
)
diff --git a/code/modules/projectiles/guns/launcher.dm b/code/modules/projectiles/guns/launcher.dm
index bdda062a6b5..6faff70391a 100644
--- a/code/modules/projectiles/guns/launcher.dm
+++ b/code/modules/projectiles/guns/launcher.dm
@@ -19,10 +19,10 @@
to_chat(user, "Shooting yourself with \a [src] is pretty tricky. You can't seem to manage it.")
return
-/obj/item/gun/launcher/proc/update_release_force(obj/item/projectile)
+/obj/item/gun/launcher/proc/update_release_force(obj/projectile)
return 0
-/obj/item/gun/launcher/process_projectile(obj/item/projectile, mob/user, atom/target, var/target_zone, var/params=null, var/pointblank=0, var/reflex=0)
+/obj/item/gun/launcher/process_projectile(obj/projectile, mob/user, atom/target, var/target_zone, var/params=null, var/pointblank=0, var/reflex=0)
update_release_force(projectile)
projectile.forceMove(get_turf(user))
projectile.throw_at_old(target, throw_distance, release_force, user)
diff --git a/code/modules/projectiles/guns/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/launcher/grenade_launcher.dm
index 66f82e2c71d..ec01c8a9a38 100644
--- a/code/modules/projectiles/guns/launcher/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/launcher/grenade_launcher.dm
@@ -5,7 +5,7 @@
item_state = "riotgun"
w_class = ITEMSIZE_LARGE
heavy = TRUE
- force = 10
+ damage_force = 10
one_handed_penalty = 5
fire_sound = 'sound/weapons/grenade_launcher.ogg'
@@ -101,7 +101,7 @@
name = "underslung grenade launcher"
desc = "Not much more than a tube and a firing mechanism, this grenade launcher is designed to be fitted to a rifle."
w_class = ITEMSIZE_NORMAL
- force = 5
+ damage_force = 5
max_grenades = 0
/obj/item/gun/launcher/grenade/underslung/attack_self(mob/user)
diff --git a/code/modules/projectiles/guns/launcher/pneumatic.dm b/code/modules/projectiles/guns/launcher/pneumatic.dm
index 1d9519f7d14..524b7382823 100644
--- a/code/modules/projectiles/guns/launcher/pneumatic.dm
+++ b/code/modules/projectiles/guns/launcher/pneumatic.dm
@@ -112,7 +112,7 @@
else
. += "Nothing is attached to the tank valve!"
-/obj/item/gun/launcher/pneumatic/update_release_force(obj/item/projectile)
+/obj/item/gun/launcher/pneumatic/update_release_force(obj/projectile)
if(tank)
release_force = ((fire_pressure*tank.volume)/projectile.w_class)/force_divisor //projectile speed.
if(release_force > 80) release_force = 80 //damage cap.
diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm
index 1ab43a9d9aa..4c30191b72d 100644
--- a/code/modules/projectiles/guns/launcher/syringe_gun.dm
+++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm
@@ -7,7 +7,7 @@
matter = list(MAT_STEEL = 125, MAT_GLASS = 375)
slot_flags = SLOT_BELT | SLOT_EARS
throw_force = 3
- force = 3
+ damage_force = 3
w_class = ITEMSIZE_TINY
var/obj/item/reagent_containers/syringe/syringe
@@ -70,7 +70,7 @@
icon_state = "syringegun"
item_state = "syringegun"
w_class = ITEMSIZE_NORMAL
- force = 7
+ damage_force = 7
matter = list(MAT_STEEL = 2000)
slot_flags = SLOT_BELT
diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm
index 0135300a4aa..abfc1da0d40 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -12,7 +12,7 @@
var/recharge_rate = 4
var/charge_tick = 0
var/can_charge = 1
- var/ammo_type = /obj/item/projectile/magic
+ var/ammo_type = /obj/projectile/magic
var/no_den_usage
pin = /obj/item/firing_pin/magic
diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm
index 965eb8e6ca1..bb47095bd21 100644
--- a/code/modules/projectiles/guns/magic/staff.dm
+++ b/code/modules/projectiles/guns/magic/staff.dm
@@ -41,9 +41,9 @@
max_charges = 10
recharge_rate = 2
no_den_usage = 1
- var/allowed_projectile_types = list(/obj/item/projectile/magic/resurrection, /obj/item/projectile/magic/death, /obj/item/projectile/magic/teleport,
- /obj/item/projectile/magic/door, /obj/item/projectile/magic/aoe/fireball, /obj/item/projectile/magic/spellblade, /obj/item/projectile/magic/arcane_barrage,
- /obj/item/projectile/magic/locker) //These two are commented out until they work in RP code: /obj/item/projectile/magic/change, /obj/item/projectile/magic/animate,
+ var/allowed_projectile_types = list(/obj/projectile/magic/resurrection, /obj/projectile/magic/death, /obj/projectile/magic/teleport,
+ /obj/projectile/magic/door, /obj/projectile/magic/aoe/fireball, /obj/projectile/magic/spellblade, /obj/projectile/magic/arcane_barrage,
+ /obj/projectile/magic/locker) //These two are commented out until they work in RP code: /obj/projectile/magic/change, /obj/projectile/magic/animate,
/obj/item/gun/magic/staff/chaos/proc/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0, stam_cost = 0)
projectile_type = pick(allowed_projectile_types)
@@ -81,7 +81,7 @@
icon_state = "spellblade"
item_state = "spellblade"
hitsound = 'sound/weapons/rapierhit.ogg'
- force = 20
+ damage_force = 20
armour_penetration = 75
block_chance = 50
sharpness = SHARP_EDGED
diff --git a/code/modules/projectiles/guns/magnetic/bore.dm b/code/modules/projectiles/guns/magnetic/bore.dm
index 9c240dad1a6..11e1fa17f80 100644
--- a/code/modules/projectiles/guns/magnetic/bore.dm
+++ b/code/modules/projectiles/guns/magnetic/bore.dm
@@ -14,7 +14,7 @@
wielded_item_state = "bore-wielded"
one_handed_penalty = 5
- projectile_type = /obj/item/projectile/bullet/magnetic/bore
+ projectile_type = /obj/projectile/bullet/magnetic/bore
gun_unreliable = 0
@@ -168,7 +168,7 @@
description_fluff = "A revision of an aging Grayson design, the NanoTrasen Man-Portable Phorogenic Tunneler, or NT-MPPT is capable of drilling through longer swathes of rock, at the cost of slightly worse power efficiency than the Grayson design."
description_antag = "This device is exceptional at breaking down walls, though it is incredibly loud when doing so."
description_info = "The projectile of this tool will travel twelve tiles before dissipating, excavating mineral walls as it does so. It can be reloaded with phoron sheets, and can hold a maximum of ten sheets."
- projectile_type = /obj/item/projectile/bullet/magnetic/bore/powerful
+ projectile_type = /obj/projectile/bullet/magnetic/bore/powerful
power_cost = 1000
max_mat_storage = 20000
manipulator = null
diff --git a/code/modules/projectiles/guns/magnetic/magnetic.dm b/code/modules/projectiles/guns/magnetic/magnetic.dm
index e44daf69b92..ab2e8dcea4b 100644
--- a/code/modules/projectiles/guns/magnetic/magnetic.dm
+++ b/code/modules/projectiles/guns/magnetic/magnetic.dm
@@ -16,7 +16,7 @@
var/obj/item/loaded // Currently loaded object, for retrieval/unloading.
var/load_type = /obj/item/stack/rods // Type of stack to load with.
- projectile_type = /obj/item/projectile/bullet/magnetic // Actual fire type, since this isn't throw_at_old rod launcher.
+ projectile_type = /obj/projectile/bullet/magnetic // Actual fire type, since this isn't throw_at_old rod launcher.
var/power_cost = 950 // Cost per fire, should consume almost an entire basic cell.
var/power_per_tick // Capacitor charge per process(). Updated based on capacitor rating.
@@ -208,7 +208,7 @@
gun_unreliable = 0
load_type = /obj/item/fuel_assembly
- projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod
+ projectile_type = /obj/projectile/bullet/magnetic/fuelrod
power_cost = 500
@@ -220,13 +220,13 @@
if(istype(loaded, /obj/item/fuel_assembly))
var/obj/item/fuel_assembly/rod = loaded
if(rod.fuel_type == "composite" || rod.fuel_type == "deuterium") //Safety check for rods spawned in without a fueltype.
- projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod
+ projectile_type = /obj/projectile/bullet/magnetic/fuelrod
else if(rod.fuel_type == "tritium")
- projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/tritium
+ projectile_type = /obj/projectile/bullet/magnetic/fuelrod/tritium
else if(rod.fuel_type == "phoron")
- projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/phoron
+ projectile_type = /obj/projectile/bullet/magnetic/fuelrod/phoron
else if(rod.fuel_type == "supermatter")
- projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/supermatter
+ projectile_type = /obj/projectile/bullet/magnetic/fuelrod/supermatter
visible_message("The barrel of \the [src] glows a blinding white!")
spawn(5)
visible_message("\The [src] begins to rattle, its acceleration chamber collapsing in on itself!")
@@ -243,7 +243,7 @@
explosion(src.loc, -1, 1, 2, 3)
qdel(src)
else
- projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod
+ projectile_type = /obj/projectile/bullet/magnetic/fuelrod
use_ammo()
capacitor.use(power_cost)
diff --git a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm
index d0813dcd57f..a42dac66fe6 100644
--- a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm
+++ b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm
@@ -6,7 +6,7 @@
removable_components = FALSE
load_type = /obj/item/rcd_ammo
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4, TECH_MAGNET = 4)
- projectile_type = /obj/item/projectile/bullet/magnetic/slug
+ projectile_type = /obj/projectile/bullet/magnetic/slug
power_cost = 300
w_class = ITEMSIZE_HUGE
heavy = TRUE
@@ -101,7 +101,7 @@
power_cost = 100
load_type = /obj/item/magnetic_ammo
- projectile_type = /obj/item/projectile/bullet/magnetic/flechette
+ projectile_type = /obj/projectile/bullet/magnetic/flechette
loaded = /obj/item/magnetic_ammo
empty_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -132,13 +132,13 @@
slowdown_worn = 0
power_cost = 400
- projectile_type = /obj/item/projectile/bullet/magnetic/heated
+ projectile_type = /obj/projectile/bullet/magnetic/heated
loaded = null
empty_sound = 'sound/weapons/smg_empty_alarm.ogg'
firemodes = list(
- list(mode_name="high power", power_cost = 400, projectile_type = /obj/item/projectile/bullet/magnetic/heated, burst=1, fire_delay=8, move_delay=null, one_handed_penalty=15),
- list(mode_name="low power", power_cost = 150, projectile_type = /obj/item/projectile/bullet/magnetic/heated/weak, burst=1, fire_delay=5, move_delay=null, one_handed_penalty=15),
+ list(mode_name="high power", power_cost = 400, projectile_type = /obj/projectile/bullet/magnetic/heated, burst=1, fire_delay=8, move_delay=null, one_handed_penalty=15),
+ list(mode_name="low power", power_cost = 150, projectile_type = /obj/projectile/bullet/magnetic/heated/weak, burst=1, fire_delay=5, move_delay=null, one_handed_penalty=15),
)
/obj/item/gun/magnetic/railgun/heater/pistol
@@ -157,8 +157,8 @@
slot_flags = SLOT_BELT|SLOT_HOLSTER
firemodes = list(
- list(mode_name="lethal", power_cost = 2000, projectile_type = /obj/item/projectile/bullet/magnetic/heated, burst=1, fire_delay=8, move_delay=null, one_handed_penalty=0),
- list(mode_name="stun", power_cost = 1500, projectile_type = /obj/item/projectile/energy/electrode/stunshot, burst=1, fire_delay=5, move_delay=null, one_handed_penalty=0),
+ list(mode_name="lethal", power_cost = 2000, projectile_type = /obj/projectile/bullet/magnetic/heated, burst=1, fire_delay=8, move_delay=null, one_handed_penalty=0),
+ list(mode_name="stun", power_cost = 1500, projectile_type = /obj/projectile/energy/electrode/stunshot, burst=1, fire_delay=5, move_delay=null, one_handed_penalty=0),
)
/obj/item/gun/magnetic/railgun/heater/pistol/hos
@@ -169,8 +169,8 @@
description_antag = "This weapon starts with a DNA locking chip attached. Using an EMAG on the weapon will disarm it, and allow you to use the chip as your own."
firemodes = list(
- list(mode_name="lethal", power_cost = 1500, projectile_type = /obj/item/projectile/bullet/magnetic/heated, burst=1, fire_delay=8, move_delay=null, one_handed_penalty=0),
- list(mode_name="stun", power_cost = 1200, projectile_type = /obj/item/projectile/energy/electrode/stunshot, burst=1, fire_delay=5, move_delay=null, one_handed_penalty=0),
+ list(mode_name="lethal", power_cost = 1500, projectile_type = /obj/projectile/bullet/magnetic/heated, burst=1, fire_delay=8, move_delay=null, one_handed_penalty=0),
+ list(mode_name="stun", power_cost = 1200, projectile_type = /obj/projectile/energy/electrode/stunshot, burst=1, fire_delay=5, move_delay=null, one_handed_penalty=0),
)
/obj/item/gun/magnetic/railgun/flechette/sif
@@ -188,7 +188,7 @@
slowdown = 0.3
power_cost = 200
- projectile_type = /obj/item/projectile/bullet/magnetic/flechette/hunting
+ projectile_type = /obj/projectile/bullet/magnetic/flechette/hunting
empty_sound = 'sound/weapons/smg_empty_alarm.ogg'
firemodes = list(
diff --git a/code/modules/projectiles/guns/modular_guns.dm b/code/modules/projectiles/guns/modular_guns.dm
index d63c648e5fd..7e226f09e81 100644
--- a/code/modules/projectiles/guns/modular_guns.dm
+++ b/code/modules/projectiles/guns/modular_guns.dm
@@ -95,28 +95,28 @@
var/chargecost_lethal
if(laser_rating >= 15)
- beammode_lethal = /obj/item/projectile/beam/sniper
- beammode = /obj/item/projectile/beam/stun
+ beammode_lethal = /obj/projectile/beam/sniper
+ beammode = /obj/projectile/beam/stun
chargecost = 300
chargecost_lethal = 600
else if(laser_rating >= 10)
- beammode_lethal = /obj/item/projectile/beam/xray
- beammode = /obj/item/projectile/beam/stun
+ beammode_lethal = /obj/projectile/beam/xray
+ beammode = /obj/projectile/beam/stun
chargecost = 300
chargecost_lethal = 200
else if(laser_rating == 8 && manipulator_rating == 5) //very specific set of combinations. No, you can't make a pulse rifle. Sorry research.
- beammode_lethal = /obj/item/projectile/beam/heavylaser
- beammode = /obj/item/projectile/beam/stun
+ beammode_lethal = /obj/projectile/beam/heavylaser
+ beammode = /obj/projectile/beam/stun
chargecost = 300
chargecost_lethal = 600
else if(laser_rating >= 5)
- beammode_lethal = /obj/item/projectile/beam/midlaser
- beammode = /obj/item/projectile/beam/stun/med
+ beammode_lethal = /obj/projectile/beam/midlaser
+ beammode = /obj/projectile/beam/stun/med
chargecost = 180
chargecost_lethal = 240
else if(laser_rating < 5)
- beammode_lethal = /obj/item/projectile/beam/weaklaser
- beammode = /obj/item/projectile/beam/stun/weak
+ beammode_lethal = /obj/projectile/beam/weaklaser
+ beammode = /obj/projectile/beam/stun/weak
chargecost = 100
chargecost_lethal = 200
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 4835154e105..68a305849fb 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -4,7 +4,7 @@
icon_state = "c05r" //Used because it's not used anywhere else
load_method = SPEEDLOADER
ammo_type = /obj/item/ammo_casing/a9mm
- projectile_type = /obj/item/projectile/bullet/pistol
+ projectile_type = /obj/projectile/bullet/pistol
mag_insert_sound = 'sound/weapons/guns/interaction/smg_magin.ogg'
mag_remove_sound = 'sound/weapons/guns/interaction/smg_magout.ogg'
//Burst is the number of bullets fired; Fire delay is the time you have to wait to shoot the gun again, Move delay is the same but for moving after shooting. .
@@ -44,14 +44,14 @@
icon_state = "c20r"
item_state = "c20r"
w_class = ITEMSIZE_NORMAL
- force = 10
+ damage_force = 10
caliber = "10mm"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
slot_flags = SLOT_BELT|SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m10mm
allowed_magazines = list(/obj/item/ammo_magazine/m10mm)
- projectile_type = /obj/item/projectile/bullet/pistol/medium
+ projectile_type = /obj/projectile/bullet/pistol/medium
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -72,14 +72,14 @@
wielded_item_state = "arifle-wielded"
item_state = null
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
caliber = "5.45mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m545
allowed_magazines = list(/obj/item/ammo_magazine/m545)
- projectile_type = /obj/item/projectile/bullet/rifle/a545
+ projectile_type = /obj/projectile/bullet/rifle/a545
mag_insert_sound = 'sound/weapons/guns/interaction/ltrifle_magin.ogg'
mag_remove_sound = 'sound/weapons/guns/interaction/ltrifle_magout.ogg'
heavy = TRUE
@@ -116,7 +116,7 @@
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m9mmt/rubber
allowed_magazines = list(/obj/item/ammo_magazine/m9mmt)
- projectile_type = /obj/item/projectile/bullet/pistol/medium
+ projectile_type = /obj/projectile/bullet/pistol/medium
/obj/item/gun/ballistic/automatic/wt550/update_icon_state()
. = ..()
@@ -135,14 +135,14 @@
item_state = "z8carbine"
wielded_item_state = "z8carbine-wielded"
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m762
allowed_magazines = list(/obj/item/ammo_magazine/m762)
- projectile_type = /obj/item/projectile/bullet/rifle/a762
+ projectile_type = /obj/projectile/bullet/rifle/a762
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
mag_insert_sound = 'sound/weapons/guns/interaction/batrifle_magin.ogg'
@@ -208,7 +208,7 @@
icon_state = "l6closed50"
item_state = "l6closed"
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
slot_flags = 0
max_shells = 50
caliber = "5.45mm"
@@ -217,7 +217,7 @@
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m545saw
allowed_magazines = list(/obj/item/ammo_magazine/m545saw, /obj/item/ammo_magazine/m545)
- projectile_type = /obj/item/projectile/bullet/rifle/a545
+ projectile_type = /obj/projectile/bullet/rifle/a545
mag_insert_sound = 'sound/weapons/guns/interaction/lmg_magin.ogg'
mag_remove_sound = 'sound/weapons/guns/interaction/lmg_magout.ogg'
can_special_reload = FALSE
@@ -314,7 +314,7 @@
caliber = "7.62mm"
magazine_type = /obj/item/ammo_magazine/m762_m60
allowed_magazines = list(/obj/item/ammo_magazine/m762_m60)
- projectile_type = /obj/item/projectile/bullet/rifle/a762
+ projectile_type = /obj/projectile/bullet/rifle/a762
one_handed_penalty = 100
firemodes = list(
@@ -334,14 +334,14 @@
icon_state = "ashot"
item_state = null
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
caliber = "12g"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m12gdrum
allowed_magazines = list(/obj/item/ammo_magazine/m12gdrum)
- projectile_type = /obj/item/projectile/bullet/shotgun
+ projectile_type = /obj/projectile/bullet/shotgun
heavy = TRUE
one_handed_penalty = 30 //The AA12 can be fired one-handed fairly easily.
mag_insert_sound = 'sound/weapons/guns/interaction/lmg_magin.ogg'
@@ -475,14 +475,14 @@
icon_state = "bullpup-small"
item_state = "bullpup"
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m762
allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m)
- projectile_type = /obj/item/projectile/bullet/rifle/a762
+ projectile_type = /obj/projectile/bullet/rifle/a762
heavy = TRUE
one_handed_penalty = 45
@@ -510,7 +510,7 @@
icon_state = "fal"
item_state = "fal"
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
@@ -518,7 +518,7 @@
magazine_type = /obj/item/ammo_magazine/m762m
allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m)
heavy = TRUE
- projectile_type = /obj/item/projectile/bullet/rifle/a762
+ projectile_type = /obj/projectile/bullet/rifle/a762
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
@@ -539,7 +539,7 @@
item_state = "automat"
fire_anim = "automat_fire"
w_class = ITEMSIZE_LARGE
- force = 10
+ damage_force = 10
caliber = "7.62mm"
heavy = TRUE
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) //A real work around to a automatic rifle.
@@ -573,14 +573,14 @@
item_state = null
w_class = ITEMSIZE_LARGE
heavy = TRUE
- force = 10
+ damage_force = 10
caliber = "12g"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/holyshot_mag
allowed_magazines = list(/obj/item/ammo_magazine/holyshot_mag, /obj/item/ammo_magazine/holyshot_mag/stake)
- projectile_type = /obj/item/projectile/bullet/shotgun
+ projectile_type = /obj/projectile/bullet/shotgun
one_handed_penalty = 40
@@ -605,14 +605,14 @@
wielded_item_state = "clownrifle_wielded"
w_class = ITEMSIZE_LARGE
heavy = TRUE
- force = 10
+ damage_force = 10
caliber = "organic"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/mcompressedbio/large/banana
allowed_magazines = list(/obj/item/ammo_magazine/mcompressedbio/large/banana)
- projectile_type = /obj/item/projectile/bullet/organic
+ projectile_type = /obj/projectile/bullet/organic
one_handed_penalty = 30
@@ -711,11 +711,11 @@
desc = "A DONKsoft rendition of an infamous submachine gun."
icon = 'icons/obj/toy.dmi'
icon_state = "toy_c20"
- force = 5
+ damage_force = 5
caliber = "foamdart"
magazine_type = /obj/item/ammo_magazine/mfoam/c20
allowed_magazines = list(/obj/item/ammo_magazine/mfoam/c20)
- projectile_type = /obj/item/projectile/bullet/reusable/foam
+ projectile_type = /obj/projectile/bullet/reusable/foam
one_handed_penalty = 5
fire_sound = 'sound/items/syringeproj.ogg'
@@ -736,11 +736,11 @@
desc = "This plastic replica of a common light machine gun weighs about half as much. It's still pretty bulky, but nothing lays down suppressive fire like this bad boy. The bane of schoolyards across the galaxy."
icon = 'icons/obj/toy.dmi'
icon_state = "toy_lmgclosed100"
- force = 5
+ damage_force = 5
caliber = "foamdart"
magazine_type = /obj/item/ammo_magazine/mfoam/lmg
allowed_magazines = list(/obj/item/ammo_magazine/mfoam/lmg)
- projectile_type = /obj/item/projectile/bullet/reusable/foam
+ projectile_type = /obj/projectile/bullet/reusable/foam
one_handed_penalty = 45 //It's plastic.
fire_sound = 'sound/items/syringeproj.ogg'
heavy = FALSE
diff --git a/code/modules/projectiles/guns/projectile/boltaction.dm b/code/modules/projectiles/guns/projectile/boltaction.dm
index 8c9f94873d1..91c24e49aaa 100644
--- a/code/modules/projectiles/guns/projectile/boltaction.dm
+++ b/code/modules/projectiles/guns/projectile/boltaction.dm
@@ -45,7 +45,7 @@
item_state = "vox_hunting"
ammo_type = /obj/item/ammo_casing/a762
throw_force = 10
- force = 20
+ damage_force = 20
// 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)
diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm
index 500b529d398..3d65e1a9dee 100644
--- a/code/modules/projectiles/guns/projectile/bow.dm
+++ b/code/modules/projectiles/guns/projectile/bow.dm
@@ -4,7 +4,7 @@
icon_state = "bow"
item_state = "bow"
w_class = ITEMSIZE_LARGE
- force = 5
+ damage_force = 5
load_method = SINGLE_CASING
caliber = "arrow"
max_shells = 1
@@ -83,11 +83,11 @@
desc = "Some sort of primitive projectile weapon made of bone and sinew. Used to fire arrows."
icon_state = "bow_ashen"
item_state = "bow_ashen"
- force = 8
+ damage_force = 8
/obj/item/gun/ballistic/bow/pipe
name = "pipe bow"
desc = "Some sort of pipe-based projectile weapon made of string and lots of bending. Used to fire arrows."
icon_state = "bow_pipe"
item_state = "bow_pipe"
- force = 2
+ damage_force = 2
diff --git a/code/modules/projectiles/guns/projectile/contender.dm b/code/modules/projectiles/guns/projectile/contender.dm
index dc6eac27168..eb286d9b924 100644
--- a/code/modules/projectiles/guns/projectile/contender.dm
+++ b/code/modules/projectiles/guns/projectile/contender.dm
@@ -8,7 +8,7 @@
handle_casings = HOLD_CASINGS
max_shells = 1
ammo_type = /obj/item/ammo_casing/a357
- projectile_type = /obj/item/projectile/bullet/pistol/strong
+ projectile_type = /obj/projectile/bullet/pistol/strong
var/retracted_bolt = 0
load_method = SINGLE_CASING
heavy = TRUE
@@ -101,7 +101,7 @@
item_state = "revolver"
caliber = "12g"
ammo_type = /obj/item/ammo_casing/a12g/improvised
- projectile_type = /obj/item/projectile/bullet/shotgun
+ projectile_type = /obj/projectile/bullet/shotgun
var/unstable = 1
var/jammed
diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm
index ccd0ecdc16c..0e531554b34 100644
--- a/code/modules/projectiles/guns/projectile/dartgun.dm
+++ b/code/modules/projectiles/guns/projectile/dartgun.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/bullet/chemdart
+/obj/projectile/bullet/chemdart
name = "dart"
icon_state = "dart"
damage = 5
@@ -7,11 +7,11 @@
muzzle_type = null
-/obj/item/projectile/bullet/chemdart/Initialize(mapload)
+/obj/projectile/bullet/chemdart/Initialize(mapload)
. = ..()
create_reagents(reagent_amount)
-/obj/item/projectile/bullet/chemdart/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
+/obj/projectile/bullet/chemdart/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
if(blocked < 2 && isliving(target))
var/mob/living/L = target
if(L.can_inject(target_zone=def_zone))
@@ -22,7 +22,7 @@
desc = "A casing containing a small hardened, hollow dart."
icon_state = "dartcasing"
caliber = "dart"
- projectile_type = /obj/item/projectile/bullet/chemdart
+ projectile_type = /obj/projectile/bullet/chemdart
/obj/item/ammo_casing/chemdart/expend()
..()
@@ -96,7 +96,7 @@
/obj/item/gun/ballistic/dartgun/consume_next_projectile()
. = ..()
- var/obj/item/projectile/bullet/chemdart/dart = .
+ var/obj/projectile/bullet/chemdart/dart = .
if(istype(dart))
fill_dart(dart)
@@ -130,7 +130,7 @@
return ..()
//fills the given dart with reagents
-/obj/item/gun/ballistic/dartgun/proc/fill_dart(var/obj/item/projectile/bullet/chemdart/dart)
+/obj/item/gun/ballistic/dartgun/proc/fill_dart(var/obj/projectile/bullet/chemdart/dart)
if(mixing.len)
var/mix_amount = dart.reagent_amount/mixing.len
for(var/obj/item/reagent_containers/glass/beaker/B in mixing)
@@ -226,7 +226,7 @@
desc = "A casing containing a small hardened, hollow dart."
icon_state = "dartcasing"
caliber = "dart"
- projectile_type = /obj/item/projectile/bullet/chemdart/small
+ projectile_type = /obj/projectile/bullet/chemdart/small
/obj/item/ammo_magazine/chemdart/small
name = "small dart cartridge"
@@ -240,5 +240,5 @@
max_ammo = 3
multiple_sprites = 1
-/obj/item/projectile/bullet/chemdart/small
+/obj/projectile/bullet/chemdart/small
reagent_amount = 10
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index b2b910259a5..af8acb6a262 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -4,7 +4,7 @@
desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds."
magazine_type = /obj/item/ammo_magazine/m45
allowed_magazines = list(/obj/item/ammo_magazine/m45)
- projectile_type = /obj/item/projectile/bullet/pistol/medium
+ projectile_type = /obj/projectile/bullet/pistol/medium
icon_state = "colt"
caliber = ".45"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
@@ -87,7 +87,7 @@
icon_state = "secguncomp"
magazine_type = /obj/item/ammo_magazine/m45/rubber
allowed_magazines = list(/obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/flash, /obj/item/ammo_magazine/m45/practice)
- projectile_type = /obj/item/projectile/bullet/pistol/medium
+ projectile_type = /obj/projectile/bullet/pistol/medium
caliber = ".45"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
load_method = MAGAZINE
@@ -128,14 +128,14 @@
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m45
allowed_magazines = list(/obj/item/ammo_magazine/m45)
- projectile_type = /obj/item/projectile/bullet/pistol/medium
+ projectile_type = /obj/projectile/bullet/pistol/medium
/obj/item/gun/ballistic/deagle
name = "desert eagle"
desc = "The perfect handgun for shooters with a need to hit targets through a wall and behind a fridge in your neighbor's house. Uses .44 rounds."
icon_state = "deagle"
item_state = "deagle"
- force = 14.0
+ damage_force = 14.0
caliber = ".44"
fire_sound = 'sound/weapons/Gunshot_deagle.ogg'
load_method = MAGAZINE
@@ -198,7 +198,7 @@
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m9mm/compact
allowed_magazines = list(/obj/item/ammo_magazine/m9mm/compact)
- projectile_type = /obj/item/projectile/bullet/pistol
+ projectile_type = /obj/projectile/bullet/pistol
/obj/item/gun/ballistic/pistol/update_icon_state()
. = ..()
@@ -300,7 +300,7 @@
load_method = SINGLE_CASING
max_shells = 2
ammo_type = /obj/item/ammo_casing/a357
- projectile_type = /obj/item/projectile/bullet/pistol/strong
+ projectile_type = /obj/projectile/bullet/pistol/strong
/obj/item/gun/ballistic/luger
name = "\improper P08 Luger"
@@ -311,7 +311,7 @@
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m9mm/compact
allowed_magazines = list(/obj/item/ammo_magazine/m9mm/compact)
- projectile_type = /obj/item/projectile/bullet/pistol
+ projectile_type = /obj/projectile/bullet/pistol
/obj/item/gun/ballistic/luger/update_icon_state()
. = ..()
@@ -388,7 +388,7 @@
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 3)
magazine_type = /obj/item/ammo_magazine/mcompressedbio/compact
allowed_magazines = list(/obj/item/ammo_magazine/mcompressedbio/compact)
- projectile_type = /obj/item/projectile/bullet/organic
+ projectile_type = /obj/projectile/bullet/organic
/obj/item/gun/ballistic/clown_pistol/update_icon_state()
. = ..()
@@ -410,7 +410,7 @@
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m9mm/compact
allowed_magazines = list(/obj/item/ammo_magazine/m9mm/compact)
- projectile_type = /obj/item/projectile/bullet/pistol
+ projectile_type = /obj/projectile/bullet/pistol
/obj/item/gun/ballistic/konigin
firemodes = list(
@@ -473,7 +473,7 @@
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
magazine_type = /obj/item/ammo_magazine/m57x28mm
allowed_magazines = list(/obj/item/ammo_magazine/m57x28mm)
- projectile_type = /obj/item/projectile/bullet/pistol/lap
+ projectile_type = /obj/projectile/bullet/pistol/lap
one_handed_penalty = 30
var/collapsible = 1
var/extended = 0
@@ -535,7 +535,7 @@
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_BIO = 5)
magazine_type = /obj/item/ammo_magazine/biovial
allowed_magazines = list(/obj/item/ammo_magazine/biovial)
- projectile_type = /obj/item/projectile/bullet/organic/wax
+ projectile_type = /obj/projectile/bullet/organic/wax
/obj/item/gun/ballistic/apinae_pistol/update_icon_state()
. = ..()
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index d8efb56ce7f..9af6e1f5468 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -8,7 +8,7 @@
handle_casings = CYCLE_CASINGS
max_shells = 6
ammo_type = /obj/item/ammo_casing/a357
- projectile_type = /obj/item/projectile/bullet/pistol/strong
+ projectile_type = /obj/projectile/bullet/pistol/strong
mag_insert_sound = 'sound/weapons/guns/interaction/rev_magin.ogg'
mag_remove_sound = 'sound/weapons/guns/interaction/rev_magout.ogg'
var/chamber_offset = 0 //how many empty chambers in the cylinder until you hit a round
@@ -57,7 +57,7 @@
icon_state = "knifegun"
caliber = ".38"
ammo_type = /obj/item/ammo_casing/a38
- force = 15
+ damage_force = 15
sharp = 1
edge = 1
@@ -175,7 +175,7 @@
handle_casings = CYCLE_CASINGS
max_shells = 7
ammo_type = /obj/item/ammo_casing/cap
- projectile_type = /obj/item/projectile/bullet/pistol/strong
+ projectile_type = /obj/projectile/bullet/pistol/strong
/obj/item/gun/ballistic/revolver/judge
name = "\"The Judge\""
@@ -187,7 +187,7 @@
recoil = 2 // ow my fucking hand
accuracy = -15 // smooth bore + short barrel = shit accuracy
ammo_type = /obj/item/ammo_casing/a12g
- projectile_type = /obj/item/projectile/bullet/shotgun
+ projectile_type = /obj/projectile/bullet/shotgun
// ToDo: Remove accuracy debuf in exchange for slightly injuring your hand every time you fire it.
/obj/item/gun/ballistic/revolver/lemat
@@ -200,7 +200,7 @@
max_shells = 9
caliber = ".38"
ammo_type = /obj/item/ammo_casing/a38
- projectile_type = /obj/item/projectile/bullet/pistol
+ projectile_type = /obj/projectile/bullet/pistol
var/secondary_max_shells = 1
var/secondary_caliber = "12g"
var/secondary_ammo_type = /obj/item/ammo_casing/a12g
diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm
index 2fbc5bae571..8a53d0f9a80 100644
--- a/code/modules/projectiles/guns/projectile/rocket.dm
+++ b/code/modules/projectiles/guns/projectile/rocket.dm
@@ -10,7 +10,7 @@
heavy = TRUE
throw_speed = 2
throw_range = 10
- force = 5.0
+ damage_force = 5.0
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 5)
fire_sound = 'sound/weapons/rpg.ogg'
diff --git a/code/modules/projectiles/guns/projectile/semiauto.dm b/code/modules/projectiles/guns/projectile/semiauto.dm
index d796e649032..935bd1bcdf0 100644
--- a/code/modules/projectiles/guns/projectile/semiauto.dm
+++ b/code/modules/projectiles/guns/projectile/semiauto.dm
@@ -54,7 +54,7 @@
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/biovial
allowed_magazines = list(/obj/item/ammo_magazine/biovial)
- projectile_type = /obj/item/projectile/bullet/organic/stinger
+ projectile_type = /obj/projectile/bullet/organic/stinger
one_handed_penalty = 25
/obj/item/gun/ballistic/apinae_stinger/update_icon_state()
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index ad85c5c6bdd..b4470ed5d97 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -6,13 +6,13 @@
max_shells = 4
w_class = ITEMSIZE_LARGE
heavy = TRUE
- force = 10
+ damage_force = 10
slot_flags = SLOT_BACK
caliber = "12g"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
load_method = SINGLE_CASING|SPEEDLOADER
ammo_type = /obj/item/ammo_casing/a12g/beanbag
- projectile_type = /obj/item/projectile/bullet/shotgun
+ projectile_type = /obj/projectile/bullet/shotgun
handle_casings = HOLD_CASINGS
one_handed_penalty = 15
var/recentpump = 0 // to prevent spammage
@@ -155,7 +155,7 @@
max_shells = 2
w_class = ITEMSIZE_LARGE
heavy = TRUE
- force = 10
+ damage_force = 10
slot_flags = SLOT_BACK
caliber = "12g"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1)
@@ -199,7 +199,7 @@
icon_state = "sawnshotgun"
item_state = "sawnshotgun"
w_class = ITEMSIZE_NORMAL
- force = 5
+ damage_force = 5
slot_flags &= ~SLOT_BACK //you can't sling it on your back
slot_flags |= (SLOT_BELT|SLOT_HOLSTER) //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) - or in a holster, why not.
name = "sawn-off shotgun"
@@ -218,7 +218,7 @@
slot_flags = SLOT_BELT|SLOT_HOLSTER
ammo_type = /obj/item/ammo_casing/a12g/pellet
w_class = ITEMSIZE_NORMAL
- force = 5
+ damage_force = 5
one_handed_penalty = 5
/obj/item/gun/ballistic/shotgun/doublebarrel/sawn/alt
@@ -239,7 +239,7 @@
handle_casings = CYCLE_CASINGS
max_shells = 4
w_class = ITEMSIZE_LARGE
- force = 5
+ damage_force = 5
accuracy = 40
slot_flags = SLOT_BACK
ammo_type = /obj/item/ammo_casing/a12g/pellet
@@ -265,7 +265,7 @@
ammo_type = /obj/item/ammo_casing/a10g/silver
w_class = ITEMSIZE_NORMAL
safety_state = GUN_SAFETY_OFF
- force = 15
+ damage_force = 15
//Flaregun Code that may work?
/obj/item/gun/ballistic/shotgun/flare
@@ -277,12 +277,12 @@
handle_casings = CYCLE_CASINGS
max_shells = 1
w_class = ITEMSIZE_SMALL
- force = 5
+ damage_force = 5
slot_flags = SLOT_BELT
caliber = "12g"
accuracy = -15 //Its a flaregun and you expected accuracy?
ammo_type = /obj/item/ammo_casing/a12g/flare
- projectile_type = /obj/item/projectile/energy/flash
+ projectile_type = /obj/projectile/energy/flash
one_handed_penalty = 0
/obj/item/gun/ballistic/shotgun/flare/paramed
@@ -313,7 +313,7 @@
ammo_type = /obj/item/ammo_casing/a12g/silver
max_shells = 1
w_class = ITEMSIZE_LARGE
- force = 25
+ damage_force = 25
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_OCCULT = 1)
sharp = 1
@@ -341,10 +341,10 @@
icon = 'icons/obj/toy.dmi'
icon_state = "toy_shotgun"
max_shells = 8
- force = 5
+ damage_force = 5
caliber = "foamdart"
ammo_type = /obj/item/ammo_casing/foam
- projectile_type = /obj/item/projectile/bullet/reusable/foam
+ projectile_type = /obj/projectile/bullet/reusable/foam
one_handed_penalty = 5
fire_sound = 'sound/items/syringeproj.ogg'
diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm
index 48971a6ba89..8012031cd2e 100644
--- a/code/modules/projectiles/guns/projectile/sniper.dm
+++ b/code/modules/projectiles/guns/projectile/sniper.dm
@@ -6,7 +6,7 @@
icon_state = "heavysniper"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "l6closed-empty", SLOT_ID_LEFT_HAND = "l6closed-empty") // placeholder
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
- force = 10
+ damage_force = 10
heavy = TRUE
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
@@ -16,7 +16,7 @@
load_method = SINGLE_CASING
max_shells = 1
ammo_type = /obj/item/ammo_casing/a145
- projectile_type = /obj/item/projectile/bullet/rifle/a145
+ projectile_type = /obj/projectile/bullet/rifle/a145
load_sound = 'sound/weapons/guns/interaction/rifle_load.ogg'
accuracy = -45
scoped_accuracy = 95
@@ -82,7 +82,7 @@
icon_state = "SVD"
item_state = "SVD"
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
- force = 10
+ damage_force = 10
slot_flags = SLOT_BACK // Needs a sprite.
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
caliber = "7.62mm"
diff --git a/code/modules/projectiles/guns/vox.dm b/code/modules/projectiles/guns/vox.dm
index abb671cc655..02be249c6b9 100644
--- a/code/modules/projectiles/guns/vox.dm
+++ b/code/modules/projectiles/guns/vox.dm
@@ -60,18 +60,18 @@
w_class = ITEMSIZE_HUGE
heavy = TRUE
charge_cost = 300
- projectile_type = /obj/item/projectile/beam/stun/darkmatter
+ projectile_type = /obj/projectile/beam/stun/darkmatter
cell_type = /obj/item/cell/device/weapon/recharge
battery_lock = 1
accuracy = 30
firemodes = list(
- list(mode_name="stunning", burst=1, fire_delay=null, move_delay=null, burst_accuracy=list(30), dispersion=null, projectile_type=/obj/item/projectile/beam/stun/darkmatter, charge_cost = 300),
- list(mode_name="focused", burst=1, fire_delay=null, move_delay=null, burst_accuracy=list(30), dispersion=null, projectile_type=/obj/item/projectile/beam/darkmatter, charge_cost = 400),
- list(mode_name="scatter burst", burst=8, fire_delay=null, move_delay=4, burst_accuracy=list(0, 0, 0, 0, 0, 0, 0, 0), dispersion=list(3, 3, 3, 3, 3, 3, 3, 3, 3), projectile_type=/obj/item/projectile/energy/darkmatter, charge_cost = 300),
+ list(mode_name="stunning", burst=1, fire_delay=null, move_delay=null, burst_accuracy=list(30), dispersion=null, projectile_type=/obj/projectile/beam/stun/darkmatter, charge_cost = 300),
+ list(mode_name="focused", burst=1, fire_delay=null, move_delay=null, burst_accuracy=list(30), dispersion=null, projectile_type=/obj/projectile/beam/darkmatter, charge_cost = 400),
+ list(mode_name="scatter burst", burst=8, fire_delay=null, move_delay=4, burst_accuracy=list(0, 0, 0, 0, 0, 0, 0, 0), dispersion=list(3, 3, 3, 3, 3, 3, 3, 3, 3), projectile_type=/obj/projectile/energy/darkmatter, charge_cost = 300),
)
-/obj/item/projectile/beam/stun/darkmatter
+/obj/projectile/beam/stun/darkmatter
name = "dark matter wave"
icon_state = "darkt"
fire_sound = 'sound/weapons/eLuger.ogg'
@@ -85,14 +85,14 @@
tracer_type = /obj/effect/projectile/tracer/darkmatterstun
impact_type = /obj/effect/projectile/impact/darkmatterstun
-/obj/item/projectile/beam/darkmatter
+/obj/projectile/beam/darkmatter
name = "dark matter bolt"
icon_state = "darkb"
fire_sound = 'sound/weapons/eLuger.ogg'
damage = 35
armor_penetration = 35
damage_type = BRUTE
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
light_color = "#8837A3"
embed_chance = 0
@@ -101,14 +101,14 @@
tracer_type = /obj/effect/projectile/tracer/darkmatter
impact_type = /obj/effect/projectile/impact/darkmatter
-/obj/item/projectile/energy/darkmatter
+/obj/projectile/energy/darkmatter
name = "dark matter pellet"
icon_state = "dark_pellet"
fire_sound = 'sound/weapons/eLuger.ogg'
damage = 20
armor_penetration = 35
damage_type = BRUTE
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
light_color = "#8837A3"
embed_chance = 0
@@ -127,31 +127,31 @@
battery_lock = 1
charge_cost = 400
- projectile_type=/obj/item/projectile/sonic/weak
+ projectile_type=/obj/projectile/sonic/weak
firemodes = list(
- list(mode_name="suppressive", projectile_type=/obj/item/projectile/sonic/weak, charge_cost = 200),
- list(mode_name="normal", projectile_type=/obj/item/projectile/sonic/strong, charge_cost = 600),
+ list(mode_name="suppressive", projectile_type=/obj/projectile/sonic/weak, charge_cost = 200),
+ list(mode_name="normal", projectile_type=/obj/projectile/sonic/strong, charge_cost = 600),
)
-/obj/item/projectile/sonic
+/obj/projectile/sonic
name = "sonic pulse"
icon_state = "sound"
fire_sound = 'sound/effects/basscannon.ogg'
damage = 5
armor_penetration = 30
damage_type = BRUTE
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
embed_chance = 0
vacuum_traversal = 0
-/obj/item/projectile/sonic/weak
+/obj/projectile/sonic/weak
agony = 50
-/obj/item/projectile/sonic/strong
+/obj/projectile/sonic/strong
damage = 45
-/obj/item/projectile/sonic/strong/on_hit(var/atom/movable/target, var/blocked = 0)
+/obj/projectile/sonic/strong/on_hit(var/atom/movable/target, var/blocked = 0)
if(ismob(target))
var/throwdir = get_dir(firer,target)
target.throw_at_old(get_edge_target_turf(target, throwdir), rand(1,6), 10)
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index cfbc802e4de..c531d15557d 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -2,7 +2,7 @@
#define MOVES_HITSCAN -1
///How many pixels to move the muzzle flash up so your character doesn't look like they're shitting out lasers.
#define MUZZLE_EFFECT_PIXEL_INCREMENT 17
-/obj/item/projectile
+/obj/projectile
name = "projectile"
icon = 'icons/obj/projectiles.dmi'
icon_state = "bullet"
@@ -101,14 +101,23 @@
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
- var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE, HALLOSS, ELECTROCUTE, BIOACID are the only things that should be in here
+ /// 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
+ /// 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
var/taser_effect = 0 //If set then the projectile will apply it's agony damage using stun_effect_act() to mobs it hits, and other damage will be ignored
- var/check_armour = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid
- var/projectile_type = /obj/item/projectile
+ var/projectile_type = /obj/projectile
var/penetrating = 0 //If greater than zero, the projectile will pass through dense objects as specified by on_penetrate()
//Effects
var/incendiary = 0 //1 for ignite on hit, 2 for trail of fire. 3 maybe later for burst of fire around the impact point. - Mech
@@ -137,23 +146,25 @@
/// Multiplier for damage if antimagic is on the target
var/antimagic_damage_factor = 0
- embed_chance = 0 //Base chance for a projectile to embed
+ var/embed_chance = 0 //Base chance for a projectile to embed
var/fire_sound = 'sound/weapons/Gunshot_old.ogg' // Can be overriden in gun.dm's fire_sound var. It can also be null but I don't know why you'd ever want to do that. -Ace
var/vacuum_traversal = TRUE //Determines if the projectile can exist in vacuum, if false, the projectile will be deleted if it enters vacuum.
var/temporary_unstoppable_movement = FALSE
+ var/no_attack_log = FALSE
+ var/hitsound
-/obj/item/projectile/proc/Range()
+/obj/projectile/proc/Range()
range--
if(range <= 0 && loc)
on_range()
-/obj/item/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range
+/obj/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range
qdel(src)
-/obj/item/projectile/proc/return_predicted_turf_after_moves(moves, forced_angle) //I say predicted because there's no telling that the projectile won't change direction/location in flight.
+/obj/projectile/proc/return_predicted_turf_after_moves(moves, forced_angle) //I say predicted because there's no telling that the projectile won't change direction/location in flight.
if(!trajectory && isnull(forced_angle) && isnull(Angle))
return FALSE
var/datum/point/vector/current = trajectory
@@ -163,18 +174,18 @@
var/datum/point/vector/v = current.return_vector_after_increments(moves * SSprojectiles.global_iterations_per_move)
return v.return_turf()
-/obj/item/projectile/proc/return_pathing_turfs_in_moves(moves, forced_angle)
+/obj/projectile/proc/return_pathing_turfs_in_moves(moves, forced_angle)
var/turf/current = get_turf(src)
var/turf/ending = return_predicted_turf_after_moves(moves, forced_angle)
return getline(current, ending)
-/obj/item/projectile/proc/set_pixel_speed(new_speed)
+/obj/projectile/proc/set_pixel_speed(new_speed)
if(trajectory)
trajectory.set_speed(new_speed)
return TRUE
return FALSE
-/obj/item/projectile/proc/record_hitscan_start(datum/point/pcache)
+/obj/projectile/proc/record_hitscan_start(datum/point/pcache)
if(!has_tracer)
return
if(!pcache)
@@ -183,7 +194,7 @@
beam_index = pcache
beam_segments[beam_index] = null //record start.
-/obj/item/projectile/proc/process_hitscan()
+/obj/projectile/proc/process_hitscan()
var/safety = range * 3
record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, Angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1))
while(loc && !QDELETED(src))
@@ -198,7 +209,7 @@
return //Kill!
pixel_move(1, TRUE)
-/obj/item/projectile/proc/pixel_move(trajectory_multiplier, hitscanning = FALSE)
+/obj/projectile/proc/pixel_move(trajectory_multiplier, hitscanning = FALSE)
if(!loc || !trajectory)
return
last_projectile_move = world.time
@@ -238,7 +249,7 @@
animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW)
Range()
-/obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it.
+/obj/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it.
if(AM.is_incorporeal())
return
..()
@@ -247,7 +258,7 @@
if(can_hit_target(L, permutated, (AM == original)))
Bump(AM)
-/obj/item/projectile/proc/process_homing() //may need speeding up in the future performance wise.
+/obj/projectile/proc/process_homing() //may need speeding up in the future performance wise.
if(!homing_target)
return FALSE
var/datum/point/PT = RETURN_PRECISE_POINT(homing_target)
@@ -256,7 +267,7 @@
var/angle = closer_angle_difference(Angle, angle_between_points(RETURN_PRECISE_POINT(src), PT))
setAngle(Angle + clamp(angle, -homing_turn_speed, homing_turn_speed))
-/obj/item/projectile/proc/set_homing_target(atom/A)
+/obj/projectile/proc/set_homing_target(atom/A)
if(!A || (!isturf(A) && !isturf(A.loc)))
return FALSE
homing = TRUE
@@ -268,7 +279,7 @@
if(prob(50))
homing_offset_y = -homing_offset_y
-/obj/item/projectile/process(delta_time)
+/obj/projectile/process(delta_time)
last_process = world.time
if(!loc || !fired || !trajectory)
fired = FALSE
@@ -291,7 +302,7 @@
for(var/i in 1 to required_moves)
pixel_move(1, FALSE)
-/obj/item/projectile/proc/setAngle(new_angle) //wrapper for overrides.
+/obj/projectile/proc/setAngle(new_angle) //wrapper for overrides.
Angle = new_angle
if(!nondirectional_sprite)
var/matrix/M = new
@@ -301,7 +312,7 @@
trajectory.set_angle(new_angle)
return TRUE
-/obj/item/projectile/forceMove(atom/target)
+/obj/projectile/forceMove(atom/target)
if(!isloc(target) || !isloc(loc) || !z)
return ..()
var/zc = target.z != z
@@ -318,7 +329,7 @@
if(zc)
after_z_change(old, target)
-/obj/item/projectile/proc/fire(angle, atom/direct_target)
+/obj/projectile/proc/fire(angle, atom/direct_target)
if(only_submunitions) // refactor projectiles whwen holy shit this is awful lmao
qdel(src)
return
@@ -353,7 +364,7 @@
START_PROCESSING(SSprojectiles, src)
pixel_move(1, FALSE) //move it now!
-/obj/item/projectile/Move(atom/newloc, dir = NONE)
+/obj/projectile/Move(atom/newloc, dir = NONE)
. = ..()
if(.)
if(temporary_unstoppable_movement)
@@ -362,17 +373,17 @@
if(fired && can_hit_target(original, permutated, TRUE))
Bump(original)
-/obj/item/projectile/proc/after_z_change(atom/olcloc, atom/newloc)
+/obj/projectile/proc/after_z_change(atom/olcloc, atom/newloc)
-/obj/item/projectile/proc/before_z_change(atom/oldloc, atom/newloc)
+/obj/projectile/proc/before_z_change(atom/oldloc, atom/newloc)
-/obj/item/projectile/proc/before_move()
+/obj/projectile/proc/before_move()
return
-/obj/item/projectile/proc/after_move()
+/obj/projectile/proc/after_move()
return
-/obj/item/projectile/proc/store_hitscan_collision(datum/point/pcache)
+/obj/projectile/proc/store_hitscan_collision(datum/point/pcache)
if(!has_tracer)
return
beam_segments[beam_index] = pcache
@@ -380,7 +391,7 @@
beam_segments[beam_index] = null
//Spread is FORCED!
-/obj/item/projectile/proc/preparePixelProjectile(atom/target, atom/source, params, spread = 0)
+/obj/projectile/proc/preparePixelProjectile(atom/target, atom/source, params, spread = 0)
var/turf/curloc = get_turf(source)
var/turf/targloc = get_turf(target)
@@ -445,37 +456,37 @@
angle = arctan(y - oy, x - ox)
return list(angle, p_x, p_y)
-/obj/item/projectile/proc/redirect(x, y, starting, source)
+/obj/projectile/proc/redirect(x, y, starting, source)
old_style_target(locate(x, y, z), starting? get_turf(starting) : get_turf(source))
-/obj/item/projectile/proc/old_style_target(atom/target, atom/source)
+/obj/projectile/proc/old_style_target(atom/target, atom/source)
if(!source)
source = get_turf(src)
starting = get_turf(source)
original = target
setAngle(Get_Angle(source, target))
-/obj/item/projectile/Destroy()
+/obj/projectile/Destroy()
if(hitscan)
finalize_hitscan_and_generate_tracers()
STOP_PROCESSING(SSprojectiles, src)
qdel(trajectory)
return ..()
-/obj/item/projectile/proc/cleanup_beam_segments()
+/obj/projectile/proc/cleanup_beam_segments()
if(!has_tracer)
return
QDEL_LIST_ASSOC(beam_segments)
beam_segments = list()
qdel(beam_index)
-/obj/item/projectile/proc/vol_by_damage()
+/obj/projectile/proc/vol_by_damage()
if(damage)
return clamp((damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then clamp the value between 30 and 100
else
return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume.
-/obj/item/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE)
+/obj/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE)
if(!has_tracer)
return
if(trajectory && beam_index)
@@ -483,7 +494,7 @@
beam_segments[beam_index] = pcache
generate_hitscan_tracers(null, null, impacting)
-/obj/item/projectile/proc/generate_hitscan_tracers(cleanup = TRUE, duration = 5, impacting = TRUE)
+/obj/projectile/proc/generate_hitscan_tracers(cleanup = TRUE, duration = 5, impacting = TRUE)
if(!length(beam_segments))
return
beam_components = new
@@ -515,7 +526,7 @@
//Returns true if the target atom is on our current turf and above the right layer
//If direct target is true it's the originally clicked target.
-/obj/item/projectile/proc/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE)
+/obj/projectile/proc/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE)
if(QDELETED(target))
return FALSE
if(!ignore_source_check && firer)
@@ -538,7 +549,7 @@
return FALSE
return TRUE
-/obj/item/projectile/Bump(atom/A)
+/obj/projectile/Bump(atom/A)
if(A in permutated)
trajectory_ignore_forcemove = TRUE
forceMove(get_turf(A))
@@ -604,7 +615,7 @@
return TRUE
//TODO: make it so this is called more reliably, instead of sometimes by bullet_act() and sometimes not
-/obj/item/projectile/proc/on_hit(atom/target, blocked = 0, def_zone)
+/obj/projectile/proc/on_hit(atom/target, blocked = 0, def_zone)
if(blocked >= 100)
return 0//Full block
if(!isliving(target))
@@ -617,37 +628,37 @@
return 1
//called when the projectile stops flying because it Bump'd with something
-/obj/item/projectile/proc/on_impact(atom/A)
+/obj/projectile/proc/on_impact(atom/A)
if(damage && damage_type == BURN)
var/turf/T = get_turf(A)
if(T)
T.hotspot_expose(700, 5)
//Checks if the projectile is eligible for embedding. Not that it necessarily will.
-/obj/item/projectile/proc/can_embed()
+/obj/projectile/proc/can_embed()
//embed must be enabled and damage type must be brute
if(embed_chance == 0 || damage_type != BRUTE)
return 0
return 1
-/obj/item/projectile/proc/get_structure_damage()
+/obj/projectile/proc/get_structure_damage()
if(damage_type == BRUTE || damage_type == BURN)
return damage
return 0
//return 1 if the projectile should be allowed to pass through after all, 0 if not.
-/obj/item/projectile/proc/check_penetrate(atom/A)
+/obj/projectile/proc/check_penetrate(atom/A)
return 1
-/obj/item/projectile/proc/check_fire(atom/target as mob, mob/living/user as mob) //Checks if you can hit them or not.
+/obj/projectile/proc/check_fire(atom/target as mob, mob/living/user as mob) //Checks if you can hit them or not.
check_trajectory(target, user, pass_flags, atom_flags)
-/obj/item/projectile/CanAllowThrough()
+/obj/projectile/CanAllowThrough()
. = ..()
return TRUE
//Called when the projectile intercepts a mob. Returns 1 if the projectile hit the mob, 0 if it missed and should keep flying.
-/obj/item/projectile/proc/projectile_attack_mob(mob/living/target_mob, distance, miss_modifier = 0)
+/obj/projectile/proc/projectile_attack_mob(mob/living/target_mob, distance, miss_modifier = 0)
if(!istype(target_mob))
return
@@ -694,7 +705,7 @@
* this shouldn't have to fucking exist because the ammo casing and/or gun should be doing it
* and submunitions SHOULDNT BE HANDLED HERE!!
*/
-/obj/item/projectile/proc/launch_projectile_common(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
+/obj/projectile/proc/launch_projectile_common(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
original = target
def_zone = check_zone(target_zone)
firer = user
@@ -723,7 +734,7 @@
for(var/path in submunitions)
var/amt = submunitions[path]
for(var/count in 1 to amt)
- var/obj/item/projectile/SM = new path(get_turf(loc))
+ var/obj/projectile/SM = new path(get_turf(loc))
SM.shot_from = shot_from
SM.silenced = silenced
if(!isnull(damage_override))
@@ -736,7 +747,7 @@
SM.dispersion = rand(temp_min_spread, submunition_spread_max) / 10
SM.launch_projectile(target, target_zone, user, params, angle_override)
-/obj/item/projectile/proc/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
+/obj/projectile/proc/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
var/direct_target
if(get_turf(target) == get_turf(src))
direct_target = target
@@ -746,14 +757,14 @@
return fire(angle_override, direct_target)
//called to launch a projectile from a gun
-/obj/item/projectile/proc/launch_from_gun(atom/target, target_zone, mob/user, params, angle_override, forced_spread, obj/item/gun/launcher)
+/obj/projectile/proc/launch_from_gun(atom/target, target_zone, mob/user, params, angle_override, forced_spread, obj/item/gun/launcher)
shot_from = launcher.name
silenced = launcher.silenced
return launch_projectile(target, target_zone, user, params, angle_override, forced_spread)
-/obj/item/projectile/proc/launch_projectile_from_turf(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
+/obj/projectile/proc/launch_projectile_from_turf(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
var/direct_target
if(get_turf(target) == get_turf(src))
direct_target = target
@@ -771,7 +782,7 @@
*
* @return Damage to apply to target.
*/
-/obj/item/projectile/proc/run_damage_vulnerability(atom/target)
+/obj/projectile/proc/run_damage_vulnerability(atom/target)
var/final_damage = damage
if(isliving(target))
var/mob/living/L = target
@@ -787,5 +798,5 @@
* Probably isn't needed but saves me the time and I can regex this later:
* Gets the final `damage` that should be used on something
*/
-/obj/item/projectile/proc/get_final_damage(atom/target)
+/obj/projectile/proc/get_final_damage(atom/target)
return run_damage_vulnerability(target)
diff --git a/code/modules/projectiles/projectile/animate.dm b/code/modules/projectiles/projectile/animate.dm
index 13584a64ad6..2052f40c424 100644
--- a/code/modules/projectiles/projectile/animate.dm
+++ b/code/modules/projectiles/projectile/animate.dm
@@ -1,16 +1,16 @@
-/obj/item/projectile/animate
+/obj/projectile/animate
name = "bolt of animation"
icon_state = "ice_1"
damage = 0
damage_type = BURN
nodamage = 1
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
light_range = 2
light_power = 0.5
light_color = "#55AAFF"
combustion = FALSE
-/obj/item/projectile/animate/Bump(var/atom/change)
+/obj/projectile/animate/Bump(var/atom/change)
if((istype(change, /obj/item) || istype(change, /obj/structure)) && !is_type_in_list(change, protected_objects))
var/obj/O = change
new /mob/living/simple_mob/hostile/mimic/copy(O.loc, O, firer)
diff --git a/code/modules/projectiles/projectile/arc.dm b/code/modules/projectiles/projectile/arc.dm
index a566c4e0eae..ba2b2be7fad 100644
--- a/code/modules/projectiles/projectile/arc.dm
+++ b/code/modules/projectiles/projectile/arc.dm
@@ -6,7 +6,7 @@
// Besides the visuals, arcing projectiles do not collide with anything until they reach the target, as they fly over them.
// For best effect, use this only when it makes sense to do so, IE on the Surface. The projectiles don't care about ceilings or gravity.
-/obj/item/projectile/arc
+/obj/projectile/arc
name = "arcing shot"
icon_state = "fireball" // WIP
movement_type = MOVEMENT_UNSTOPPABLE
@@ -17,19 +17,19 @@
var/projectile_speed_modifier = 0.5 // Slows it down to make the arcing more noticable, and improve pixel calculation accuracy.
var/obj/effect/projectile_shadow/shadow = null // Visual indicator for the projectile's 'true' position. Needed due to being bound to two dimensions in reality.
-/obj/item/projectile/arc/Bump()
+/obj/projectile/arc/Bump()
return
-/obj/item/projectile/arc/Initialize(mapload)
+/obj/projectile/arc/Initialize(mapload)
shadow = new(get_turf(src))
return ..()
-/obj/item/projectile/arc/Destroy()
+/obj/projectile/arc/Destroy()
QDEL_NULL(shadow)
return ..()
-/obj/item/projectile/arc/proc/calculate_initial_pixel_distance(atom/user, atom/target)
+/obj/projectile/arc/proc/calculate_initial_pixel_distance(atom/user, atom/target)
var/datum/point/A = new(user)
var/datum/point/B = new(target)
@@ -39,34 +39,34 @@
return pixel_length_between_points(A, B)
-/obj/item/projectile/arc/proc/distance_flown()
+/obj/projectile/arc/proc/distance_flown()
var/datum/point/current_point = new(src)
var/datum/point/starting_point = new(starting)
return pixel_length_between_points(current_point, starting_point)
-/obj/item/projectile/arc/on_range()
+/obj/projectile/arc/on_range()
if(loc)
on_impact(loc)
return ..()
-/obj/item/projectile/arc/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
+/obj/projectile/arc/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
fired_dir = get_dir(user, target) // Used to determine if the projectile should turn in the air.
distance_to_fly = calculate_initial_pixel_distance(user, target) // Calculates how many pixels to travel before hitting the ground.
..() // Does the actual launching. The projectile will be out after this.
// For legacy.
-/obj/item/projectile/arc/old_style_target(atom/target, atom/source)
+/obj/projectile/arc/old_style_target(atom/target, atom/source)
..()
fired_dir = get_dir(source, target)
distance_to_fly = calculate_initial_pixel_distance(source, target)
-/obj/item/projectile/arc/fire(angle, atom/direct_target)
+/obj/projectile/arc/fire(angle, atom/direct_target)
..() // The trajectory must exist for set_pixel_speed() to work.
set_pixel_speed(projectile_speed_modifier) // Slows it down and makes the distance checking more accurate.
-/obj/item/projectile/arc/pixel_move(trajectory_multiplier, hitscanning = FALSE)
+/obj/projectile/arc/pixel_move(trajectory_multiplier, hitscanning = FALSE)
// Do the other important stuff first.
..(trajectory_multiplier, hitscanning)
@@ -113,58 +113,58 @@
// This is a test projectile in the sense that its testing the code to make sure it works,
// as opposed to a 'can I hit this thing' projectile.
-/obj/item/projectile/arc/test/on_impact(turf/T)
+/obj/projectile/arc/test/on_impact(turf/T)
new /obj/effect/explosion(T)
T.color = "#FF0000"
// Generic, Hivebot related
-/obj/item/projectile/arc/blue_energy
+/obj/projectile/arc/blue_energy
name = "energy missile"
icon_state = "force_missile"
damage = 15
damage_type = BURN
-/obj/item/projectile/arc/blue_energy/on_impact(turf/T)
+/obj/projectile/arc/blue_energy/on_impact(turf/T)
for(var/mob/living/L in T)
projectile_attack_mob(L) // Everything on the turf it lands gets hit.
// Fragmentation arc shot
-/obj/item/projectile/arc/fragmentation
+/obj/projectile/arc/fragmentation
name = "fragmentation shot"
icon_state = "shell"
var/list/fragment_types = list(
- /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment, \
- /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong
+ /obj/projectile/bullet/pellet/fragment, /obj/projectile/bullet/pellet/fragment, \
+ /obj/projectile/bullet/pellet/fragment, /obj/projectile/bullet/pellet/fragment/strong
)
var/fragment_amount = 63 // Same as a grenade.
var/spread_range = 7
-/obj/item/projectile/arc/fragmentation/on_impact(turf/T)
+/obj/projectile/arc/fragmentation/on_impact(turf/T)
fragmentate(T, fragment_amount, spread_range, fragment_types)
-/obj/item/projectile/arc/fragmentation/mortar
+/obj/projectile/arc/fragmentation/mortar
icon_state = "mortar"
fragment_amount = 10
spread_range = 3
// EMP arc shot
-/obj/item/projectile/arc/emp_blast
+/obj/projectile/arc/emp_blast
name = "emp blast"
icon_state = "bluespace"
-/obj/item/projectile/arc/emp_blast/on_impact(turf/T)
+/obj/projectile/arc/emp_blast/on_impact(turf/T)
empulse(T, 2, 4, 7, 10) // Normal EMP grenade.
-/obj/item/projectile/arc/emp_blast/weak/on_impact(turf/T)
+/obj/projectile/arc/emp_blast/weak/on_impact(turf/T)
empulse(T, 1, 2, 3, 4) // Sec EMP grenade.
// Radiation arc shot
-/obj/item/projectile/arc/radioactive
+/obj/projectile/arc/radioactive
name = "radiation blast"
icon_state = "green_pellet"
icon_scale_x = 2
icon_scale_y = 2
var/rad_power = RAD_INTENSITY_PROJ_ARC
-/obj/item/projectile/arc/radioactive/on_impact(turf/T)
+/obj/projectile/arc/radioactive/on_impact(turf/T)
radiation_pulse(T, rad_power)
diff --git a/code/modules/projectiles/projectile/beam/beams.dm b/code/modules/projectiles/projectile/beam/beams.dm
index c7ea148ef35..43841314300 100644
--- a/code/modules/projectiles/projectile/beam/beams.dm
+++ b/code/modules/projectiles/projectile/beam/beams.dm
@@ -1,11 +1,11 @@
-/obj/item/projectile/beam
+/obj/projectile/beam
name = "laser"
icon_state = "laser"
fire_sound = 'sound/weapons/weaponsounds_laserstrong.ogg'
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GLASS | ATOM_PASS_GRILLE
damage = 40
damage_type = BURN
- check_armour = "laser"
+ damage_flag = ARMOR_LASER
eyeblur = 4
var/frequency = 1
hitscan = TRUE
@@ -19,37 +19,37 @@
tracer_type = /obj/effect/projectile/tracer/laser
impact_type = /obj/effect/projectile/impact/laser
-/obj/item/projectile/beam/practice
+/obj/projectile/beam/practice
name = "laser"
icon_state = "laser"
damage = 0
damage_type = BURN
- check_armour = "laser"
+ damage_flag = ARMOR_LASER
eyeblur = 2
impact_sounds = null
-/obj/item/projectile/beam/weaklaser
+/obj/projectile/beam/weaklaser
name = "weak laser"
icon_state = "laser"
fire_sound = 'sound/weapons/weaponsounds_laserweak.ogg'
damage = 15
-/obj/item/projectile/beam/smalllaser
+/obj/projectile/beam/smalllaser
damage = 25
fire_sound = 'sound/weapons/weaponsounds_laserweak.ogg'
-/obj/item/projectile/beam/burstlaser
+/obj/projectile/beam/burstlaser
damage = 30
fire_sound = 'sound/weapons/weaponsounds_lasermid.ogg'
armor_penetration = 10
-/obj/item/projectile/beam/midlaser
+/obj/projectile/beam/midlaser
damage = 40
fire_sound = 'sound/weapons/weaponsounds_lasermid.ogg'
armor_penetration = 10
-/obj/item/projectile/beam/heavylaser
+/obj/projectile/beam/heavylaser
name = "heavy laser"
icon_state = "heavylaser"
fire_sound = 'sound/weapons/weaponsounds_laserstrong.ogg'
@@ -63,7 +63,7 @@
tracer_type = /obj/effect/projectile/tracer/laser_heavy
impact_type = /obj/effect/projectile/impact/laser_heavy
-/obj/item/projectile/beam/heavylaser/fakeemitter
+/obj/projectile/beam/heavylaser/fakeemitter
name = "emitter beam"
icon_state = "emitter"
fire_sound = 'sound/weapons/emitter.ogg'
@@ -74,12 +74,12 @@
tracer_type = /obj/effect/projectile/tracer/emitter
impact_type = /obj/effect/projectile/impact/emitter
-/obj/item/projectile/beam/heavylaser/cannon
+/obj/projectile/beam/heavylaser/cannon
damage = 80
armor_penetration = 50
light_color = "#FF0D00"
-/obj/item/projectile/beam/xray
+/obj/projectile/beam/xray
name = "xray beam"
icon_state = "xray"
fire_sound = 'sound/weapons/eluger.ogg'
@@ -91,7 +91,7 @@
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
-/obj/item/projectile/beam/gamma
+/obj/projectile/beam/gamma
name = "gamma beam"
icon_state = "xray"
fire_sound = 'sound/weapons/eluger.ogg'
@@ -104,7 +104,7 @@
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
-/obj/item/projectile/beam/cyan
+/obj/projectile/beam/cyan
name = "cyan beam"
icon_state = "cyan"
fire_sound = 'sound/weapons/weaponsounds_alienlaser.ogg'
@@ -115,7 +115,7 @@
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
-/obj/item/projectile/beam/pulse
+/obj/projectile/beam/pulse
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.
@@ -127,16 +127,16 @@
tracer_type = /obj/effect/projectile/tracer/laser_pulse
impact_type = /obj/effect/projectile/impact/laser_pulse
-/obj/item/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0)
if(isturf(target))
LEGACY_EX_ACT(target, 2, null)
..()
-/obj/item/projectile/beam/pulse/shotgun
+/obj/projectile/beam/pulse/shotgun
damage = 50
armor_penetration = 25
-/obj/item/projectile/beam/emitter
+/obj/projectile/beam/emitter
name = "emitter beam"
icon_state = "emitter"
fire_sound = 'sound/weapons/emitter.ogg'
@@ -148,17 +148,17 @@
tracer_type = /obj/effect/projectile/tracer/emitter
impact_type = /obj/effect/projectile/impact/emitter
-/obj/item/projectile/beam/lasertag
+/obj/projectile/beam/lasertag
name = "lasertag beam"
damage = 0
eyeblur = 0
no_attack_log = 1
damage_type = BURN
- check_armour = "laser"
+ damage_flag = ARMOR_LASER
combustion = FALSE
-/obj/item/projectile/beam/lasertag/blue
+/obj/projectile/beam/lasertag/blue
icon_state = "bluelaser"
light_color = "#0066FF"
@@ -166,25 +166,25 @@
tracer_type = /obj/effect/projectile/tracer/laser_blue
impact_type = /obj/effect/projectile/impact/laser_blue
-/obj/item/projectile/beam/lasertag/blue/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/beam/lasertag/blue/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
if(istype(M.wear_suit, /obj/item/clothing/suit/redtag))
M.Weaken(5)
return 1
-/obj/item/projectile/beam/lasertag/red
+/obj/projectile/beam/lasertag/red
icon_state = "laser"
light_color = "#FF0D00"
-/obj/item/projectile/beam/lasertag/red/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/beam/lasertag/red/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag))
M.Weaken(5)
return 1
-/obj/item/projectile/beam/lasertag/omni//A laser tag bolt that stuns EVERYONE
+/obj/projectile/beam/lasertag/omni//A laser tag bolt that stuns EVERYONE
icon_state = "omnilaser"
light_color = "#00C6FF"
@@ -192,14 +192,14 @@
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
-/obj/item/projectile/beam/lasertag/omni/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/beam/lasertag/omni/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
if((istype(M.wear_suit, /obj/item/clothing/suit/bluetag))||(istype(M.wear_suit, /obj/item/clothing/suit/redtag)))
M.Weaken(5)
return 1
-/obj/item/projectile/beam/sniper
+/obj/projectile/beam/sniper
name = "sniper beam"
icon_state = "xray"
fire_sound = 'sound/weapons/gauss_shoot.ogg'
@@ -211,7 +211,7 @@
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
-/obj/item/projectile/beam/stun
+/obj/projectile/beam/stun
name = "stun beam"
icon_state = "stun"
fire_sound = 'sound/weapons/Taser.ogg'
@@ -228,18 +228,18 @@
tracer_type = /obj/effect/projectile/tracer/stun
impact_type = /obj/effect/projectile/impact/stun
-/obj/item/projectile/beam/stun/weak
+/obj/projectile/beam/stun/weak
name = "weak stun beam"
icon_state = "stun"
agony = 25
-/obj/item/projectile/beam/stun/med
+/obj/projectile/beam/stun/med
name = "stun beam"
icon_state = "stun"
agony = 30
//Disabler Beams - It didn't feel right just to recolor Stun beams. We have uses for them still.
-/obj/item/projectile/beam/disabler
+/obj/projectile/beam/disabler
name = "disabler beam"
icon_state = "lightning"
fire_sound = 'sound/weapons/Taser.ogg'
@@ -256,17 +256,17 @@
impact_type = /obj/effect/projectile/impact/lightning
impact_sounds = null
-/obj/item/projectile/beam/disabler/weak
+/obj/projectile/beam/disabler/weak
name = "weak disabler beam"
icon_state = "lightning"
agony = 25
-/obj/item/projectile/beam/disabler/strong
+/obj/projectile/beam/disabler/strong
name = "strong disabler beam"
icon_state = "lightning"
agony = 40
-/obj/item/projectile/beam/stun/disabler
+/obj/projectile/beam/stun/disabler
name = "disabler beam"
icon_state = "stun"
taser_effect = 0
@@ -276,7 +276,7 @@
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
-/obj/item/projectile/beam/stun/disabler/on_hit(atom/target, blocked = 0, def_zone)
+/obj/projectile/beam/stun/disabler/on_hit(atom/target, blocked = 0, def_zone)
. = ..(target, blocked, def_zone)
if(. && istype(target, /mob/living/silicon/robot) && prob(agony))
@@ -289,7 +289,7 @@
if(A.cell)
A.cell.give(drainamt * 2)
-/obj/item/projectile/beam/shock
+/obj/projectile/beam/shock
name = "shock beam"
icon_state = "lightning"
damage_type = ELECTROCUTE
@@ -302,7 +302,7 @@
agony = 15
eyeblur = 2
-/obj/item/projectile/beam/excavation
+/obj/projectile/beam/excavation
name = "excavation beam"
icon_state = "emitter"
fire_sound = 'sound/weapons/weaponsounds_laserweak.ogg'
@@ -314,7 +314,7 @@
tracer_type = /obj/effect/projectile/tracer/emitter
impact_type = /obj/effect/projectile/impact/emitter
-/obj/item/projectile/beam/pointdefense
+/obj/projectile/beam/pointdefense
name = "point defense salvo"
icon_state = "laser"
damage = 15
diff --git a/code/modules/projectiles/projectile/beam/beams_vr.dm b/code/modules/projectiles/projectile/beam/beams_vr.dm
index b2f76321665..7e2e9e04484 100644
--- a/code/modules/projectiles/projectile/beam/beams_vr.dm
+++ b/code/modules/projectiles/projectile/beam/beams_vr.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/beam/disable
+/obj/projectile/beam/disable
name = "disabler beam"
icon_state = "omnilaser"
nodamage = 1
@@ -11,10 +11,10 @@
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
-/obj/item/projectile/beam/stun
+/obj/projectile/beam/stun
agony = 35
-/obj/item/projectile/beam/energy_net
+/obj/projectile/beam/energy_net
name = "energy net projection"
icon_state = "xray"
nodamage = 1
@@ -26,15 +26,15 @@
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
-/obj/item/projectile/beam/energy_net/on_hit(var/atom/netted)
+/obj/projectile/beam/energy_net/on_hit(var/atom/netted)
do_net(netted)
..()
-/obj/item/projectile/beam/energy_net/proc/do_net(var/mob/M)
+/obj/projectile/beam/energy_net/proc/do_net(var/mob/M)
var/obj/item/energy_net/net = new (get_turf(M))
net.throw_impact(M)
-/obj/item/projectile/beam/stun/blue
+/obj/projectile/beam/stun/blue
icon_state = "bluelaser"
light_color = "#0066FF"
@@ -42,14 +42,14 @@
tracer_type = /obj/effect/projectile/tracer/laser_blue
impact_type = /obj/effect/projectile/impact/laser_blue
-/obj/item/projectile/beam/medigun
+/obj/projectile/beam/medigun
name = "healing beam"
icon_state = "healbeam"
damage = 0 //stops it damaging walls
nodamage = TRUE
no_attack_log = TRUE
damage_type = BURN
- check_armour = "laser"
+ damage_flag = ARMOR_LASER
light_color = "#80F5FF"
combustion = FALSE
@@ -58,7 +58,7 @@
tracer_type = /obj/effect/projectile/tracer/medigun
impact_type = /obj/effect/projectile/impact/medigun
-/obj/item/projectile/beam/medigun/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/beam/medigun/on_hit(var/atom/target, var/blocked = 0)
if(istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/M = target
if(M.health < M.maxHealth)
diff --git a/code/modules/projectiles/projectile/beam/blaster.dm b/code/modules/projectiles/projectile/beam/blaster.dm
index 4a8961c8038..cf6cc0b71c7 100644
--- a/code/modules/projectiles/projectile/beam/blaster.dm
+++ b/code/modules/projectiles/projectile/beam/blaster.dm
@@ -1,9 +1,9 @@
-/obj/item/projectile/beam/blaster
+/obj/projectile/beam/blaster
hitscan = FALSE
icon_state = "laser"
damage = 20
damage_type = BURN
- check_armour = "laser"
+ damage_flag = ARMOR_LASER
-/obj/item/projectile/beam/blaster/pellet
+/obj/projectile/beam/blaster/pellet
damage = 15
diff --git a/code/modules/projectiles/projectile/blob.dm b/code/modules/projectiles/projectile/blob.dm
index e252218774f..6b643c160f2 100644
--- a/code/modules/projectiles/projectile/blob.dm
+++ b/code/modules/projectiles/projectile/blob.dm
@@ -1,31 +1,31 @@
-/obj/item/projectile/energy/blob //Not super strong.
+/obj/projectile/energy/blob //Not super strong.
name = "spore"
icon_state = "declone"
damage = 3
armor_penetration = 40
damage_type = BRUTE
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_BLOB
fire_sound = 'sound/effects/slime_squish.ogg'
var/splatter = FALSE // Will this make a cloud of reagents?
var/splatter_volume = 5 // The volume of its chemical container, for said cloud of reagents.
var/list/my_chems = list("mold")
-/obj/item/projectile/energy/blob/splattering
+/obj/projectile/energy/blob/splattering
splatter = TRUE
-/obj/item/projectile/energy/blob/Initialize(mapload)
+/obj/projectile/energy/blob/Initialize(mapload)
. = ..()
if(splatter)
create_reagents(splatter_volume)
ready_chemicals()
-/obj/item/projectile/energy/blob/Destroy()
+/obj/projectile/energy/blob/Destroy()
qdel(reagents)
reagents = null
..()
-/obj/item/projectile/energy/blob/on_impact(var/atom/A)
+/obj/projectile/energy/blob/on_impact(var/atom/A)
if(splatter)
var/turf/location = get_turf(src)
var/datum/effect_system/smoke_spread/chem/S = new /datum/effect_system/smoke_spread/chem
@@ -36,37 +36,37 @@
S.start()
..()
-/obj/item/projectile/energy/blob/proc/ready_chemicals()
+/obj/projectile/energy/blob/proc/ready_chemicals()
if(reagents)
var/reagent_vol = (round((splatter_volume / my_chems.len) * 100) / 100) //Cut it at the hundreds place, please.
for(var/reagent in my_chems)
reagents.add_reagent(reagent, reagent_vol)
-/obj/item/projectile/energy/blob/toxic
+/obj/projectile/energy/blob/toxic
damage_type = TOX
- check_armour = "bio"
+ damage_flag = ARMOR_BIO
my_chems = list("amatoxin")
-/obj/item/projectile/energy/blob/toxic/splattering
+/obj/projectile/energy/blob/toxic/splattering
splatter = TRUE
-/obj/item/projectile/energy/blob/acid
+/obj/projectile/energy/blob/acid
damage_type = BURN
- check_armour = "bio"
+ damage_flag = ARMOR_BIO
my_chems = list("sacid", "mold")
-/obj/item/projectile/energy/blob/acid/splattering
+/obj/projectile/energy/blob/acid/splattering
splatter = TRUE
-/obj/item/projectile/energy/blob/combustible
+/obj/projectile/energy/blob/combustible
splatter = TRUE
flammability = 0.25
my_chems = list("fuel", "mold")
-/obj/item/projectile/energy/blob/freezing
+/obj/projectile/energy/blob/freezing
my_chems = list("frostoil")
modifier_type_to_apply = /datum/modifier/chilled
modifier_duration = 1 MINUTE
-/obj/item/projectile/energy/blob/freezing/splattering
+/obj/projectile/energy/blob/freezing/splattering
splatter = TRUE
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index 0ec833441a4..88d74c2abc8 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -1,11 +1,11 @@
-/obj/item/projectile/bullet
+/obj/projectile/bullet
name = "bullet"
icon_state = "bullet"
fire_sound = 'sound/weapons/weaponsounds_rifleshot.ogg'
damage = 60
damage_type = BRUTE
nodamage = 0
- check_armour = "bullet"
+ damage_flag = ARMOR_BULLET
embed_chance = 20 //Modified in the actual embed process, but this should keep embed chance about the same
sharp = 1
var/mob_passthrough_check = 0
@@ -16,25 +16,25 @@
'sound/weapons/guns/ricochet3.ogg', 'sound/weapons/guns/ricochet4.ogg')
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_BULLET_MEAT, BULLET_IMPACT_METAL = SOUNDS_BULLET_METAL)
-/obj/item/projectile/bullet/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/bullet/on_hit(var/atom/target, var/blocked = 0)
if (..(target, blocked))
var/mob/living/L = target
shake_camera(L, 3, 2)
-/obj/item/projectile/bullet/projectile_attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier)
+/obj/projectile/bullet/projectile_attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier)
if(penetrating > 0 && damage > 20 && prob(damage))
mob_passthrough_check = 1
else
mob_passthrough_check = 0
return ..()
-/obj/item/projectile/bullet/can_embed()
+/obj/projectile/bullet/can_embed()
//prevent embedding if the projectile is passing through the mob
if(mob_passthrough_check)
return 0
return ..()
-/obj/item/projectile/bullet/check_penetrate(var/atom/A)
+/obj/projectile/bullet/check_penetrate(var/atom/A)
if(!A || !A.density) return 1 //if whatever it was got destroyed when we hit it, then I guess we can just keep going
if(istype(A, /obj/mecha))
@@ -68,61 +68,61 @@
/* short-casing projectiles, like the kind used in pistols or SMGs */
-/obj/item/projectile/bullet/pistol // 9mm pistols and most SMGs. Sacrifice power for capacity.
+/obj/projectile/bullet/pistol // 9mm pistols and most SMGs. Sacrifice power for capacity.
fire_sound = 'sound/weapons/weaponsounds_smallpistolshot.ogg'
damage = 20
-/obj/item/projectile/bullet/pistol/lap //Light Armor Piercing
+/obj/projectile/bullet/pistol/lap //Light Armor Piercing
damage = 20
armor_penetration = 10
-/obj/item/projectile/bullet/pistol/ap
+/obj/projectile/bullet/pistol/ap
damage = 15
armor_penetration = 30
-/obj/item/projectile/bullet/pistol/hp
+/obj/projectile/bullet/pistol/hp
damage = 25
armor_penetration = -50
-/obj/item/projectile/bullet/pistol/hunter
+/obj/projectile/bullet/pistol/hunter
damage = 15
SA_bonus_damage = 25 // 40 total against animals
SA_vulnerability = MOB_CLASS_ANIMAL
embed_chance = -1
-/obj/item/projectile/bullet/pistol/silver
+/obj/projectile/bullet/pistol/silver
damage = 15
SA_bonus_damage = 25 // 40 total against demons
SA_vulnerability = MOB_CLASS_DEMONIC
embed_chance = -1
holy = TRUE
-/obj/item/projectile/bullet/pistol/medium // .45 (and maybe .40 if it ever gets added) caliber security pistols. Balance between capacity and power.
+/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
-/obj/item/projectile/bullet/pistol/medium/ap
+/obj/projectile/bullet/pistol/medium/ap
damage = 20
armor_penetration = 15
-/obj/item/projectile/bullet/pistol/medium/hp
+/obj/projectile/bullet/pistol/medium/hp
damage = 30
armor_penetration = -50
-/obj/item/projectile/bullet/pistol/medium/hunter
+/obj/projectile/bullet/pistol/medium/hunter
damage = 15
SA_bonus_damage = 45 // 60 total against animals
SA_vulnerability = MOB_CLASS_ANIMAL
embed_chance = -1
-/obj/item/projectile/bullet/pistol/medium/silver
+/obj/projectile/bullet/pistol/medium/silver
damage = 15
SA_bonus_damage = 45 // 60 total against demons
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
embed_chance = -1
holy = TRUE
-/obj/item/projectile/bullet/pistol/medium/ap/suppressor // adminspawn only
+/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
@@ -132,14 +132,14 @@
speed = 0.4 // if the pathfinder gets a funny burst rifle, they deserve a rival
// that's 2x projectile speed btw
-/obj/item/projectile/bullet/pistol/medium/ap/suppressor/turbo // spicy boys
+/obj/projectile/bullet/pistol/medium/ap/suppressor/turbo // spicy boys
speed = 0.2 // this is 4x projectile speed
-/obj/item/projectile/bullet/pistol/strong // .357 and .44 caliber stuff. High power pistols like the Mateba or Desert Eagle. Sacrifice capacity for power.
+/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
-/obj/item/projectile/bullet/pistol/strong/silver //Because all Demons need to die
+/obj/projectile/bullet/pistol/strong/silver //Because all Demons need to die
fire_sound = 'sound/weapons/weaponsounds_heavypistolshot.ogg'
damage = 40
SA_bonus_damage = 80 // 120 total against demons
@@ -147,24 +147,24 @@
embed_chance = -1
holy = TRUE
-/obj/item/projectile/bullet/pistol/rubber/strong // "Rubber" bullets for high power pistols.
+/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
agony = 60
embed_chance = 0
sharp = 0
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
-/obj/item/projectile/bullet/pistol/rubber // "Rubber" bullets for all other pistols.
+/obj/projectile/bullet/pistol/rubber // "Rubber" bullets for all other pistols.
name = "rubber bullet"
damage = 5
agony = 40
embed_chance = 0
sharp = 0
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
fire_sound ='sound/weapons/weaponsounds_smallpistolshot.ogg' // It may be rubber shots but it's still a gun homie it shouldn't be as pathetic as it was
-/obj/item/projectile/bullet/pistol/spin // Special weak ammo for Service Spin mode.
+/obj/projectile/bullet/pistol/spin // Special weak ammo for Service Spin mode.
fire_sound = 'sound/weapons/weaponsounds_smallpistolshot.ogg'
damage = 5
SA_bonus_damage = 10 // 15 total against demons
@@ -173,23 +173,23 @@
/* shotgun projectiles */
-/obj/item/projectile/bullet/shotgun
+/obj/projectile/bullet/shotgun
name = "slug"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
damage = 50
armor_penetration = 15
-/obj/item/projectile/bullet/shotgun/beanbag //because beanbags are not bullets
+/obj/projectile/bullet/shotgun/beanbag //because beanbags are not bullets
name = "beanbag"
damage = 20
agony = 60
embed_chance = 0
sharp = 0
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
//Should do about 80 damage at 1 tile distance (adjacent), and 50 damage at 3 tiles distance.
//Overall less damage than slugs in exchange for more damage at very close range and more embedding
-/obj/item/projectile/bullet/pellet/shotgun
+/obj/projectile/bullet/pellet/shotgun
name = "shrapnel"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
damage = 13
@@ -197,21 +197,21 @@
range_step = 1
spread_step = 10
-/obj/item/projectile/bullet/pellet/shotgun_improvised
+/obj/projectile/bullet/pellet/shotgun_improvised
name = "shrapnel"
damage = 1
pellets = 10
range_step = 1
spread_step = 10
-/obj/item/projectile/bullet/pellet/shotgun/flak
+/obj/projectile/bullet/pellet/shotgun/flak
damage = 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
// This is my boomstick,
-/obj/item/projectile/bullet/pellet/shotgun/silver
+/obj/projectile/bullet/pellet/shotgun/silver
name = "shrapnel"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
damage = 10
@@ -223,7 +223,7 @@
spread_step = 20
holy = TRUE
-/obj/item/projectile/bullet/shotgun/stake
+/obj/projectile/bullet/shotgun/stake
name = "stake"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
damage = 50
@@ -233,100 +233,100 @@
holy = TRUE
//EMP shotgun 'slug', it's basically a beanbag that pops a tiny emp when it hits. //Not currently used
-/obj/item/projectile/bullet/shotgun/ion
+/obj/projectile/bullet/shotgun/ion
name = "ion slug"
fire_sound = 'sound/weapons/Laser.ogg' // Really? We got nothing better than this?
damage = 15
embed_chance = 0
sharp = 0
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
combustion = FALSE
-/obj/item/projectile/bullet/shotgun/ion/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/bullet/shotgun/ion/on_hit(var/atom/target, var/blocked = 0)
..()
empulse(target, 0, 0, 2, 0) //Only affects what it hits
return 1
//Frag shot
-/obj/item/projectile/bullet/shotgun/frag12
+/obj/projectile/bullet/shotgun/frag12
name ="frag12 slug"
damage = 25
-/obj/item/projectile/bullet/shotgun/frag12/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/shotgun/frag12/on_hit(atom/target, blocked = FALSE)
..()
explosion(target, -1, 0, 1)
return 1
/* "Rifle" rounds */
-/obj/item/projectile/bullet/rifle
+/obj/projectile/bullet/rifle
fire_sound = 'sound/weapons/Gunshot_generic_rifle.ogg'
armor_penetration = 15
penetrating = 1
-/obj/item/projectile/bullet/rifle/a762
+/obj/projectile/bullet/rifle/a762
fire_sound = 'sound/weapons/weaponsounds_heavyrifleshot.ogg'
damage = 35
-/obj/item/projectile/bullet/rifle/a762/sniper // Hitscan specifically for sniper ammo; to be implimented at a later date, probably for the SVD. -Ace
+/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/item/projectile/bullet/rifle/a762/ap
+/obj/projectile/bullet/rifle/a762/ap
damage = 30
armor_penetration = 50 // At 30 or more armor, this will do more damage than standard rounds.
-/obj/item/projectile/bullet/rifle/a762/ap/silver
+/obj/projectile/bullet/rifle/a762/ap/silver
damage = 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/item/projectile/bullet/rifle/a762/hp
+/obj/projectile/bullet/rifle/a762/hp
damage = 40
armor_penetration = -50
penetrating = 0
-/obj/item/projectile/bullet/rifle/a762/hunter // Optimized for killing simple animals and not people, because Balance(tm)
+/obj/projectile/bullet/rifle/a762/hunter // Optimized for killing simple animals and not people, because Balance(tm)
damage = 25
SA_bonus_damage = 45 // 70 total on animals.
SA_vulnerability = MOB_CLASS_ANIMAL
embed_chance = -1
-/obj/item/projectile/bullet/rifle/a762/sniperhunter
+/obj/projectile/bullet/rifle/a762/sniperhunter
damage = 25
SA_bonus_damage = 45 // 70 total on animals.
SA_vulnerability = MOB_CLASS_ANIMAL
embed_chance = -1
speed = 0.4
-/obj/item/projectile/bullet/rifle/a762/silver // Hunting Demons with bolt action rifles.
+/obj/projectile/bullet/rifle/a762/silver // Hunting Demons with bolt action rifles.
damage = 20
SA_bonus_damage = 50 // 70 total on animals.
SA_vulnerability = MOB_CLASS_DEMONIC
holy = TRUE
-/obj/item/projectile/bullet/rifle/a545
+/obj/projectile/bullet/rifle/a545
fire_sound = 'sound/weapons/weaponsounds_rifleshot.ogg'
damage = 25
-/obj/item/projectile/bullet/rifle/a545/ap
+/obj/projectile/bullet/rifle/a545/ap
damage = 20
armor_penetration = 50 // At 40 or more armor, this will do more damage than standard rounds.
-/obj/item/projectile/bullet/rifle/a545/hp
+/obj/projectile/bullet/rifle/a545/hp
damage = 35
armor_penetration = -50
penetrating = 0
-/obj/item/projectile/bullet/rifle/a545/hunter
+/obj/projectile/bullet/rifle/a545/hunter
damage = 15
SA_bonus_damage = 35 // 50 total on animals.
SA_vulnerability = MOB_CLASS_ANIMAL
-/obj/item/projectile/bullet/rifle/a145 // 14.5×114mm is bigger than a .50 BMG round.
+/obj/projectile/bullet/rifle/a145 // 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
stun = 3
@@ -337,17 +337,17 @@
/* Miscellaneous */
-/obj/item/projectile/bullet/suffocationbullet//How does this even work?
+/obj/projectile/bullet/suffocationbullet//How does this even work?
name = "co bullet"
damage = 20
damage_type = OXY
-/obj/item/projectile/bullet/cyanideround
+/obj/projectile/bullet/cyanideround
name = "poison bullet"
damage = 40
damage_type = TOX
-/obj/item/projectile/bullet/cyanideround/jezzail
+/obj/projectile/bullet/cyanideround/jezzail
name = "toxic penetrator shard"
damage = 25
armor_penetration = 20
@@ -355,19 +355,19 @@
embed_chance = 1
damage_type = TOX
-/obj/item/projectile/bullet/burstbullet
+/obj/projectile/bullet/burstbullet
name = "exploding bullet"
fire_sound = 'sound/soundbytes/effects/explosion/explosion1.ogg'
damage = 20
embed_chance = 0
edge = 1
-/obj/item/projectile/bullet/burstbullet/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/bullet/burstbullet/on_hit(var/atom/target, var/blocked = 0)
if(isturf(target))
explosion(target, -1, 0, 2)
..()
-/obj/item/projectile/bullet/burstbullet/service
+/obj/projectile/bullet/burstbullet/service
name = "charge bullet"
fire_sound = 'sound/soundbytes/effects/explosion/explosion1.ogg'
damage = 20
@@ -377,33 +377,33 @@
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
holy = TRUE
-/obj/item/projectile/bullet/burstbullet/service/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/bullet/burstbullet/service/on_hit(var/atom/target, var/blocked = 0)
if(isturf(target))
explosion(target, 0, 1, 2)
..()
/* Black Powder */
-/obj/item/projectile/bullet/musket // Big Slow and bad against armor.
+/obj/projectile/bullet/musket // Big Slow and bad against armor.
fire_sound = 'sound/weapons/weaponsounds_heavypistolshot.ogg'
damage = 60
speed = 1.2
armor_penetration = -50
-/obj/item/projectile/bullet/musket/silver // What its a classic
+/obj/projectile/bullet/musket/silver // What its a classic
damage = 25
SA_bonus_damage = 75
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
embed_chance = -1
holy = TRUE
-/obj/item/projectile/bullet/pellet/blunderbuss //More Damage at close range greater falloff
+/obj/projectile/bullet/pellet/blunderbuss //More Damage at close range greater falloff
damage = 10
pellets = 8
range_step = 0.5 //Very quick falloff
spread_step = 30
-/obj/item/projectile/bullet/pellet/blunderbuss/silver
+/obj/projectile/bullet/pellet/blunderbuss/silver
damage = 5
SA_bonus_damage = 15
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
@@ -411,29 +411,29 @@
holy = TRUE
//10 Gauge Shot
-/obj/item/projectile/bullet/heavy_shotgun
+/obj/projectile/bullet/heavy_shotgun
name = "heavy slug"
fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg'
damage = 60
armor_penetration = 25
-/obj/item/projectile/bullet/pellet/heavy_shotgun //I want this to use similar calcuations to blunderbuss shot for falloff.
+/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.
range_step = 0.75
spread_step = 30
armor_penetration = 10
-/obj/item/projectile/bullet/pellet/heavy_shotgun/silver
+/obj/projectile/bullet/pellet/heavy_shotgun/silver
damage = 3
SA_bonus_damage = 3
SA_vulnerability = MOB_CLASS_DEMONIC | MOB_CLASS_ABERRATION
holy = TRUE
//Special 10g rounds for Grit, since I don't want ALL 10g to do this:
-/obj/item/projectile/bullet/heavy_shotgun/grit
+/obj/projectile/bullet/heavy_shotgun/grit
name = "custom heavy slug"
-/obj/item/projectile/bullet/heavy_shotgun/grit/on_hit(var/atom/movable/target, var/blocked = 0)
+/obj/projectile/bullet/heavy_shotgun/grit/on_hit(var/atom/movable/target, var/blocked = 0)
if(isliving(target))
var/mob/living/L = target
var/throwdir = get_dir(firer,L)
@@ -444,11 +444,11 @@
return 1
-/obj/item/projectile/bullet/pellet/heavy_shotgun/grit
+/obj/projectile/bullet/pellet/heavy_shotgun/grit
name = "heavy buckshot"
range_step = 1
-/obj/item/projectile/bullet/pellet/heavy_shotgun/grit/on_hit(var/atom/movable/target, var/blocked = 0)
+/obj/projectile/bullet/pellet/heavy_shotgun/grit/on_hit(var/atom/movable/target, var/blocked = 0)
if(isliving(target))
var/mob/living/L = target
var/throwdir = get_dir(firer,L)
@@ -461,7 +461,7 @@
/* Incendiary */
-/obj/item/projectile/bullet/incendiary
+/obj/projectile/bullet/incendiary
name = "incendiary bullet"
icon_state = "bullet_alt"
damage = 15
@@ -469,7 +469,7 @@
incendiary = 1
flammability = 2
-/obj/item/projectile/bullet/incendiary/shotgun
+/obj/projectile/bullet/incendiary/shotgun
name = "dragonsbreath pellet"
icon_state = "bullet_alt"
damage = 10
@@ -477,7 +477,7 @@
incendiary = 1
flammability = 2
-/obj/item/projectile/bullet/incendiary/flamethrower
+/obj/projectile/bullet/incendiary/flamethrower
name = "ball of fire"
desc = "Don't stand in the fire."
icon_state = "fireball"
@@ -489,16 +489,16 @@
range = 4
vacuum_traversal = 0
-/obj/item/projectile/bullet/incendiary/flamethrower/large
+/obj/projectile/bullet/incendiary/flamethrower/large
damage = 15
range = 6
/* Practice rounds and blanks */
-/obj/item/projectile/bullet/practice
+/obj/projectile/bullet/practice
damage = 5
-/obj/item/projectile/bullet/pistol/cap // Just the primer, such as a cap gun.
+/obj/projectile/bullet/pistol/cap // Just the primer, such as a cap gun.
name = "cap"
damage_type = HALLOSS
fire_sound = 'sound/effects/snap.ogg'
@@ -509,11 +509,11 @@
combustion = FALSE
-/obj/item/projectile/bullet/pistol/cap/process(delta_time)
+/obj/projectile/bullet/pistol/cap/process(delta_time)
loc = null
qdel(src)
-/obj/item/projectile/bullet/blank
+/obj/projectile/bullet/blank
name = "blank"
damage_type = HALLOSS
fire_sound = 'sound/weapons/weaponsounds_rifleshot.ogg' // Blanks still make loud noises.
@@ -522,6 +522,6 @@
embed_chance = 0
sharp = 0
-/obj/item/projectile/bullet/blank/cap/process(delta_time)
+/obj/projectile/bullet/blank/cap/process(delta_time)
loc = null
qdel(src)
diff --git a/code/modules/projectiles/projectile/bullets_vr.dm b/code/modules/projectiles/projectile/bullets_vr.dm
index 536b35626a6..257cb4aef5e 100644
--- a/code/modules/projectiles/projectile/bullets_vr.dm
+++ b/code/modules/projectiles/projectile/bullets_vr.dm
@@ -1,11 +1,11 @@
-/obj/item/projectile/bullet/pistol/rubber/strong //"rubber" bullets for revolvers and matebas
+/obj/projectile/bullet/pistol/rubber/strong //"rubber" bullets for revolvers and matebas
damage = 10
agony = 60
embed_chance = 0
sharp = 0
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
-/obj/item/projectile/energy/flash/strong
+/obj/projectile/energy/flash/strong
name = "chemical shell"
icon_state = "bullet"
damage = 10
@@ -13,7 +13,7 @@
flash_strength = 15
brightness = 15
-/obj/item/projectile/energy/electrode/stunshot/strong
+/obj/projectile/energy/electrode/stunshot/strong
name = "stunshot"
icon_state = "bullet"
damage = 10
diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm
index e8176a3a4cd..1162957fb57 100644
--- a/code/modules/projectiles/projectile/change.dm
+++ b/code/modules/projectiles/projectile/change.dm
@@ -1,17 +1,17 @@
-/obj/item/projectile/change
+/obj/projectile/change
name = "bolt of change"
icon_state = "ice_1"
damage = 0
damage_type = BURN
nodamage = 1
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
combustion = FALSE
-/obj/item/projectile/change/on_hit(var/atom/change)
+/obj/projectile/change/on_hit(var/atom/change)
wabbajack(change)
-/obj/item/projectile/change/proc/wabbajack(var/mob/M)
+/obj/projectile/change/proc/wabbajack(var/mob/M)
if(istype(M, /mob/living) && M.stat != DEAD)
if(M.transforming)
return
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index dcb1e8598b2..8ff4f02a210 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -1,13 +1,13 @@
-/obj/item/projectile/energy
+/obj/projectile/energy
name = "energy"
icon_state = "spark"
damage = 0
damage_type = BURN
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
var/flash_strength = 10
//releases a burst of light on impact or after travelling a distance
-/obj/item/projectile/energy/flash
+/obj/projectile/energy/flash
name = "chemical shell"
icon_state = "bullet"
fire_sound = 'sound/weapons/gunshot_pathetic.ogg'
@@ -17,7 +17,7 @@
var/brightness = 7
var/light_colour = "#ffffff"
-/obj/item/projectile/energy/flash/on_impact(var/atom/A)
+/obj/projectile/energy/flash/on_impact(var/atom/A)
var/turf/T = flash_range? src.loc : get_turf(A)
if(!istype(T)) return
@@ -47,7 +47,7 @@
new /obj/effect/particle_effect/smoke/illumination(T, 5, brightness, brightness, light_colour)
//No longer blinds, and flash strength has been greatly lowered but now set's on fire.
-/obj/item/projectile/energy/flash/flare
+/obj/projectile/energy/flash/flare
fire_sound = 'sound/weapons/grenade_launcher.ogg'
damage = 20
flash_range = 1
@@ -56,7 +56,7 @@
incendiary = 1
flammability = 2
-/obj/item/projectile/energy/flash/flare/on_impact(var/atom/A)
+/obj/projectile/energy/flash/flare/on_impact(var/atom/A)
light_colour = pick("#e58775", "#ffffff", "#90ff90", "#a09030")
..() //initial flash
@@ -64,7 +64,7 @@
//residual illumination
new /obj/effect/particle_effect/smoke/illumination(src.loc, rand(190,240) SECONDS, 8, 3, light_colour) //same lighting power as flare
-/obj/item/projectile/energy/electrode
+/obj/projectile/energy/electrode
name = "electrode"
icon_state = "spark"
fire_sound = 'sound/weapons/Gunshot2.ogg'
@@ -75,19 +75,19 @@
light_color = "#FFFFFF"
//Damage will be handled on the MOB side, to prevent window shattering.
-/obj/item/projectile/energy/electrode/strong
+/obj/projectile/energy/electrode/strong
agony = 55
-/obj/item/projectile/energy/electrode/stunshot
+/obj/projectile/energy/electrode/stunshot
name = "stunshot"
damage = 5
agony = 80
-/obj/item/projectile/energy/electrode/goldenbolt // MIGHTY GOLDEN BOLT
+/obj/projectile/energy/electrode/goldenbolt // MIGHTY GOLDEN BOLT
name = "taser bolt"
agony = 80
-/obj/item/projectile/energy/declone
+/obj/projectile/energy/declone
name = "declone"
icon_state = "declone"
fire_sound = 'sound/weapons/pulse3.ogg'
@@ -100,17 +100,17 @@
combustion = FALSE
-/obj/item/projectile/energy/dart
+/obj/projectile/energy/dart
name = "dart"
icon_state = "toxin"
damage = 5
damage_type = TOX
agony = 120
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
combustion = FALSE
-/obj/item/projectile/energy/bolt
+/obj/projectile/energy/bolt
name = "bolt"
icon_state = "cbbolt"
damage = 10
@@ -118,42 +118,42 @@
agony = 40
stutter = 10
-/obj/item/projectile/energy/bolt/large
+/obj/projectile/energy/bolt/large
name = "largebolt"
damage = 20
-/obj/item/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.
+/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_type = BURN
agony = 10
- check_armour = "bio"
+ damage_flag = ARMOR_BIO
armor_penetration = 25 // It's acid
combustion = FALSE
-/obj/item/projectile/energy/neurotoxin
+/obj/projectile/energy/neurotoxin
name = "neurotoxic spit"
icon_state = "neurotoxin"
damage = 5
damage_type = BIOACID
agony = 80
- check_armour = "bio"
+ damage_flag = ARMOR_BIO
armor_penetration = 25 // It's acid-based
combustion = FALSE
-/obj/item/projectile/energy/neurotoxin/toxic //New alien mob projectile to match the player-variant's projectiles.
+/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_type = BIOACID
agony = 20
- check_armour = "bio"
+ damage_flag = ARMOR_BIO
armor_penetration = 25 // It's acid-based
-/obj/item/projectile/energy/phoron
+/obj/projectile/energy/phoron
name = "phoron bolt"
icon_state = "energy"
fire_sound = 'sound/effects/stealthoff.ogg'
@@ -166,7 +166,7 @@
combustion = FALSE
-/obj/item/projectile/energy/plasmastun
+/obj/projectile/energy/plasmastun
name = "plasma pulse"
icon_state = "plasma_stun"
fire_sound = 'sound/weapons/blaster.ogg'
@@ -177,7 +177,7 @@
damage_type = BURN
vacuum_traversal = 0 //Projectile disappears in empty space
-/obj/item/projectile/energy/plasmastun/proc/bang(var/mob/living/carbon/M)
+/obj/projectile/energy/plasmastun/proc/bang(var/mob/living/carbon/M)
to_chat(M, "You hear a loud roar.")
playsound(M.loc, 'sound/effects/bang.ogg', 50, 1)
@@ -202,11 +202,11 @@
to_chat(M, "Your ears start to ring!")
M.update_icons() //Just to apply matrix transform for laying asap
-/obj/item/projectile/energy/plasmastun/on_hit(var/atom/target)
+/obj/projectile/energy/plasmastun/on_hit(var/atom/target)
bang(target)
. = ..()
-/obj/item/projectile/energy/blue_pellet
+/obj/projectile/energy/blue_pellet
name = "suppressive pellet"
icon_state = "blue_pellet"
fire_sound = 'sound/weapons/Laser.ogg'
@@ -214,13 +214,13 @@
armor_penetration = 75
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GLASS | ATOM_PASS_GRILLE
damage_type = BURN
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
light_color = "#0000FF"
embed_chance = 0
muzzle_type = /obj/effect/projectile/muzzle/pulse
-/obj/item/projectile/energy/phase
+/obj/projectile/energy/phase
name = "phase wave"
icon_state = "phase"
range = 25
@@ -228,15 +228,15 @@
SA_bonus_damage = 45 // 50 total on animals
SA_vulnerability = MOB_CLASS_ANIMAL
-/obj/item/projectile/energy/phase/light
+/obj/projectile/energy/phase/light
range = 15
SA_bonus_damage = 35 // 40 total on animals
-/obj/item/projectile/energy/phase/heavy
+/obj/projectile/energy/phase/heavy
range = 20
SA_bonus_damage = 55 // 60 total on animals
-/obj/item/projectile/energy/phase/heavy/cannon
+/obj/projectile/energy/phase/heavy/cannon
range = 30
damage = 15
SA_bonus_damage = 60 // 75 total on animals
diff --git a/code/modules/projectiles/projectile/energy_vr.dm b/code/modules/projectiles/projectile/energy_vr.dm
index 576ef237ef4..00d5dcca9a7 100644
--- a/code/modules/projectiles/projectile/energy_vr.dm
+++ b/code/modules/projectiles/projectile/energy_vr.dm
@@ -1,11 +1,11 @@
-/obj/item/projectile/energy/electrode/strong
+/obj/projectile/energy/electrode/strong
agony = 70
-/obj/item/projectile/energy
+/obj/projectile/energy
flash_strength = 10
-/obj/item/projectile/energy/flash
+/obj/projectile/energy/flash
flash_range = 1
-/obj/item/projectile/energy/flash/flare
+/obj/projectile/energy/flash/flare
flash_range = 2
diff --git a/code/modules/projectiles/projectile/explosive.dm b/code/modules/projectiles/projectile/explosive.dm
index 1ca23a5e81f..05d9d178681 100644
--- a/code/modules/projectiles/projectile/explosive.dm
+++ b/code/modules/projectiles/projectile/explosive.dm
@@ -1,6 +1,6 @@
-/obj/item/projectile/bullet/srmrocket
+/obj/projectile/bullet/srmrocket
name ="SRM-8 Rocket"
desc = "Boom"
icon = 'icons/obj/grenade.dmi'
@@ -8,7 +8,7 @@
damage = 30 //Meaty whack. *Chuckles*
movable_flags = MOVABLE_NO_THROW_SPIN | MOVABLE_NO_THROW_DAMAGE_SCALING | MOVABLE_NO_THROW_SPEED_SCALING
-/obj/item/projectile/bullet/srmrocket/on_hit(atom/target, blocked=0)
+/obj/projectile/bullet/srmrocket/on_hit(atom/target, blocked=0)
..()
if(!isliving(target)) //if the target isn't alive, so is a wall or something
explosion(target, 0, 1, 2, 4)
@@ -17,10 +17,10 @@
return 1
-/obj/item/projectile/bullet/srmrocket/weak //Used in the jury rigged one.
+/obj/projectile/bullet/srmrocket/weak //Used in the jury rigged one.
damage = 10
-/obj/item/projectile/bullet/srmrocket/weak/on_hit(atom/target, blocked=0)
+/obj/projectile/bullet/srmrocket/weak/on_hit(atom/target, blocked=0)
..()
explosion(target, 0, 0, 2, 4)//No need to have a question.
return 1
diff --git a/code/modules/projectiles/projectile/force.dm b/code/modules/projectiles/projectile/force.dm
index d888e5495b3..a95cefff563 100644
--- a/code/modules/projectiles/projectile/force.dm
+++ b/code/modules/projectiles/projectile/force.dm
@@ -1,23 +1,23 @@
-/obj/item/projectile/forcebolt
+/obj/projectile/forcebolt
name = "force bolt"
icon = 'icons/obj/projectiles.dmi'
icon_state = "ice_1"
damage = 20
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
combustion = FALSE
-/obj/item/projectile/forcebolt/strong
+/obj/projectile/forcebolt/strong
name = "force bolt"
-/obj/item/projectile/forcebolt/on_hit(var/atom/movable/target, var/blocked = 0)
+/obj/projectile/forcebolt/on_hit(var/atom/movable/target, var/blocked = 0)
if(istype(target))
var/throwdir = get_dir(firer,target)
target.throw_at_old(get_edge_target_turf(target, throwdir),10,10)
return 1
/*
-/obj/item/projectile/forcebolt/strong/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/forcebolt/strong/on_hit(var/atom/target, var/blocked = 0)
// NONE OF THIS WORKS. DO NOT USE.
var/throwdir = null
diff --git a/code/modules/projectiles/projectile/hook.dm b/code/modules/projectiles/projectile/hook.dm
index bb82c84a8f3..d04dede60e0 100644
--- a/code/modules/projectiles/projectile/hook.dm
+++ b/code/modules/projectiles/projectile/hook.dm
@@ -2,7 +2,7 @@
* File containing special 'hook' projectiles. Function is dictated by the launcher's intent.
*/
-/obj/item/projectile/energy/hook
+/obj/projectile/energy/hook
name = "graviton sphere"
icon_state = "bluespace"
@@ -11,7 +11,7 @@
damage = 5
speed = 2
damage_type = BURN
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
armor_penetration = 15
var/impact_sound = 'sound/effects/uncloak.ogg'
@@ -27,7 +27,7 @@
var/list/help_messages = list("slaps", "pokes", "nudges", "bumps", "pinches")
var/done_mob_unique = FALSE // Has the projectile already done something to a mob?
-/obj/item/projectile/energy/hook/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
+/obj/projectile/energy/hook/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
var/expected_distance = get_dist(target, loc)
range = expected_distance // So the hook hits the ground if no mob is hit.
target_distance = expected_distance
@@ -38,15 +38,15 @@
if(launcher_intent)
switch(launcher_intent)
if(INTENT_HARM)
- check_armour = "bullet"
+ damage_flag = ARMOR_BULLET
damage *= 3
sharp = 1
agony = 20
if(INTENT_GRAB)
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
damage_type = HALLOSS
if(INTENT_DISARM)
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
if(prob(30)) // A chance for a successful hit to either knock someone down, or cause minor disorientation.
weaken = 1
else
@@ -58,14 +58,14 @@
..() // Does the regular launching stuff.
-/obj/item/projectile/energy/hook/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
+/obj/projectile/energy/hook/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
if(..())
perform_intent_unique(target)
-/obj/item/projectile/energy/hook/on_impact(var/atom/A)
+/obj/projectile/energy/hook/on_impact(var/atom/A)
perform_intent_unique(get_turf(A))
-/obj/item/projectile/energy/hook/proc/ranged_disarm(var/mob/living/carbon/human/H)
+/obj/projectile/energy/hook/proc/ranged_disarm(var/mob/living/carbon/human/H)
if(istype(H))
var/list/holding = list(H.get_active_held_item() = 60, H.get_inactive_held_item() = 40)
@@ -99,7 +99,7 @@
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
return
-/obj/item/projectile/energy/hook/proc/perform_intent_unique(atom/target)
+/obj/projectile/energy/hook/proc/perform_intent_unique(atom/target)
playsound(src, impact_sound, 40, 1)
var/success = FALSE
if(istype(target,/turf))
@@ -183,7 +183,7 @@
* Hook subtypes.
*/
-/obj/item/projectile/energy/hook/ring
+/obj/projectile/energy/hook/ring
name = "green orb"
icon_state = "green_laser"
beam_state = "n_beam"
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 62971925cc6..507121f0248 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -1,53 +1,53 @@
/obj/item/ammo_casing/magic
name = "magic casing"
desc = "I didn't even know magic needed ammo..."
- projectile_type = /obj/item/projectile/magic
+ projectile_type = /obj/projectile/magic
/*
/obj/item/ammo_casing/magic/change
- projectile_type = /obj/item/projectile/magic/change
+ projectile_type = /obj/projectile/magic/change
/obj/item/ammo_casing/magic/animate
- projectile_type = /obj/item/projectile/magic/animate
+ projectile_type = /obj/projectile/magic/animate
*/
/obj/item/ammo_casing/magic/heal
- projectile_type = /obj/item/projectile/magic/resurrection
+ projectile_type = /obj/projectile/magic/resurrection
/obj/item/ammo_casing/magic/death
- projectile_type = /obj/item/projectile/magic/death
+ projectile_type = /obj/projectile/magic/death
/obj/item/ammo_casing/magic/teleport
- projectile_type = /obj/item/projectile/magic/teleport
+ projectile_type = /obj/projectile/magic/teleport
/obj/item/ammo_casing/magic/door
- projectile_type = /obj/item/projectile/magic/door
+ projectile_type = /obj/projectile/magic/door
/obj/item/ammo_casing/magic/fireball
- projectile_type = /obj/item/projectile/magic/aoe/fireball
+ projectile_type = /obj/projectile/magic/aoe/fireball
/obj/item/ammo_casing/magic/chaos
- projectile_type = /obj/item/projectile/magic
+ projectile_type = /obj/projectile/magic
/obj/item/ammo_casing/magic/spellblade
- projectile_type = /obj/item/projectile/magic/spellblade
+ projectile_type = /obj/projectile/magic/spellblade
/obj/item/ammo_casing/magic/arcane_barrage
- projectile_type = /obj/item/projectile/magic/arcane_barrage
+ projectile_type = /obj/projectile/magic/arcane_barrage
/obj/item/ammo_casing/magic/honk
- projectile_type = /obj/item/projectile/bullet/honker
+ projectile_type = /obj/projectile/bullet/honker
/obj/item/ammo_casing/magic/locker
- projectile_type = /obj/item/projectile/magic/locker
+ projectile_type = /obj/projectile/magic/locker
//Spell book ammo casing
/obj/item/ammo_casing/magic/book
- projectile_type = /obj/item/projectile/magic/spellcard/book
+ projectile_type = /obj/projectile/magic/spellcard/book
/obj/item/ammo_casing/magic/book/spark
- projectile_type = /obj/item/projectile/magic/spellcard/book/spark
+ projectile_type = /obj/projectile/magic/spellcard/book/spark
/*
/obj/item/ammo_casing/magic/book/heal
- projectile_type = /obj/item/projectile/magic/spellcard/book/heal
+ projectile_type = /obj/projectile/magic/spellcard/book/heal
*/
/obj/item/ammo_casing/magic/book/shock
- projectile_type = /obj/item/projectile/magic/spellcard/book/shock
+ projectile_type = /obj/projectile/magic/spellcard/book/shock
diff --git a/code/modules/projectiles/projectile/magnetic.dm b/code/modules/projectiles/projectile/magnetic.dm
index 4b10df17ed3..bfb497f48da 100644
--- a/code/modules/projectiles/projectile/magnetic.dm
+++ b/code/modules/projectiles/projectile/magnetic.dm
@@ -1,5 +1,5 @@
// Rod for railguns. Slightly less nasty than the sniper round.
-/obj/item/projectile/bullet/magnetic
+/obj/projectile/bullet/magnetic
name = "rod"
icon_state = "rod"
fire_sound = 'sound/weapons/railgun.ogg'
@@ -9,26 +9,26 @@
penetrating = 5
armor_penetration = 70
-/obj/item/projectile/bullet/magnetic/slug
+/obj/projectile/bullet/magnetic/slug
name = "slug"
icon_state = "gauss_silenced"
damage = 75
armor_penetration = 90
-/obj/item/projectile/bullet/magnetic/flechette
+/obj/projectile/bullet/magnetic/flechette
name = "flechette"
icon_state = "flechette"
fire_sound = 'sound/weapons/rapidslice.ogg'
damage = 20
armor_penetration = 100
-/obj/item/projectile/bullet/magnetic/flechette/hunting
+/obj/projectile/bullet/magnetic/flechette/hunting
name = "shredder slug"
armor_penetration = 30
SA_bonus_damage = 40
SA_vulnerability = SA_ANIMAL
-/obj/item/projectile/bullet/magnetic/heated
+/obj/projectile/bullet/magnetic/heated
name = "slug"
icon_state = "gauss"
weaken = 0
@@ -37,14 +37,14 @@
damage_type = SEARING
embed_chance = 0
-/obj/item/projectile/bullet/magnetic/heated/weak
+/obj/projectile/bullet/magnetic/heated/weak
icon_state = "gauss_silenced"
damage = 15
agony = 5
embed_chance = 0
armor_penetration = 50
-/obj/item/projectile/bullet/magnetic/fuelrod
+/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.
@@ -63,7 +63,7 @@
var/detonate_mob = 0 //Will this fuelrod explode when it hits a mob?
var/energetic_impact = 0 //Does this fuelrod cause a bright flash on impact with a mob?
-/obj/item/projectile/bullet/magnetic/fuelrod/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) //Future-proofing. Special effects for impact.
+/obj/projectile/bullet/magnetic/fuelrod/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) //Future-proofing. Special effects for impact.
if(istype(target,/mob/living))
var/mob/living/V = target
if(detonate_mob)
@@ -87,7 +87,7 @@
return ..(target, blocked, def_zone)
-/obj/item/projectile/bullet/magnetic/fuelrod/on_impact(var/atom/A) //Future-proofing, again. In the event new fuel rods are introduced, and have special effects for when they stop flying.
+/obj/projectile/bullet/magnetic/fuelrod/on_impact(var/atom/A) //Future-proofing, again. In the event new fuel rods are introduced, and have special effects for when they stop flying.
if(src.loc)
if(detonate_travel && detonate_mob)
visible_message("\The [src] shatters in a violent explosion!")
@@ -97,14 +97,14 @@
explosion(src.loc, -1, 1, 2, 3)
..(A)
-/obj/item/projectile/bullet/magnetic/fuelrod/tritium
+/obj/projectile/bullet/magnetic/fuelrod/tritium
icon_state = "fuel-tritium"
damage = 100 //Much harder to get than tritium - needs mhydrogen
flammability = -1
armor_penetration = 50
penetrating = 3
-/obj/item/projectile/bullet/magnetic/fuelrod/phoron
+/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
@@ -115,7 +115,7 @@
irradiate = 20
detonate_mob = 1
-/obj/item/projectile/bullet/magnetic/fuelrod/supermatter
+/obj/projectile/bullet/magnetic/fuelrod/supermatter
name = "painfully incandescent fuel rod"
icon_state = "fuel-supermatter"
damage = 15 //it qdels things
@@ -131,27 +131,27 @@
detonate_mob = 1
energetic_impact = 1
-/obj/item/projectile/bullet/magnetic/fuelrod/supermatter/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) //You cannot touch the supermatter without disentigrating. Assumedly, this is true for condensed rods of it flying at relativistic speeds.
+/obj/projectile/bullet/magnetic/fuelrod/supermatter/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) //You cannot touch the supermatter without disentigrating. Assumedly, this is true for condensed rods of it flying at relativistic speeds.
if(istype(target,/turf/simulated/wall) || istype(target,/mob/living))
target.visible_message("The [src] burns a perfect hole through \the [target] with a blinding flash!")
playsound(target.loc, 'sound/effects/teleport.ogg', 40, 0)
return ..(target, blocked, def_zone)
-/obj/item/projectile/bullet/magnetic/fuelrod/supermatter/check_penetrate()
+/obj/projectile/bullet/magnetic/fuelrod/supermatter/check_penetrate()
return 1
-/obj/item/projectile/bullet/magnetic/bore
+/obj/projectile/bullet/magnetic/bore
name = "phorogenic blast"
icon_state = "purpleemitter"
damage = 20
incendiary = 1
armor_penetration = 20
penetrating = 0
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
irradiate = 20
range = 6
-/obj/item/projectile/bullet/magnetic/bore/Bump(atom/A, forced=0)
+/obj/projectile/bullet/magnetic/bore/Bump(atom/A, forced=0)
if(istype(A, /turf/simulated/mineral))
var/turf/simulated/mineral/MI = A
loc = get_turf(A) // Careful.
@@ -165,13 +165,13 @@
else
..()
-/obj/item/projectile/bullet/magnetic/bore/powerful
+/obj/projectile/bullet/magnetic/bore/powerful
name = "energetic phorogenic blast"
icon_state = "purpleemitter"
damage = 30
incendiary = 2
armor_penetration = 20
penetrating = 0
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
irradiate = 20
range = 12
diff --git a/code/modules/projectiles/projectile/pellets.dm b/code/modules/projectiles/projectile/pellets.dm
index e7a6022b103..61e9b45cda0 100644
--- a/code/modules/projectiles/projectile/pellets.dm
+++ b/code/modules/projectiles/projectile/pellets.dm
@@ -1,6 +1,6 @@
//For projectiles that actually represent clouds of projectiles
-/obj/item/projectile/bullet/pellet
+/obj/projectile/bullet/pellet
name = "shrapnel" //'shrapnel' sounds more dangerous (i.e. cooler) than 'pellet'
damage = 20
//icon_state = "bullet" //TODO: would be nice to have it's own icon state
@@ -9,11 +9,11 @@
var/base_spread = 90 //lower means the pellets spread more across body parts. If zero then this is considered a shrapnel explosion instead of a shrapnel cone
var/spread_step = 10 //higher means the pellets spread more across body parts with distance
-/obj/item/projectile/bullet/pellet/proc/get_pellets(var/distance)
+/obj/projectile/bullet/pellet/proc/get_pellets(var/distance)
var/pellet_loss = round((distance - 1)/range_step) //pellets lost due to distance
return max(pellets - pellet_loss, 1)
-/obj/item/projectile/bullet/pellet/projectile_attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier)
+/obj/projectile/bullet/pellet/projectile_attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier)
if (pellets < 0) return 1
var/total_pellets = get_pellets(distance)
@@ -41,11 +41,11 @@
return 1
return 0
-/obj/item/projectile/bullet/pellet/get_structure_damage()
+/obj/projectile/bullet/pellet/get_structure_damage()
var/distance = get_dist(loc, starting)
return ..() * get_pellets(distance)
-/obj/item/projectile/bullet/pellet/Move()
+/obj/projectile/bullet/pellet/Move()
. = ..()
//If this is a shrapnel explosion, allow mobs that are prone to get hit, too
@@ -56,7 +56,7 @@
return
//Explosive grenade projectile, borrowed from fragmentation grenade code.
-/obj/item/projectile/bullet/pellet/fragment
+/obj/projectile/bullet/pellet/fragment
damage = 10
armor_penetration = 30
range_step = 2 //projectiles lose a fragment each time they travel this distance. Can be a non-integer.
@@ -68,28 +68,28 @@
no_attack_log = 1
muzzle_type = null
-/obj/item/projectile/bullet/pellet/fragment/strong
+/obj/projectile/bullet/pellet/fragment/strong
damage = 15
armor_penetration = 20
-/obj/item/projectile/bullet/pellet/fragment/weak
+/obj/projectile/bullet/pellet/fragment/weak
damage = 4
armor_penetration = 40
-/obj/item/projectile/bullet/pellet/fragment/rubber
+/obj/projectile/bullet/pellet/fragment/rubber
name = "stingball shrapnel"
damage = 3
agony = 8
sharp = FALSE
edge = FALSE
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
-/obj/item/projectile/bullet/pellet/fragment/rubber/strong
+/obj/projectile/bullet/pellet/fragment/rubber/strong
damage = 8
agony = 16
// Tank rupture fragments
-/obj/item/projectile/bullet/pellet/fragment/tank
+/obj/projectile/bullet/pellet/fragment/tank
name = "metal fragment"
damage = 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.
@@ -104,13 +104,13 @@
muzzle_type = null
pellets = 3
-/obj/item/projectile/bullet/pellet/fragment/tank/small
+/obj/projectile/bullet/pellet/fragment/tank/small
name = "small metal fragment"
damage = 6
armor_penetration = 5
pellets = 5
-/obj/item/projectile/bullet/pellet/fragment/tank/big
+/obj/projectile/bullet/pellet/fragment/tank/big
name = "large metal fragment"
damage = 17
armor_penetration = 10
diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm
index 9cbe8ec921f..41dbc2937b8 100644
--- a/code/modules/projectiles/projectile/reusable.dm
+++ b/code/modules/projectiles/projectile/reusable.dm
@@ -1,6 +1,6 @@
//Note: So I tried to make it so arrows can shatter on impact, but the code doesn't like that, and ignores the drop chance entirely. Slate this for review.
-/obj/item/projectile/bullet/reusable
+/obj/projectile/bullet/reusable
name = "reusable bullet"
desc = "How do you even reuse a bullet?"
var/ammo_type = /obj/item/ammo_casing/arrow
@@ -11,16 +11,16 @@
//var/shattered = 0
//var/broken_type = null
-/obj/item/projectile/bullet/reusable/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/bullet/reusable/on_hit(atom/target, blocked = FALSE)
. = ..()
handle_drop()
//handle_shatter()
-/obj/item/projectile/bullet/reusable/on_range()
+/obj/projectile/bullet/reusable/on_range()
handle_drop()
..()
-/obj/item/projectile/bullet/reusable/proc/handle_drop()
+/obj/projectile/bullet/reusable/proc/handle_drop()
if(!dropped)
var/turf/T = get_turf(src)
new ammo_type(T)
@@ -31,7 +31,7 @@
new broken_type(T)
dropped = TRUE
-/obj/item/projectile/bullet/reusable/proc/handle_shatter()
+/obj/projectile/bullet/reusable/proc/handle_shatter()
if(fragile)
switch(rand(1,100))
if(1 to 50)
@@ -54,7 +54,7 @@
*/
//Arrows
-/obj/item/projectile/bullet/reusable/arrow
+/obj/projectile/bullet/reusable/arrow
name = "wooden arrow"
desc = "Woosh!"
damage = 15
@@ -63,41 +63,41 @@
//broken_type = /obj/item/trash/broken_arrow
//Ashlander Base Arrow
-/obj/item/projectile/bullet/reusable/arrow/bone
+/obj/projectile/bullet/reusable/arrow/bone
name = "bone arrow"
desc = "Arrow made of bone and sinew."
damage = 15
icon_state = "arrow"
ammo_type = /obj/item/ammo_casing/arrow/bone
-/obj/item/projectile/bullet/reusable/arrow/ash
+/obj/projectile/bullet/reusable/arrow/ash
name = "ashen arrow"
desc = "Fire harderned arrow."
damage = 25
ammo_type = /obj/item/ammo_casing/arrow/ash
-/obj/item/projectile/bullet/reusable/arrow/bone_ap //AP for ashwalkers
+/obj/projectile/bullet/reusable/arrow/bone_ap //AP for ashwalkers
name = "hardened bone arrow"
desc = "Arrow made of bone and sinew."
damage = 35
armor_penetration = 10
ammo_type = /obj/item/ammo_casing/arrow/bone_ap
-/obj/item/projectile/bullet/reusable/arrow/bronze //Just some AP shots
+/obj/projectile/bullet/reusable/arrow/bronze //Just some AP shots
name = "bronze arrow"
desc = "Bronze tipped arrow."
armor_penetration = 30
ammo_type = /obj/item/ammo_casing/arrow/bronze
//Plunger
-/obj/item/projectile/bullet/reusable/plunger
+/obj/projectile/bullet/reusable/plunger
name = "plunger"
desc = "It's a plunger, for plunging."
damage = 15
icon_state = "plunger"
ammo_type = /obj/item/ammo_casing/arrow/plunger
-/obj/item/projectile/bullet/reusable/plunger/on_hit(atom/hit_atom)
+/obj/projectile/bullet/reusable/plunger/on_hit(atom/hit_atom)
. = ..()
var/mob/living/carbon/H = hit_atom
var/obj/item/plunger/P
@@ -107,16 +107,14 @@
handle_drop()
//Foam Darts
-/obj/item/projectile/bullet/reusable/foam
+/obj/projectile/bullet/reusable/foam
name = "foam dart"
desc = "A soft projectile made out of orange foam with a blue plastic tip."
damage = 0
ammo_type = /obj/item/ammo_casing/foam
- drop_sound = 'sound/items/drop/accessory.ogg'
- pickup_sound = 'sound/items/pickup/accessory.ogg'
embed_chance = 0 // nope
-/obj/item/projectile/bullet/reusable/foam/riot
+/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
diff --git a/code/modules/projectiles/projectile/scatter.dm b/code/modules/projectiles/projectile/scatter.dm
index 5575ff03a10..030af1adcdd 100644
--- a/code/modules/projectiles/projectile/scatter.dm
+++ b/code/modules/projectiles/projectile/scatter.dm
@@ -3,7 +3,7 @@
* Home of the purely submunition projectiles.
*/
-/obj/item/projectile/scatter
+/obj/projectile/scatter
name = "scatter projectile"
icon = 'icons/obj/projectiles.dmi'
icon_state = "bullet"
@@ -24,155 +24,155 @@
submunition_spread_min = 2
submunitions = list(
- /obj/item/projectile/bullet/pellet/shotgun/flak = 3
+ /obj/projectile/bullet/pellet/shotgun/flak = 3
)
//Spread Shot
-/obj/item/projectile/scatter/heavy_shotgun
+/obj/projectile/scatter/heavy_shotgun
damage = 15
submunition_spread_max = 100
submunition_spread_min = 30
submunitions = list(
- /obj/item/projectile/bullet/pellet/heavy_shotgun = 5
+ /obj/projectile/bullet/pellet/heavy_shotgun = 5
)
-/obj/item/projectile/scatter/heavy_shotgun/accurized
+/obj/projectile/scatter/heavy_shotgun/accurized
damage = 15
submunition_spread_max = 30
submunition_spread_min = 10
submunitions = list(
- /obj/item/projectile/bullet/pellet/heavy_shotgun = 5
+ /obj/projectile/bullet/pellet/heavy_shotgun = 5
)
-/obj/item/projectile/scatter/heavy_shotgun/silver
+/obj/projectile/scatter/heavy_shotgun/silver
damage = 15
submunition_spread_max = 30
submunition_spread_min = 10
submunitions = list(
- /obj/item/projectile/bullet/pellet/heavy_shotgun/silver = 5
+ /obj/projectile/bullet/pellet/heavy_shotgun/silver = 5
)
//Custom knockback buckshot variant for Grit.
-/obj/item/projectile/scatter/heavy_shotgun/grit
+/obj/projectile/scatter/heavy_shotgun/grit
submunitions = list(
- /obj/item/projectile/bullet/pellet/heavy_shotgun/grit = 5
+ /obj/projectile/bullet/pellet/heavy_shotgun/grit = 5
)
//Energy Scatter
-/obj/item/projectile/scatter/laser
+/obj/projectile/scatter/laser
submunition_spread_max = 30
spread_submunition_damage = FALSE
submunition_constant_spread = TRUE
submunitions = list(
- /obj/item/projectile/beam/blaster/pellet = 6
+ /obj/projectile/beam/blaster/pellet = 6
)
-/obj/item/projectile/scatter/laser/weak
+/obj/projectile/scatter/laser/weak
damage = 15
submunitions = list(
- /obj/item/projectile/beam/weaklaser = 3
+ /obj/projectile/beam/weaklaser = 3
)
-/obj/item/projectile/scatter/laser/pulse //Badmin only.
+/obj/projectile/scatter/laser/pulse //Badmin only.
damage = 100
armor_penetration = 100
submunitions = list(
- /obj/item/projectile/beam/pulse = 3
+ /obj/projectile/beam/pulse = 3
)
-/obj/item/projectile/scatter/gamma
+/obj/projectile/scatter/gamma
damage = 10
submunition_spread_max = 60
submunition_spread_min = 30
submunitions = list(
- /obj/item/projectile/beam/gamma = 3
+ /obj/projectile/beam/gamma = 3
)
-/obj/item/projectile/scatter/laser/heavylaser
+/obj/projectile/scatter/laser/heavylaser
damage = 60
armor_penetration = 30
submunitions = list(
- /obj/item/projectile/beam/heavylaser = 1 //nope
+ /obj/projectile/beam/heavylaser = 1 //nope
)
-/obj/item/projectile/scatter/laser/heavylaser/cannon
+/obj/projectile/scatter/laser/heavylaser/cannon
damage = 80
armor_penetration = 50
submunitions = list(
- /obj/item/projectile/beam/heavylaser/cannon = 1 //haha no
+ /obj/projectile/beam/heavylaser/cannon = 1 //haha no
)
-/obj/item/projectile/scatter/stun
+/obj/projectile/scatter/stun
submunition_spread_max = 70
submunition_spread_min = 30
submunitions = list(
- /obj/item/projectile/beam/stun = 2
+ /obj/projectile/beam/stun = 2
)
fire_sound = 'sound/weapons/Taser.ogg'
nodamage = 1
agony = 40
-/obj/item/projectile/scatter/stun/weak
+/obj/projectile/scatter/stun/weak
submunitions = list(
- /obj/item/projectile/beam/stun/weak = 2
+ /obj/projectile/beam/stun/weak = 2
)
agony = 20
-/obj/item/projectile/scatter/stun/electrode
+/obj/projectile/scatter/stun/electrode
submunitions = list(
- /obj/item/projectile/energy/electrode = 1
+ /obj/projectile/energy/electrode = 1
)
agony = 55
-/obj/item/projectile/scatter/ion
+/obj/projectile/scatter/ion
damage = 0
submunition_spread_max = 60
submunition_constant_spread = TRUE
submunitions = list(
- /obj/item/projectile/bullet/shotgun/ion = 3
+ /obj/projectile/bullet/shotgun/ion = 3
)
-/obj/item/projectile/scatter/excavation
+/obj/projectile/scatter/excavation
damage = 2 //mining tool
submunition_spread_max = 80
submunition_spread_min = 40
fire_sound = 'sound/weapons/weaponsounds_laserweak.ogg'
submunitions = list(
- /obj/item/projectile/beam/excavation = 2
+ /obj/projectile/beam/excavation = 2
)
-/obj/item/projectile/scatter/shock
+/obj/projectile/scatter/shock
damage = 25
submunition_spread_max = 80
submunition_spread_min = 20
submunitions = list(
- /obj/item/projectile/beam/shock = 6
+ /obj/projectile/beam/shock = 6
)
-/obj/item/projectile/scatter/energy_net
+/obj/projectile/scatter/energy_net
submunition_spread_max = 80
submunition_spread_min = 30
submunitions = list(
- /obj/item/projectile/beam/energy_net = 2
+ /obj/projectile/beam/energy_net = 2
)
nodamage = 1
agony = 5
-/obj/item/projectile/scatter/phase
+/obj/projectile/scatter/phase
damage = 5
submunition_spread_max = 70
submunition_spread_min = 30
submunitions = list(
- /obj/item/projectile/energy/phase/heavy = 4
+ /obj/projectile/energy/phase/heavy = 4
)
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 827e44cac66..660002d8eb2 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -1,11 +1,11 @@
-/obj/item/projectile/ion
+/obj/projectile/ion
name = "ion bolt"
icon_state = "ion"
fire_sound = 'sound/weapons/Laser.ogg'
damage = 0
damage_type = BURN
nodamage = 1
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
light_range = 2
light_power = 0.5
light_color = "#55AAFF"
@@ -17,35 +17,35 @@
var/sev3_range = 1
var/sev4_range = 1
-/obj/item/projectile/ion/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/ion/on_hit(var/atom/target, var/blocked = 0)
empulse(target, sev1_range, sev2_range, sev3_range, sev4_range)
return 1
-/obj/item/projectile/ion/small
+/obj/projectile/ion/small
sev1_range = -1
sev2_range = 0
sev3_range = 0
sev4_range = 1
-/obj/item/projectile/ion/pistol
+/obj/projectile/ion/pistol
sev1_range = 0
sev2_range = 0
sev3_range = 0
sev4_range = 0
-/obj/item/projectile/bullet/gyro
+/obj/projectile/bullet/gyro
name ="explosive bolt"
icon_state= "bolter"
damage = 50
- check_armour = "bullet"
+ damage_flag = ARMOR_BULLET
sharp = 1
edge = 1
-/obj/item/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0)
explosion(target, -1, 0, 2)
..()
-/obj/item/projectile/temp
+/obj/projectile/temp
name = "freeze beam"
icon_state = "ice_2"
fire_sound = 'sound/weapons/pulse3.ogg'
@@ -53,7 +53,7 @@
damage_type = BURN
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GLASS | ATOM_PASS_GRILLE
nodamage = 1
- check_armour = "energy" // It actually checks heat/cold protection.
+ damage_flag = ARMOR_ENERGY // It actually checks heat/cold protection.
var/target_temperature = 50
light_range = 2
light_power = 0.5
@@ -61,7 +61,7 @@
combustion = FALSE
-/obj/item/projectile/temp/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/temp/on_hit(atom/target, blocked = FALSE)
..()
if(isliving(target))
var/mob/living/L = target
@@ -86,22 +86,22 @@
return 1
-/obj/item/projectile/temp/hot
+/obj/projectile/temp/hot
name = "heat beam"
target_temperature = 1000
combustion = TRUE
-/obj/item/projectile/meteor
+/obj/projectile/meteor
name = "meteor"
icon = 'icons/obj/meteor.dmi'
icon_state = "smallf"
damage = 0
damage_type = BRUTE
nodamage = 1
- check_armour = "bullet"
+ damage_flag = ARMOR_BULLET
-/obj/item/projectile/meteor/Bump(atom/A as mob|obj|turf|area)
+/obj/projectile/meteor/Bump(atom/A as mob|obj|turf|area)
if(A == firer)
return
@@ -113,27 +113,27 @@
shake_camera(M, 3, 1)
qdel(src)
-/obj/item/projectile/meteor/slug
+/obj/projectile/meteor/slug
name = "meteor"
damage = 25
damage_type = BRUTE
nodamage = 0
-/obj/item/projectile/energy/floramut
+/obj/projectile/energy/floramut
name = "alpha somatoray"
icon_state = "energy"
fire_sound = 'sound/effects/stealthoff.ogg'
damage = 0
damage_type = TOX
nodamage = 1
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
light_range = 2
light_power = 0.5
light_color = "#33CC00"
combustion = FALSE
-/obj/item/projectile/energy/floramut/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/energy/floramut/on_hit(var/atom/target, var/blocked = 0)
var/mob/living/M = target
if(ishuman(target))
var/mob/living/carbon/human/H = M
@@ -166,29 +166,29 @@
else
return 1
-/obj/item/projectile/energy/floramut/gene
+/obj/projectile/energy/floramut/gene
name = "gamma somatoray"
icon_state = "energy2"
fire_sound = 'sound/effects/stealthoff.ogg'
damage = 0
damage_type = TOX
nodamage = 1
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
var/singleton/plantgene/gene = null
-/obj/item/projectile/energy/florayield
+/obj/projectile/energy/florayield
name = "beta somatoray"
icon_state = "energy2"
fire_sound = 'sound/effects/stealthoff.ogg'
damage = 0
damage_type = TOX
nodamage = 1
- check_armour = "energy"
+ damage_flag = ARMOR_ENERGY
light_range = 2
light_power = 0.5
light_color = "#FFFFFF"
-/obj/item/projectile/energy/florayield/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/energy/florayield/on_hit(var/atom/target, var/blocked = 0)
var/mob/M = target
if(ishuman(target)) //These rays make plantmen fat.
var/mob/living/carbon/human/H = M
@@ -200,17 +200,17 @@
return 1
-/obj/item/projectile/beam/mindflayer
+/obj/projectile/beam/mindflayer
name = "flayer ray"
combustion = FALSE
-/obj/item/projectile/beam/mindflayer/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/beam/mindflayer/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
M.Confuse(rand(5,8))
-/obj/item/projectile/chameleon
+/obj/projectile/chameleon
name = "bullet"
icon_state = "bullet"
damage = 1 // stop trying to murderbone with a fake gun dumbass!!!
@@ -219,7 +219,7 @@
damage_type = HALLOSS
muzzle_type = /obj/effect/projectile/muzzle/bullet
-/obj/item/projectile/bola
+/obj/projectile/bola
name = "bola"
icon_state = "bola"
damage = 5
@@ -229,7 +229,7 @@
combustion = FALSE
-/obj/item/projectile/bola/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/bola/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
var/obj/item/handcuffs/legcuffs/bola/B = new(src.loc)
@@ -238,7 +238,7 @@
qdel(B)
..()
-/obj/item/projectile/webball
+/obj/projectile/webball
name = "ball of web"
icon_state = "bola"
damage = 10
@@ -248,7 +248,7 @@
combustion = FALSE
-/obj/item/projectile/webball/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/webball/on_hit(var/atom/target, var/blocked = 0)
if(isturf(target.loc))
var/obj/effect/spider/stickyweb/W = locate() in get_turf(target)
if(!W && prob(75))
@@ -256,14 +256,14 @@
new /obj/effect/spider/stickyweb(target.loc)
..()
-/obj/item/projectile/beam/tungsten
+/obj/projectile/beam/tungsten
name = "core of molten tungsten"
icon_state = "energy"
fire_sound = 'sound/weapons/gauss_shoot.ogg'
pass_flags = ATOM_PASS_TABLE | ATOM_PASS_GRILLE
damage = 70
damage_type = BURN
- check_armour = "laser"
+ damage_flag = ARMOR_LASER
light_range = 4
light_power = 3
light_color = "#3300ff"
@@ -272,14 +272,14 @@
tracer_type = /obj/effect/projectile/tungsten/tracer
impact_type = /obj/effect/projectile/tungsten/impact
-/obj/item/projectile/beam/tungsten/on_hit(var/atom/target, var/blocked = 0)
+/obj/projectile/beam/tungsten/on_hit(var/atom/target, var/blocked = 0)
if(isliving(target))
var/mob/living/L = target
L.add_modifier(/datum/modifier/grievous_wounds, 30 SECONDS)
if(ishuman(L))
var/mob/living/carbon/human/H = L
- var/target_armor = H.run_mob_armor(def_zone, check_armour)
+ var/target_armor = H.legacy_mob_armor(def_zone, damage_flag)
var/obj/item/organ/external/target_limb = H.get_organ(def_zone)
var/armor_special = 0
@@ -318,7 +318,7 @@
..()
-/obj/item/projectile/beam/tungsten/on_impact(var/atom/A)
+/obj/projectile/beam/tungsten/on_impact(var/atom/A)
if(istype(A,/turf/simulated/shuttle/wall) || istype(A,/turf/simulated/wall) || (istype(A,/turf/simulated/mineral) && A.density) || istype(A,/obj/mecha) || istype(A,/obj/machinery/door))
var/blast_dir = src.dir
A.visible_message("\The [A] begins to glow!")
@@ -328,14 +328,14 @@
explosion(blastloc, -1, -1, 2, 3)
..()
-/obj/item/projectile/beam/tungsten/Bump(atom/A, forced=0)
+/obj/projectile/beam/tungsten/Bump(atom/A, forced=0)
if(istype(A, /obj/structure/window)) //It does not pass through windows. It pulverizes them.
var/obj/structure/window/W = A
W.shatter()
return 0
..()
-/obj/item/projectile/bullet/honker
+/obj/projectile/bullet/honker
damage = 0
nodamage = TRUE
hitsound = 'sound/items/bikehorn.ogg'
@@ -343,39 +343,39 @@
icon_state = "banana"
range = 200
-/obj/item/projectile/bullet/honker/Initialize(mapload)
+/obj/projectile/bullet/honker/Initialize(mapload)
. = ..()
SpinAnimation()
-/obj/item/projectile/bullet/honker/lethal
+/obj/projectile/bullet/honker/lethal
damage = 20
nodamage = FALSE
damage_type = BRUTE
-/obj/item/projectile/bullet/honker/lethal/Initialize(mapload)
+/obj/projectile/bullet/honker/lethal/Initialize(mapload)
. = ..()
SpinAnimation()
-/obj/item/projectile/bullet/honker/lethal/light
+/obj/projectile/bullet/honker/lethal/light
damage = 10
-/obj/item/projectile/bullet/honker/lethal/heavy
+/obj/projectile/bullet/honker/lethal/heavy
damage = 40
//Bio-Organic
-/obj/item/projectile/bullet/organic
+/obj/projectile/bullet/organic
damage = 10
damage_type = BRUTE
- check_armour = "bullet"
+ damage_flag = ARMOR_BULLET
hitsound = 'sound/effects/splat.ogg'
icon_state = "organic"
-/obj/item/projectile/bullet/organic/wax
+/obj/projectile/bullet/organic/wax
damage_type = HALLOSS
color = "#E6E685"
icon_state = "organic"
-/obj/item/projectile/bullet/organic/stinger
+/obj/projectile/bullet/organic/stinger
damage = 15
damage_type = TOX
hitsound = 'sound/weapons/bladeslice.ogg'
diff --git a/code/modules/projectiles/projectile/trace.dm b/code/modules/projectiles/projectile/trace.dm
index 9bd4d070486..c7433c1e205 100644
--- a/code/modules/projectiles/projectile/trace.dm
+++ b/code/modules/projectiles/projectile/trace.dm
@@ -4,7 +4,7 @@
if(!istype(target) || !istype(firer))
return 0
- var/obj/item/projectile/test/trace = new /obj/item/projectile/test(get_turf(firer)) //Making the test....
+ var/obj/projectile/test/trace = new /obj/projectile/test(get_turf(firer)) //Making the test....
//Set the flags and pass flags to that of the real projectile...
if(!isnull(atom_flags))
@@ -13,11 +13,11 @@
return trace.launch_projectile(target) //Test it!
-/obj/item/projectile/proc/_check_fire(atom/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not.
+/obj/projectile/proc/_check_fire(atom/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not.
check_trajectory(target, user, pass_flags, atom_flags)
//"Tracing" projectile
-/obj/item/projectile/test //Used to see if you can hit them.
+/obj/projectile/test //Used to see if you can hit them.
invisibility = 101 //Nope! Can't see me!
hitscan = TRUE
nodamage = TRUE
@@ -25,16 +25,16 @@
has_tracer = FALSE
var/list/hit = list()
-/obj/item/projectile/test/process_hitscan()
+/obj/projectile/test/process_hitscan()
. = ..()
if(!QDELING(src))
qdel(src)
return hit
-/obj/item/projectile/test/Bump(atom/A)
+/obj/projectile/test/Bump(atom/A)
if(A != src)
hit |= A
return ..()
-/obj/item/projectile/test/projectile_attack_mob()
+/obj/projectile/test/projectile_attack_mob()
return
diff --git a/code/modules/projectiles/unsorted/magic.dm b/code/modules/projectiles/unsorted/magic.dm
index ed4acdb591e..da916b7e44c 100644
--- a/code/modules/projectiles/unsorted/magic.dm
+++ b/code/modules/projectiles/unsorted/magic.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/magic
+/obj/projectile/magic
name = "bolt of nothing"
icon_state = "energy"
damage = 0
@@ -8,11 +8,11 @@
var/magic = TRUE
var/checks_antimagic = TRUE
-/obj/item/projectile/magic/death
+/obj/projectile/magic/death
name = "bolt of death"
icon_state = "pulse1_bl"
-/obj/item/projectile/magic/death/on_hit(target, var/mob/living/L)
+/obj/projectile/magic/death/on_hit(target, var/mob/living/L)
. = ..()
if(ismob(target))
var/mob/M = target
@@ -21,14 +21,14 @@
return blocked
M.death(0)
-/obj/item/projectile/magic/resurrection
+/obj/projectile/magic/resurrection
name = "bolt of resurrection"
icon_state = "ion"
damage = 0
damage_type = OXY
nodamage = 1
-/obj/item/projectile/magic/resurrection/on_hit(mob/living/carbon/target)
+/obj/projectile/magic/resurrection/on_hit(mob/living/carbon/target)
. = ..()
if(isliving(target))
if(target.anti_magic_check())
@@ -39,7 +39,7 @@
else if(target.stat != DEAD)
to_chat(target, "You feel great!")
-/obj/item/projectile/magic/teleport
+/obj/projectile/magic/teleport
name = "bolt of teleportation"
icon_state = "bluespace"
damage = 0
@@ -48,7 +48,7 @@
var/inner_tele_radius = 0
var/outer_tele_radius = 6
-/obj/item/projectile/magic/teleport/on_hit(mob/target, var/mob/living/L)
+/obj/projectile/magic/teleport/on_hit(mob/target, var/mob/living/L)
. = ..()
if(ismob(target))
var/mob/M = target
@@ -67,7 +67,7 @@
smoke.set_up(max(round(4 - teleammount),0), stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity
smoke.start()
-/obj/item/projectile/magic/door
+/obj/projectile/magic/door
name = "bolt of door creation"
icon_state = "energy"
damage = 0
@@ -75,7 +75,7 @@
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)
-/obj/item/projectile/magic/door/on_hit(atom/target)
+/obj/projectile/magic/door/on_hit(atom/target)
. = ..()
if(istype(target, /obj/machinery/door))
OpenDoor(target)
@@ -83,27 +83,27 @@
var/turf/T = get_turf(target)
CreateDoor(T)
-/obj/item/projectile/magic/door/proc/CreateDoor(turf/T)
+/obj/projectile/magic/door/proc/CreateDoor(turf/T)
var/door_type = pick(door_types)
var/obj/structure/simple_door/D = new door_type(T)
T.ChangeTurf(/turf/simulated/floor/plating)
D.Open()
-/obj/item/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D)
+/obj/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D)
if(istype(D, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/A = D
A.locked = FALSE
D.open()
/* //Needs more work.
-/obj/item/projectile/magic/change
+/obj/projectile/magic/change
name = "bolt of change"
icon_state = "ice_1"
damage = 0
damage_type = BURN
nodamage = 1
-/obj/item/projectile/magic/change/on_hit(atom/change)
+/obj/projectile/magic/change/on_hit(atom/change)
. = ..()
if(ismob(change))
var/mob/M = change
@@ -245,14 +245,14 @@
qdel(M)
return new_mob
-/obj/item/projectile/magic/animate
+/obj/projectile/magic/animate
name = "bolt of animation"
icon_state = "red_1"
damage = 0
damage_type = BURN
nodamage = 1
-/obj/item/projectile/magic/animate/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/magic/animate/on_hit(atom/target, blocked = FALSE)
target.animate_atom_living(firer)
. = ..()
@@ -290,7 +290,7 @@
if(owner)
C.ChangeOwner(owner)
*/
-/obj/item/projectile/magic/spellblade
+/obj/projectile/magic/spellblade
name = "blade energy"
icon_state = "lavastaff"
damage = 15
@@ -298,7 +298,7 @@
sharp = TRUE
magic = TRUE
-/obj/item/projectile/magic/spellblade/on_hit(target, var/mob/living/L)
+/obj/projectile/magic/spellblade/on_hit(target, var/mob/living/L)
if(ismob(target))
var/mob/M = target
if(L.anti_magic_check())
@@ -307,7 +307,7 @@
return
. = ..()
-/obj/item/projectile/magic/arcane_barrage
+/obj/projectile/magic/arcane_barrage
name = "arcane bolt"
icon_state = "arcane_barrage"
damage = 20
@@ -317,7 +317,7 @@
magic = TRUE
hitsound = 'sound/weapons/barragespellhit.ogg'
-/obj/item/projectile/magic/arcane_barrage/on_hit(target, var/mob/living/L)
+/obj/projectile/magic/arcane_barrage/on_hit(target, var/mob/living/L)
if(ismob(target))
var/mob/M = target
if(L.anti_magic_check())
@@ -327,7 +327,7 @@
. = ..()
-/obj/item/projectile/magic/locker
+/obj/projectile/magic/locker
name = "locker bolt"
icon_state = "locker"
nodamage = TRUE
@@ -337,7 +337,7 @@
var/locker_suck = TRUE
/*
-/obj/item/projectile/magic/locker/proc/prehit(atom/A, var/mob/living/L)
+/obj/projectile/magic/locker/proc/prehit(atom/A, var/mob/living/L)
if(ismob(A) && locker_suck)
var/mob/M = A
if(L.anti_magic_check())
@@ -351,7 +351,7 @@
return ..()
*/
-/obj/item/projectile/magic/locker/on_hit(target)
+/obj/projectile/magic/locker/on_hit(target)
if(created)
return ..()
var/obj/structure/closet/decay/C = new(get_turf(src))
@@ -361,7 +361,7 @@
created = TRUE
return ..()
-/obj/item/projectile/magic/locker/Destroy()
+/obj/projectile/magic/locker/Destroy()
locker_suck = FALSE
for(var/atom/movable/AM in contents)
AM.forceMove(get_turf(src))
@@ -396,13 +396,13 @@
update_icon()
addtimer(CALLBACK(src, .proc/decay), 15 SECONDS)
-/obj/item/projectile/magic/aoe
+/obj/projectile/magic/aoe
name = "Area Bolt"
desc = "What the fuck does this do?!"
damage = 0
var/proxdet = TRUE
-/obj/item/projectile/magic/aoe/Range()
+/obj/projectile/magic/aoe/Range()
if(proxdet)
for(var/mob/living/L in range(1, get_turf(src)))
if(L.stat != DEAD && L != firer && !L.anti_magic_check())
@@ -410,7 +410,7 @@
..()
-/obj/item/projectile/magic/aoe/lightning
+/obj/projectile/magic/aoe/lightning
name = "lightning bolt"
icon_state = "tesla_projectile" //Better sprites are REALLY needed and appreciated!~
damage = 15
@@ -423,12 +423,12 @@
var/chain
var/mob/living/caster
-/obj/item/projectile/magic/aoe/lightning/fire(setAngle)
+/obj/projectile/magic/aoe/lightning/fire(setAngle)
if(caster)
chain = caster.Beam(src, icon_state = "lightning[rand(1, 12)]", time = INFINITY, maxdistance = INFINITY)
..()
-/obj/item/projectile/magic/aoe/lightning/on_hit(target, var/mob/living/L)
+/obj/projectile/magic/aoe/lightning/on_hit(target, var/mob/living/L)
. = ..()
if(ismob(target))
var/mob/M = target
@@ -439,11 +439,11 @@
tesla_zap(src, zap_range, zap_power)
qdel(src)
-/obj/item/projectile/magic/aoe/lightning/Destroy()
+/obj/projectile/magic/aoe/lightning/Destroy()
qdel(chain)
. = ..()
-/obj/item/projectile/magic/aoe/fireball
+/obj/projectile/magic/aoe/fireball
name = "bolt of fireball"
icon_state = "fireball"
damage = 10
@@ -456,7 +456,7 @@
var/exp_flash = 3
var/exp_fire = 2
-/obj/item/projectile/magic/aoe/fireball/on_hit(target)
+/obj/projectile/magic/aoe/fireball/on_hit(target)
. = ..()
if(ismob(target))
var/mob/living/M = target
@@ -467,14 +467,14 @@
var/turf/T = get_turf(target)
explosion(T, -1, exp_heavy, exp_light, exp_flash, 0)//, flame_range = exp_fire)
-/obj/item/projectile/magic/aoe/fireball/infernal
+/obj/projectile/magic/aoe/fireball/infernal
name = "infernal fireball"
exp_heavy = -1
exp_light = -1
exp_flash = 4
exp_fire= 5
-/obj/item/projectile/magic/aoe/fireball/infernal/on_hit(target)
+/obj/projectile/magic/aoe/fireball/infernal/on_hit(target)
. = ..()
if(ismob(target))
var/mob/living/M = target
@@ -484,14 +484,14 @@
for(var/i=0, i<50, i+=10)
addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, T, -1, exp_heavy, exp_light, exp_flash, FALSE, FALSE, exp_fire), i)
-/obj/item/projectile/magic/nuclear
+/obj/projectile/magic/nuclear
name = "\proper blazing manliness"
icon_state = "nuclear"
nodamage = TRUE
var/mob/living/victim = null
var/used = 0
-/obj/item/projectile/magic/nuclear/on_hit(target)
+/obj/projectile/magic/nuclear/on_hit(target)
if(used)
return
if(ismob(target))
@@ -506,21 +506,21 @@
explosion(src, -1, -1, -1, -1, FALSE, FALSE, 5)
return
-/obj/item/projectile/magic/nuclear/Destroy()
+/obj/projectile/magic/nuclear/Destroy()
for(var/atom/movable/AM in contents)
AM.forceMove(get_turf(src))
. = ..()
//Spellcards
-/obj/item/projectile/spellcard
+/obj/projectile/spellcard
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 = 2
-/obj/item/projectile/magic/spellcard/book
+/obj/projectile/magic/spellcard/book
nodamage = FALSE
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."
@@ -529,11 +529,11 @@
damage = 12
magic = TRUE
-/obj/item/projectile/magic/spellcard/book/spark
+/obj/projectile/magic/spellcard/book/spark
damage = 4
var/fire_stacks = 4
-/obj/item/projectile/magic/spellcard/book/spark/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/magic/spellcard/book/spark/on_hit(atom/target, blocked = FALSE)
. = ..()
var/mob/living/carbon/M = target
if(ismob(target))
@@ -548,18 +548,18 @@
else
damage = 20 //If we are a simplemob we deal 5x damage
-/obj/item/projectile/magic/spellcard/book/shock
+/obj/projectile/magic/spellcard/book/shock
damage = 0
stutter = 5
agony = 20
stun = 10
/* //Still need help on healing procs.
-/obj/item/projectile/magic/spellcard/book/heal
+/obj/projectile/magic/spellcard/book/heal
damage = 0
nodamage = TRUE
-/obj/item/projectile/magic/spellcard/book/heal/on_hit(atom/target, blocked = FALSE)
+/obj/projectile/magic/spellcard/book/heal/on_hit(atom/target, blocked = FALSE)
. = ..()
var/mob/living/carbon/M = target
if(ismob(target))
diff --git a/code/modules/reagents/machinery/reagent_dispenser/fuel.dm b/code/modules/reagents/machinery/reagent_dispenser/fuel.dm
index 16a8dcc0c80..432c0eb5cb8 100644
--- a/code/modules/reagents/machinery/reagent_dispenser/fuel.dm
+++ b/code/modules/reagents/machinery/reagent_dispenser/fuel.dm
@@ -84,13 +84,13 @@
return ..()
-/obj/structure/reagent_dispensers/fueltank/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/reagent_dispensers/fueltank/bullet_act(var/obj/projectile/Proj)
if(Proj.get_structure_damage())
if(istype(Proj.firer))
message_admins("[key_name_admin(Proj.firer)] shot fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]) (JMP).")
log_game("[key_name(Proj.firer)] shot fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]).")
- if(!istype(Proj ,/obj/item/projectile/beam/lasertag) && !istype(Proj ,/obj/item/projectile/beam/practice) )
+ if(!istype(Proj ,/obj/projectile/beam/lasertag) && !istype(Proj ,/obj/projectile/beam/practice) )
explode()
/obj/structure/reagent_dispensers/fueltank/legacy_ex_act()
diff --git a/code/modules/reagents/machinery/reagent_dispenser/oil.dm b/code/modules/reagents/machinery/reagent_dispenser/oil.dm
index 71f673e4c33..0ee657bc919 100644
--- a/code/modules/reagents/machinery/reagent_dispenser/oil.dm
+++ b/code/modules/reagents/machinery/reagent_dispenser/oil.dm
@@ -21,7 +21,7 @@
)
starting_capacity = 5000
-/obj/structure/reagent_dispensers/cookingoil/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/reagent_dispensers/cookingoil/bullet_act(var/obj/projectile/Proj)
if(Proj.get_structure_damage())
explode()
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 4fc86a9d44e..d04408dcee6 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -249,7 +249,7 @@
if((user != target) && H.check_shields(7, src, user, "\the [src]"))
return
- if (target != user && H.run_mob_armor(target_zone, "melee") > 5 && prob(50))
+ if (target != user && H.legacy_mob_armor(target_zone, "melee") > 5 && prob(50))
for(var/mob/O in viewers(world.view, user))
O.show_message(text("[user] tries to stab [target] in \the [hit_area] with [src.name], but the attack is deflected by armor!"), 1)
qdel(src)
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index deff40689f9..87b1cac2374 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -467,7 +467,7 @@
/obj/machinery/disposal/throw_impacted(atom/movable/AM, datum/thrownthing/TT)
. = ..()
- if(istype(AM, /obj/item) && !istype(AM, /obj/item/projectile))
+ if(istype(AM, /obj/item) && !istype(AM, /obj/projectile))
if(prob(75))
AM.forceMove(src)
visible_message("\The [AM] lands in \the [src].")
@@ -475,11 +475,11 @@
visible_message("\The [AM] bounces off of \the [src]'s rim!")
/obj/machinery/disposal/CanAllowThrough(atom/movable/mover, turf/target)
- if(istype(mover, /obj/item/projectile))
+ if(istype(mover, /obj/projectile))
return 1
if (istype(mover,/obj/item) && mover.throwing)
var/obj/item/I = mover
- if(istype(I, /obj/item/projectile))
+ if(istype(I, /obj/projectile))
return
if(prob(75))
I.forceMove(src)
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index bf121d2b163..5fb29713cf1 100644
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -386,7 +386,7 @@
return
/obj/machinery/disposal/deliveryChute/Bumped(var/atom/movable/AM) //Go straight into the chute
- if(istype(AM, /obj/item/projectile) || istype(AM, /obj/effect) || istype(AM, /obj/mecha)) return
+ if(istype(AM, /obj/projectile) || istype(AM, /obj/effect) || istype(AM, /obj/mecha)) return
switch(dir)
if(NORTH)
if(AM.loc.y != src.loc.y+1) return
diff --git a/code/modules/resleeving/infomorph.dm b/code/modules/resleeving/infomorph.dm
index cd027cc7ede..6e23adb4807 100644
--- a/code/modules/resleeving/infomorph.dm
+++ b/code/modules/resleeving/infomorph.dm
@@ -329,9 +329,9 @@ var/list/infomorph_emotions = list(
////////////////// ATTACKBY, HAND, SELF etc
/mob/living/silicon/infomorph/attackby(obj/item/W as obj, mob/user as mob)
- if(W.force)
+ if(W.damage_force)
visible_message("[user.name] attacks [src] with [W]!")
- src.adjustBruteLoss(W.force)
+ src.adjustBruteLoss(W.damage_force)
src.updatehealth()
else
visible_message("[user.name] bonks [src] harmlessly with [W].")
diff --git a/code/modules/rigsuits/_rig.dm b/code/modules/rigsuits/_rig.dm
index f9d79d47838..d708fc8ca93 100644
--- a/code/modules/rigsuits/_rig.dm
+++ b/code/modules/rigsuits/_rig.dm
@@ -2,6 +2,15 @@
#define ONLY_RETRACT 2
#define SEAL_DELAY 30
+/datum/armor/rig
+ melee = 0.4
+ bullet = 0.05
+ laser = 0.2
+ energy = 0.05
+ bomb = 0.35
+ bio = 1.0
+ rad = 0.2
+
/*
* Defines the behavior of hardsuits/rigs/power armour.
*/
@@ -15,7 +24,7 @@
action_button_name = "Toggle Heatsink"
// These values are passed on to all component pieces.
- armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20)
+ armor_type = /datum/armor/rig
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
siemens_coefficient = 0.2
@@ -180,8 +189,7 @@
piece.siemens_coefficient = siemens_coefficient
piece.permeability_coefficient = permeability_coefficient
piece.unacidable = unacidable
- if(islist(armor)) piece.armor = armor.Copy()
- if(islist(armorsoak)) piece.armorsoak = armorsoak.Copy()
+ piece.set_armor(fetch_armor())
update_icon(1)
@@ -370,10 +378,9 @@
//sealed pieces become airtight, protecting against diseases
if (is_sealing)
- piece.armor["bio"] = 100
+ piece.set_armor(piece.fetch_armor().boosted(list(ARMOR_BIO = 100)))
else
- piece.armor["bio"] = src.armor["bio"]
-
+ piece.set_armor(piece.fetch_armor().overwritten(list(ARMOR_BIO = fetch_armor().raw(ARMOR_BIO))))
else
failed_to_seal = 1
diff --git a/code/modules/rigsuits/modules/ninja.dm b/code/modules/rigsuits/modules/ninja.dm
index f562a4d85ef..eac2c12d9ca 100644
--- a/code/modules/rigsuits/modules/ninja.dm
+++ b/code/modules/rigsuits/modules/ninja.dm
@@ -214,5 +214,5 @@
if(holder && holder.wearer)
smoke.set_up(10, 0, holder.loc)
for(var/i = 1 to smoke_strength)
- smoke.start(272727)
+ smoke.start(2)
holder.wearer.ash()
diff --git a/code/modules/rigsuits/rig_pieces.dm b/code/modules/rigsuits/rig_pieces.dm
index 7cc1919f67c..ade7d90fd78 100644
--- a/code/modules/rigsuits/rig_pieces.dm
+++ b/code/modules/rigsuits/rig_pieces.dm
@@ -14,7 +14,7 @@
max_pressure_protection = null
min_pressure_protection = null
- force = 3 // if you're headbutting someone with something meant to protect you from space...
+ damage_force = 3 // if you're headbutting someone with something meant to protect you from space...
species_restricted = list(
SPECIES_AKULA,
@@ -85,7 +85,7 @@
heat_protection = FEET
icon_base = null
- force = 5 // if you're kicking someone with something meant to keep you locked on a hunk of metal...
+ damage_force = 5 // if you're kicking someone with something meant to keep you locked on a hunk of metal...
species_restricted = list(
SPECIES_AKULA,
diff --git a/code/modules/rigsuits/suits/alien.dm b/code/modules/rigsuits/suits/alien.dm
deleted file mode 100644
index f9ac8ed6efd..00000000000
--- a/code/modules/rigsuits/suits/alien.dm
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * UNATHI
- */
-
-/obj/item/rig/breacher
- name = "\improper NT breacher chassis control module"
- desc = "A cheap NT knock-off of an Unathi battle-rig. Looks like a fish, moves like a fish, steers like a cow."
- suit_type = "\improper NT breacher"
- icon_state = "breacher_rig_cheap"
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 70, bio = 100, rad = 50)
- emp_protection = -20
- slowdown = 6
- offline_slowdown = 10
- vision_restriction = 1
- offline_vision_restriction = 2
- siemens_coefficient = 0.75
- chest_type = /obj/item/clothing/suit/space/rig/breacher
- helm_type = /obj/item/clothing/head/helmet/space/rig/breacher
- boot_type = /obj/item/clothing/shoes/magboots/rig/breacher
-
-/obj/item/rig/breacher/fancy
- name = "breacher chassis control module"
- desc = "An authentic Unathi breacher chassis. Huge, bulky and absurdly heavy. It must be like wearing a tank."
- suit_type = "breacher chassis"
- icon_state = "breacher_rig"
- armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 80) //Takes TEN TIMES as much damage to stop someone in a breacher. In exchange, it's slow.
- vision_restriction = 0
- siemens_coefficient = 0.2
-
-/obj/item/clothing/head/helmet/space/rig/breacher
- species_restricted = list(SPECIES_UNATHI, SPECIES_UNATHI_DIGI)
- force = 5
-
-/obj/item/clothing/suit/space/rig/breacher
- species_restricted = list(SPECIES_UNATHI, SPECIES_UNATHI_DIGI)
-
-/obj/item/clothing/shoes/magboots/rig/breacher
- species_restricted = list(SPECIES_UNATHI, SPECIES_UNATHI_DIGI)
-
-/*
- * VOX
- */
-
-/obj/item/rig/vox //Just to get the atom_flags set up
- name = "alien control module"
- desc = "This metal box writhes and squirms as if it were alive..."
- suit_type = "alien"
- icon_state = "vox_rig"
- armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 50)
- atom_flags = PHORONGUARD
- clothing_flags = THICKMATERIAL
- siemens_coefficient = 0.2
- offline_slowdown = 5
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit)
-
- air_type = /obj/item/tank/vox
-
- helm_type = /obj/item/clothing/head/helmet/space/rig/vox
- boot_type = /obj/item/clothing/shoes/magboots/rig/vox
- chest_type = /obj/item/clothing/suit/space/rig/vox
- glove_type = /obj/item/clothing/gloves/gauntlets/rig/vox
-
-/obj/item/clothing/head/helmet/space/rig/vox
- species_restricted = list(SPECIES_VOX)
- inv_hide_flags = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
-
-/obj/item/clothing/shoes/magboots/rig/vox
- name = "talons"
- species_restricted = list(SPECIES_VOX)
-
-/obj/item/clothing/suit/space/rig/vox
- species_restricted = list(SPECIES_VOX)
-
-/obj/item/clothing/gloves/gauntlets/rig/vox
- siemens_coefficient = 0
- species_restricted = list(SPECIES_VOX)
-
-/obj/item/rig/vox/carapace
- name = "dense alien control module"
- suit_type = "dense alien"
- armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 50)
- emp_protection = 40 //change this to 30 if too high.
-
- req_access = list(ACCESS_FACTION_SYNDICATE)
-
- cell_type = /obj/item/cell/hyper
-
- initial_modules = list(
- /obj/item/rig_module/mounted/energy_blade,
- /obj/item/rig_module/sprinter,
- /obj/item/rig_module/electrowarfare_suite,
- /obj/item/rig_module/vision,
- /obj/item/rig_module/power_sink,
- /obj/item/rig_module/self_destruct
- )
-
-/obj/item/rig/vox/stealth
- name = "sinister alien control module"
- suit_type = "sinister alien"
- icon_state = "voxstealth_rig"
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 30, bio = 100, rad = 50)
- emp_protection = 40 //change this to 30 if too high.
-
- req_access = list(ACCESS_FACTION_SYNDICATE)
-
- cell_type = /obj/item/cell/hyper
-
- initial_modules = list(
- /obj/item/rig_module/stealth_field,
- /obj/item/rig_module/electrowarfare_suite,
- /obj/item/rig_module/vision,
- /obj/item/rig_module/power_sink,
- /obj/item/rig_module/self_destruct
- )
-
-
-/*
- proteans
-*/
-/obj/item/rig/protean
- name = "nanosuit control cluster"
- suit_type = "nanomachine"
- icon_state = "nanomachine_rig"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 90)
- siemens_coefficient = 0.5
- slowdown = 0
- offline_slowdown = 0
- seal_delay = 1
- var/mob/living/carbon/human/myprotean
- initial_modules = list(
- /obj/item/rig_module/power_sink,
- /obj/item/rig_module/device/rigwelder, // Almost forgot these, but who uses blobsuits for their intended purpose anyways?
- /obj/item/rig_module/device/toolset // I did say I was going to do it
- )
-
- helm_type = /obj/item/clothing/head/helmet/space/rig/protean
- boot_type = /obj/item/clothing/shoes/magboots/rig/protean
- chest_type = /obj/item/clothing/suit/space/rig/protean
- glove_type = /obj/item/clothing/gloves/gauntlets/rig/protean
-
-/obj/item/rig/protean/relaymove(mob/user, var/direction)
- if(user.stat || user.stunned)
- return
- forced_move(direction, user, FALSE, TRUE)
-
-/obj/item/rig/protean/check_suit_access(mob/living/carbon/human/user)
- if(user == myprotean)
- return TRUE
- return ..()
-
-/obj/item/clothing/head/helmet/space/rig/protean
- name = "mass"
- desc = "A helmet-shaped clump of nanomachines."
- light_overlay = "should not use a light overlay"
- species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid ie uses human spritesheets
-
-/obj/item/clothing/gloves/gauntlets/rig/protean
- name = "mass"
- desc = "Glove-shaped clusters of nanomachines."
- siemens_coefficient = 0
- species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid.
-
-/obj/item/clothing/shoes/magboots/rig/protean
- name = "mass"
- desc = "Boot-shaped clusters of nanomachines."
- species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid.
-
-/obj/item/clothing/suit/space/rig/protean
- name = "mass"
- desc = "A body-hugging mass of nanomachines."
- can_breach = 0
- species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid, ie uses human spritesheets
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton,/obj/item/storage/backpack,/obj/item/bluespace_radio)
diff --git a/code/modules/rigsuits/suits/combat.dm b/code/modules/rigsuits/suits/combat.dm
index 6c781be3b83..2ea503e5c34 100644
--- a/code/modules/rigsuits/suits/combat.dm
+++ b/code/modules/rigsuits/suits/combat.dm
@@ -1,18 +1,35 @@
/obj/item/clothing/head/helmet/space/rig/combat
light_overlay = "helmet_light_dual_green"
+/datum/armor/rig/combat
+ melee = 0.8
+ bullet = 0.65
+ laser = 0.5
+ energy = 0.25
+ bomb = 0.6
+ bio = 1.0
+ rad = 0.6
+
/obj/item/rig/combat
name = "combat hardsuit control module"
desc = "A sleek and dangerous hardsuit for active combat."
icon_state = "security_rig"
suit_type = "combat hardsuit"
- armor = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 60)
+ armor_type = /datum/armor/rig/combat
slowdown = 1
offline_slowdown = 3
offline_vision_restriction = 1
helm_type = /obj/item/clothing/head/helmet/space/rig/combat
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton)
+ allowed = list(
+ /obj/item/gun,
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/suit_cooling_unit,
+ /obj/item/melee/baton,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
/obj/item/rig/combat/equipped
@@ -33,19 +50,47 @@
/obj/item/rig_module/electrowarfare_suite,
)
+/datum/armor/rig/military
+ melee = 0.8
+ bullet = 0.7
+ laser = 0.55
+ energy = 0.15
+ bomb = 0.8
+ bio = 1.0
+ rad = 0.3
+
/obj/item/rig/military
name = "military hardsuit control module"
desc = "An austere hardsuit used by paramilitary groups and real soldiers alike."
icon_state = "military_rig"
suit_type = "military hardsuit"
- armor = list(melee = 80, bullet = 70, laser = 55, energy = 15, bomb = 80, bio = 100, rad = 30)
+ armor_type = /datum/armor/rig/military
slowdown = 1
offline_slowdown = 3
offline_vision_restriction = 1
- allowed = list(/obj/item/flashlight, /obj/item/tank,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/handcuffs, \
- /obj/item/t_scanner, /obj/item/rcd, /obj/item/weldingtool, /obj/item/tool, /obj/item/multitool, \
- /obj/item/radio, /obj/item/analyzer,/obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, \
- /obj/item/storage/firstaid, /obj/item/reagent_containers/hypospray, /obj/item/roller, /obj/item/suit_cooling_unit)
+ allowed = list(
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/ammo_magazine,
+ /obj/item/ammo_casing,
+ /obj/item/handcuffs,
+ /obj/item/t_scanner,
+ /obj/item/rcd,
+ /obj/item/weldingtool,
+ /obj/item/tool,
+ /obj/item/multitool,
+ /obj/item/radio,
+ /obj/item/analyzer,
+ /obj/item/storage/briefcase/inflatable,
+ /obj/item/melee/baton,
+ /obj/item/gun,
+ /obj/item/storage/firstaid,
+ /obj/item/reagent_containers/hypospray,
+ /obj/item/roller,
+ /obj/item/suit_cooling_unit,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
chest_type = /obj/item/clothing/suit/space/rig/military
helm_type = /obj/item/clothing/head/helmet/space/rig/military
diff --git a/code/modules/rigsuits/suits/ert.dm b/code/modules/rigsuits/suits/ert.dm
index 34a5878233b..c0edba3bcfb 100644
--- a/code/modules/rigsuits/suits/ert.dm
+++ b/code/modules/rigsuits/suits/ert.dm
@@ -2,6 +2,15 @@
light_overlay = "helmet_light_dual"
camera_networks = list(NETWORK_ERT)
+/datum/armor/rig/ert
+ melee = 0.6
+ bullet = 0.5
+ laser = 0.3
+ energy = 0.15
+ bomb = 0.3
+ bio = 1.0
+ rad = 1.0
+
/obj/item/rig/ert
name = "ERT-C hardsuit control module"
desc = "A suit worn by the commander of an Emergency Response Team. Has blue highlights. Armoured and space ready."
@@ -13,11 +22,29 @@
req_access = list(ACCESS_CENTCOM_ERT)
siemens_coefficient= 0.5
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
- allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/t_scanner, /obj/item/rcd, /obj/item/tool/crowbar, \
- /obj/item/tool/screwdriver, /obj/item/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, /obj/item/multitool, \
- /obj/item/radio, /obj/item/analyzer,/obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, \
- /obj/item/storage/firstaid, /obj/item/reagent_containers/hypospray, /obj/item/roller)
+ armor_type = /datum/armor/rig/ert
+ allowed = list(
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/t_scanner,
+ /obj/item/rcd,
+ /obj/item/tool/crowbar,
+ /obj/item/tool/screwdriver,
+ /obj/item/weldingtool,
+ /obj/item/tool/wirecutters,
+ /obj/item/tool/wrench,
+ /obj/item/multitool,
+ /obj/item/radio,
+ /obj/item/analyzer,
+ /obj/item/storage/briefcase/inflatable,
+ /obj/item/melee/baton,
+ /obj/item/gun,
+ /obj/item/storage/firstaid,
+ /obj/item/reagent_containers/hypospray,
+ /obj/item/roller,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
initial_modules = list(
/obj/item/rig_module/ai_container,
@@ -30,7 +57,6 @@
desc = "A suit worn by the engineering division of an Emergency Response Team. Has orange highlights. Armoured and space ready."
suit_type = "ERT engineer"
icon_state = "ert_engineer_rig"
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
initial_modules = list(
@@ -66,12 +92,31 @@
/obj/item/rig_module/mounted/egun,
)
+/obj/item/rig/ert/janitor
+ name = "ERT-J suit control module"
+ desc = "A suit worn by the janitorial division of an Emergency Response Team. Has purple highlights. Armoured and space ready."
+ suit_type = "ERT janitor"
+ icon_state = "ert_janitor_rig"
+
+ initial_modules = list(
+ /obj/item/rig_module/maneuvering_jets,
+ /obj/item/rig_module/grenade_launcher/cleaner,
+ )
+
+/datum/armor/rig/ert/deathsquad
+ melee = 0.8
+ bullet = 0.65
+ laser = 0.5
+ energy = 0.25
+ bomb = 0.8
+ bio = 1.0
+
/obj/item/rig/ert/assetprotection
name = "Heavy Asset Protection suit control module"
desc = "A heavy suit worn by the highest level of Asset Protection, don't mess with the person wearing this. Armoured and space ready."
suit_type = "heavy asset protection"
icon_state = "asset_protection_rig"
- armor = list(melee = 60, bullet = 50, laser = 50,energy = 40, bomb = 40, bio = 100, rad = 100)
+ armor_type = /datum/armor/rig/ert/deathsquad
siemens_coefficient= 0.3
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
@@ -98,12 +143,6 @@
var/blessed = FALSE
var/emp_proof = FALSE
- allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/t_scanner, /obj/item/rcd, /obj/item/tool/crowbar, \
- /obj/item/tool/screwdriver, /obj/item/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, /obj/item/multitool, \
- /obj/item/radio, /obj/item/analyzer,/obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, \
- /obj/item/storage/firstaid, /obj/item/reagent_containers/hypospray, /obj/item/roller, /obj/item/nullrod, /obj/item/tank, \
- /obj/item/storage/backpack, /obj/item/storage/briefcase, /obj/item/storage/secure/briefcase)
-
initial_modules = list(
/obj/item/rig_module/ai_container,
/obj/item/rig_module/device/anomaly_scanner,
diff --git a/code/modules/rigsuits/suits/ert_vr.dm b/code/modules/rigsuits/suits/ert_vr.dm
deleted file mode 100644
index 15903765384..00000000000
--- a/code/modules/rigsuits/suits/ert_vr.dm
+++ /dev/null
@@ -1,13 +0,0 @@
-/obj/item/rig/ert/janitor
- name = "ERT-J suit control module"
- desc = "A suit worn by the janitorial division of an Emergency Response Team. Has purple highlights. Armoured and space ready."
- suit_type = "ERT janitor"
- icon_state = "ert_janitor_rig"
-
- initial_modules = list(
- /obj/item/rig_module/maneuvering_jets,
- /obj/item/rig_module/grenade_launcher/cleaner,
- )
-
-/obj/item/rig/ert/assetprotection
- armor = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 60)
diff --git a/code/modules/rigsuits/suits/light.dm b/code/modules/rigsuits/suits/light.dm
index dd581c58f27..5bfeba21dde 100644
--- a/code/modules/rigsuits/suits/light.dm
+++ b/code/modules/rigsuits/suits/light.dm
@@ -1,3 +1,10 @@
+/datum/armor/rig/light
+ melee = 0.5
+ bullet = 0.15
+ laser = 0.5
+ energy = 0.1
+ bomb = 0.25
+
// Light rigs are not space-capable, but don't suffer excessive slowdown or sight issues when depowered.
/obj/item/rig/light
name = "light suit control module"
@@ -5,7 +12,7 @@
icon_state = "ninja_rig"
suit_type = "light suit"
allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/cell)
- armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
+ armor_type = /datum/armor/rig/light
emp_protection = 10
slowdown = 0
clothing_flags = THICKMATERIAL
@@ -80,7 +87,6 @@
suit_type = "ominous"
desc = "A unique suit of nano-enhanced armor designed for covert operations."
icon_state = "ninja_rig"
- armor = list(melee = 50, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 30)
emp_protection = 40 //change this to 30 if too high.
slowdown = 0
@@ -90,6 +96,18 @@
cell_type = /obj/item/cell/hyper
req_access = list(ACCESS_FACTION_SYNDICATE)
+ allowed = list(
+ /obj/item/gun,
+ /obj/item/ammo_magazine,
+ /obj/item/ammo_casing,
+ /obj/item/melee/baton,
+ /obj/item/handcuffs,
+ /obj/item/tank,
+ /obj/item/suit_cooling_unit,
+ /obj/item/cell,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
initial_modules = list(
/obj/item/rig_module/teleporter,
diff --git a/code/modules/rigsuits/suits/merc.dm b/code/modules/rigsuits/suits/merc.dm
index 908e6656b03..aed6fc89b83 100644
--- a/code/modules/rigsuits/suits/merc.dm
+++ b/code/modules/rigsuits/suits/merc.dm
@@ -2,19 +2,40 @@
light_overlay = "helmet_light_dual_green"
camera_networks = list(NETWORK_MERCENARY)
+/datum/armor/rig/merc
+ melee = 0.8
+ bullet = 0.65
+ laser = 0.5
+ energy = 0.15
+ bomb = 0.8
+ bio = 1.0
+ rad = 0.6
+
/obj/item/rig/merc
name = "crimson hardsuit control module"
desc = "A blood-red hardsuit featuring some fairly illegal technology."
icon_state = "merc_rig"
suit_type = "crimson hardsuit"
- armor = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 60)
+ armor_type = /datum/armor/rig/merc
slowdown = 1
offline_slowdown = 3
offline_vision_restriction = 1
siemens_coefficient = 0.3
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
helm_type = /obj/item/clothing/head/helmet/space/rig/merc
- 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/energy/sword,
+ /obj/item/handcuffs,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
initial_modules = list(
/obj/item/rig_module/mounted,
diff --git a/code/modules/rigsuits/suits/pmc.dm b/code/modules/rigsuits/suits/pmc.dm
index 020b364be02..6c656e16eca 100644
--- a/code/modules/rigsuits/suits/pmc.dm
+++ b/code/modules/rigsuits/suits/pmc.dm
@@ -1,6 +1,15 @@
/obj/item/clothing/head/helmet/space/rig/pmc
light_overlay = "helmet_light_dual"
+/datum/armor/rig/pmc
+ melee = 0.6
+ bullet = 0.5
+ laser = 0.35
+ energy = 0.15
+ bomb = 0.3
+ bio = 1.0
+ rad = 0.95
+
/obj/item/rig/pmc
name = "PMC hardsuit control module"
desc = "A suit worn by private military contractors. Armoured and space ready."
@@ -10,12 +19,30 @@
helm_type = /obj/item/clothing/head/helmet/space/rig/pmc
req_access = list(ACCESS_CENTCOM_ERT)
+ armor_type = /datum/armor/rig/pmc
- armor = list(melee = 60, bullet = 50, laser = 35,energy = 15, bomb = 30, bio = 100, rad = 95)
- allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/t_scanner, /obj/item/rcd, /obj/item/tool/crowbar, \
- /obj/item/tool/screwdriver, /obj/item/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, /obj/item/multitool, \
- /obj/item/radio, /obj/item/analyzer,/obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, \
- /obj/item/storage/firstaid, /obj/item/reagent_containers/hypospray, /obj/item/roller, /obj/item/storage/backpack)
+ allowed = list(
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/t_scanner,
+ /obj/item/rcd,
+ /obj/item/tool/crowbar,
+ /obj/item/tool/screwdriver,
+ /obj/item/weldingtool,
+ /obj/item/tool/wirecutters,
+ /obj/item/tool/wrench,
+ /obj/item/multitool,
+ /obj/item/radio,
+ /obj/item/analyzer,
+ /obj/item/storage/briefcase/inflatable,
+ /obj/item/melee/baton,
+ /obj/item/gun,
+ /obj/item/storage/firstaid,
+ /obj/item/reagent_containers/hypospray,
+ /obj/item/roller,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
/obj/item/rig/pmc/commander
name = "PMC-C hardsuit control module"
@@ -42,12 +69,15 @@
/obj/item/rig_module/datajack,
)
+/datum/armor/rig/pmc/engineer
+ rad = 1.0
+
/obj/item/rig/pmc/engineer
name = "PMC-E suit control module"
desc = "A suit worn by private military contractors. This one is setup for engineering. Armoured and space ready."
suit_type = "PMC engineer"
icon_state = "pmc_engineergrey_rig"
- armor = list(melee = 60, bullet = 50, laser = 35,energy = 15, bomb = 30, bio = 100, rad = 100)
+ armor_type = /datum/armor/rig/pmc/engineer
siemens_coefficient = 0
/obj/item/rig/pmc/engineer/grey/equipped
diff --git a/code/modules/rigsuits/suits/species/protean.dm b/code/modules/rigsuits/suits/species/protean.dm
new file mode 100644
index 00000000000..8d30ac8c9c7
--- /dev/null
+++ b/code/modules/rigsuits/suits/species/protean.dm
@@ -0,0 +1,58 @@
+/obj/item/rig/protean
+ name = "nanosuit control cluster"
+ suit_type = "nanomachine"
+ icon_state = "nanomachine_rig"
+ armor_type = /datum/armor/rig/protean
+ siemens_coefficient = 0.5
+ slowdown = 0
+ offline_slowdown = 0
+ seal_delay = 1
+ var/mob/living/carbon/human/myprotean
+ initial_modules = list(
+ /obj/item/rig_module/power_sink,
+ /obj/item/rig_module/device/rigwelder, // Almost forgot these, but who uses blobsuits for their intended purpose anyways?
+ /obj/item/rig_module/device/toolset // I did say I was going to do it
+ )
+
+ helm_type = /obj/item/clothing/head/helmet/space/rig/protean
+ boot_type = /obj/item/clothing/shoes/magboots/rig/protean
+ chest_type = /obj/item/clothing/suit/space/rig/protean
+ glove_type = /obj/item/clothing/gloves/gauntlets/rig/protean
+
+/datum/armor/rig/protean
+ bio = 1.0
+ rad = 1.0
+
+/obj/item/rig/protean/relaymove(mob/user, var/direction)
+ if(user.stat || user.stunned)
+ return
+ forced_move(direction, user, FALSE, TRUE)
+
+/obj/item/rig/protean/check_suit_access(mob/living/carbon/human/user)
+ if(user == myprotean)
+ return TRUE
+ return ..()
+
+/obj/item/clothing/head/helmet/space/rig/protean
+ name = "mass"
+ desc = "A helmet-shaped clump of nanomachines."
+ light_overlay = "should not use a light overlay"
+ species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid ie uses human spritesheets
+
+/obj/item/clothing/gloves/gauntlets/rig/protean
+ name = "mass"
+ desc = "Glove-shaped clusters of nanomachines."
+ siemens_coefficient = 0
+ species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid.
+
+/obj/item/clothing/shoes/magboots/rig/protean
+ name = "mass"
+ desc = "Boot-shaped clusters of nanomachines."
+ species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid.
+
+/obj/item/clothing/suit/space/rig/protean
+ name = "mass"
+ desc = "A body-hugging mass of nanomachines."
+ can_breach = 0
+ species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid, ie uses human spritesheets
+ allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton,/obj/item/storage/backpack,/obj/item/bluespace_radio)
diff --git a/code/modules/rigsuits/suits/species/unathi.dm b/code/modules/rigsuits/suits/species/unathi.dm
new file mode 100644
index 00000000000..134e8472de6
--- /dev/null
+++ b/code/modules/rigsuits/suits/species/unathi.dm
@@ -0,0 +1,51 @@
+/obj/item/rig/breacher
+ name = "\improper NT breacher chassis control module"
+ desc = "A cheap NT knock-off of an Unathi battle-rig. Looks like a fish, moves like a fish, steers like a cow."
+ suit_type = "\improper NT breacher"
+ icon_state = "breacher_rig_cheap"
+ armor_type = /datum/armor/rig/breacher
+ emp_protection = -20
+ slowdown = 6
+ offline_slowdown = 10
+ vision_restriction = 1
+ offline_vision_restriction = 2
+ siemens_coefficient = 0.75
+ chest_type = /obj/item/clothing/suit/space/rig/breacher
+ helm_type = /obj/item/clothing/head/helmet/space/rig/breacher
+ boot_type = /obj/item/clothing/shoes/magboots/rig/breacher
+
+/datum/armor/rig/breacher
+ melee = 0.6
+ bullet = 0.6
+ laser = 0.6
+ energy = 0.6
+ bomb = 0.7
+ bio = 1.0
+ rad = 0.5
+
+/obj/item/rig/breacher/fancy
+ name = "breacher chassis control module"
+ desc = "An authentic Unathi breacher chassis. Huge, bulky and absurdly heavy. It must be like wearing a tank."
+ suit_type = "breacher chassis"
+ icon_state = "breacher_rig"
+ armor_type = /datum/armor/rig/breacher/upgraded
+ vision_restriction = 0
+ siemens_coefficient = 0.2
+
+/datum/armor/rig/breacher/upgraded
+ melee = 0.9
+ bullet = 0.9
+ laser = 0.9
+ energy = 0.9
+ bomb = 0.9
+ rad = 0.8
+
+/obj/item/clothing/head/helmet/space/rig/breacher
+ species_restricted = list(SPECIES_UNATHI, SPECIES_UNATHI_DIGI)
+ damage_force = 5
+
+/obj/item/clothing/suit/space/rig/breacher
+ species_restricted = list(SPECIES_UNATHI, SPECIES_UNATHI_DIGI)
+
+/obj/item/clothing/shoes/magboots/rig/breacher
+ species_restricted = list(SPECIES_UNATHI, SPECIES_UNATHI_DIGI)
diff --git a/code/modules/rigsuits/suits/species/vox.dm b/code/modules/rigsuits/suits/species/vox.dm
new file mode 100644
index 00000000000..c96d96cf352
--- /dev/null
+++ b/code/modules/rigsuits/suits/species/vox.dm
@@ -0,0 +1,77 @@
+/obj/item/rig/vox //Just to get the atom_flags set up
+ name = "alien control module"
+ desc = "This metal box writhes and squirms as if it were alive..."
+ suit_type = "alien"
+ icon_state = "vox_rig"
+ armor_type = /datum/armor/rig/vox
+ atom_flags = PHORONGUARD
+ clothing_flags = THICKMATERIAL
+ siemens_coefficient = 0.2
+ offline_slowdown = 5
+ allowed = list(
+ /obj/item/gun,
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/suit_cooling_unit,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
+ air_type = /obj/item/tank/vox
+ helm_type = /obj/item/clothing/head/helmet/space/rig/vox
+ boot_type = /obj/item/clothing/shoes/magboots/rig/vox
+ chest_type = /obj/item/clothing/suit/space/rig/vox
+ glove_type = /obj/item/clothing/gloves/gauntlets/rig/vox
+
+/datum/armor/rig/vox
+ melee = 0.6
+ bullet = 0.5
+ laser = 0.4
+ energy = 0.25
+ bomb = 0.3
+ bio = 1.0
+ rad = 0.5
+
+/obj/item/clothing/head/helmet/space/rig/vox
+ species_restricted = list(SPECIES_VOX)
+ inv_hide_flags = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+
+/obj/item/clothing/shoes/magboots/rig/vox
+ name = "talons"
+ species_restricted = list(SPECIES_VOX)
+
+/obj/item/clothing/suit/space/rig/vox
+ species_restricted = list(SPECIES_VOX)
+
+/obj/item/clothing/gloves/gauntlets/rig/vox
+ siemens_coefficient = 0
+ species_restricted = list(SPECIES_VOX)
+
+/obj/item/rig/vox/carapace
+ name = "dense alien control module"
+ suit_type = "dense alien"
+ emp_protection = 40 //change this to 30 if too high.
+ req_access = list(ACCESS_FACTION_SYNDICATE)
+ cell_type = /obj/item/cell/hyper
+ initial_modules = list(
+ /obj/item/rig_module/mounted/energy_blade,
+ /obj/item/rig_module/sprinter,
+ /obj/item/rig_module/electrowarfare_suite,
+ /obj/item/rig_module/vision,
+ /obj/item/rig_module/power_sink,
+ /obj/item/rig_module/self_destruct
+ )
+
+/obj/item/rig/vox/stealth
+ name = "sinister alien control module"
+ suit_type = "sinister alien"
+ icon_state = "voxstealth_rig"
+ emp_protection = 40 //change this to 30 if too high.
+ req_access = list(ACCESS_FACTION_SYNDICATE)
+ cell_type = /obj/item/cell/hyper
+ initial_modules = list(
+ /obj/item/rig_module/stealth_field,
+ /obj/item/rig_module/electrowarfare_suite,
+ /obj/item/rig_module/vision,
+ /obj/item/rig_module/power_sink,
+ /obj/item/rig_module/self_destruct
+ )
diff --git a/code/modules/rigsuits/suits/station.dm b/code/modules/rigsuits/suits/station.dm
deleted file mode 100644
index d1f71e0c445..00000000000
--- a/code/modules/rigsuits/suits/station.dm
+++ /dev/null
@@ -1,291 +0,0 @@
-/obj/item/clothing/head/helmet/space/rig/industrial
- camera_networks = list(NETWORK_MINE)
-
-/obj/item/clothing/head/helmet/space/rig/ce
- camera_networks = list(NETWORK_ENGINEERING,NETWORK_COMMAND)
-
-/obj/item/clothing/head/helmet/space/rig/eva
- light_overlay = "helmet_light_dual"
- camera_networks = list(NETWORK_ENGINEERING)
-
-/obj/item/clothing/head/helmet/space/rig/hazmat
- light_overlay = "hardhat_light"
- camera_networks = list(NETWORK_RESEARCH,NETWORK_COMMAND)
-
-/obj/item/clothing/head/helmet/space/rig/medical
- camera_networks = list(NETWORK_MEDICAL)
-
-/obj/item/clothing/head/helmet/space/rig/hazard
- light_overlay = "helmet_light_dual"
- camera_networks = list(NETWORK_SECURITY)
-
-//Internal Affairs suit
-/obj/item/rig/internalaffairs
- name = "augmented tie"
- suit_type = "augmented suit"
- desc = "The last suit you'll ever wear."
- icon_state = "internalaffairs_rig"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
- siemens_coefficient = 0.9
- slowdown = 0
- offline_slowdown = 0
- offline_vision_restriction = 0
-
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/backpack,
- /obj/item/storage/briefcase,
- /obj/item/storage/secure/briefcase
- )
-
- glove_type = null
- helm_type = null
- boot_type = null
-
-/obj/item/rig/internalaffairs/equipped
- initial_modules = list(
- /obj/item/rig_module/ai_container,
- /obj/item/rig_module/device/flash,
- /obj/item/rig_module/device/paperdispenser,
- /obj/item/rig_module/device/pen,
- /obj/item/rig_module/device/stamp
- )
-
- glove_type = null
- helm_type = null
- boot_type = null
-
-//Mining suit
-/obj/item/rig/industrial
- name = "industrial suit control module"
- suit_type = "industrial hardsuit"
- desc = "A heavy, powerful hardsuit used by construction crews and mining corporations."
- icon_state = "engineering_rig"
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
- slowdown = 1
- offline_slowdown = 10
- offline_vision_restriction = 2
- emp_protection = -20
- siemens_coefficient= 0.75
- rigsuit_max_pressure = 15 * ONE_ATMOSPHERE // Max pressure the rig protects against when sealed
- rigsuit_min_pressure = 0 // Min pressure the rig protects against when sealed
- helm_type = /obj/item/clothing/head/helmet/space/rig/industrial
-
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/storage/backpack,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/bag/ore,
- /obj/item/t_scanner,
- /obj/item/pickaxe,
- /obj/item/rcd
- )
-
-/obj/item/rig/industrial/equipped
-
- initial_modules = list(
- /obj/item/rig_module/device/plasmacutter,
- /obj/item/rig_module/device/drill,
- /obj/item/rig_module/device/orescanner,
- /obj/item/rig_module/vision/material,
- /obj/item/rig_module/maneuvering_jets,
- )
-
-//Engineering suit
-/obj/item/rig/eva
- name = "EVA suit control module"
- suit_type = "EVA hardsuit"
- desc = "A light hardsuit for repairs and maintenance to the outside of habitats and vessels."
- icon_state = "eva_rig"
- armor = list(melee = 30, bullet = 10, laser = 20,energy = 25, bomb = 20, bio = 100, rad = 100)
- slowdown = 0
- offline_slowdown = 1
- offline_vision_restriction = 1
- siemens_coefficient= 0.75
- seal_delay = 24 //Should be slightly faster than other hardsuits, giving Engineering faster response time for emergencies.
-
-
- helm_type = /obj/item/clothing/head/helmet/space/rig/eva
- glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
-
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/backpack,
- /obj/item/storage/briefcase/inflatable,
- /obj/item/t_scanner,
- /obj/item/rcd
- )
-
- max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
-
-/obj/item/clothing/gloves/gauntlets/rig/eva
- name = "insulated gauntlets"
- siemens_coefficient = 0
-
-/obj/item/rig/eva/equipped
- initial_modules = list(
- /obj/item/rig_module/device/plasmacutter,
- /obj/item/rig_module/maneuvering_jets,
- /obj/item/rig_module/device/rcd,
- /obj/item/rig_module/vision/meson
- )
-
-//Chief Engineer's rig. This is sort of a halfway point between the old hardsuits (voidsuits) and the rig class.
-/obj/item/rig/ce
-
- name = "advanced voidsuit control module"
- suit_type = "advanced voidsuit"
- desc = "An advanced voidsuit that protects against hazardous, low pressure environments. Shines with a high polish."
- icon_state = "ce_rig"
- armor = list(melee = 40, bullet = 10, laser = 30,energy = 25, bomb = 40, bio = 100, rad = 100)
- slowdown = 0
- offline_slowdown = 0
- offline_vision_restriction = 0
- siemens_coefficient= 0.75
- rigsuit_max_pressure = 20 * ONE_ATMOSPHERE // Max pressure the rig protects against when sealed
- rigsuit_min_pressure = 0 // Min pressure the rig protects against when sealed
- seal_delay = 8 //Why did we give the EVA hardsuit a better equip time than the CE hardsuit, again? I'm changing it.
-
- helm_type = /obj/item/clothing/head/helmet/space/rig/ce
- glove_type = /obj/item/clothing/gloves/gauntlets/rig/ce
- boot_type = /obj/item/clothing/shoes/magboots/rig/ce
-
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/backpack,
- /obj/item/storage/briefcase/inflatable,
- /obj/item/t_scanner,
- /obj/item/rcd
- )
- max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
-
-/obj/item/clothing/gloves/gauntlets/rig/ce
- name = "insulated gauntlets"
- siemens_coefficient = 0
-
-/obj/item/clothing/shoes/magboots/rig/ce
- slowdown_on = 0
-
-/obj/item/rig/ce/equipped
- initial_modules = list(
- /obj/item/rig_module/ai_container,
- /obj/item/rig_module/maneuvering_jets,
- /obj/item/rig_module/device/plasmacutter,
- /obj/item/rig_module/device/rcd,
- /obj/item/rig_module/vision/meson,
- /obj/item/rig_module/device/rigwelder, // CE gets tools in their RIG
- /obj/item/rig_module/device/toolset
- )
-
-//Research Director's suit. Just add red crowbar.
-/obj/item/rig/hazmat
-
- name = "AMI control module"
- suit_type = "hazmat hardsuit"
- desc = "An Anomalous Material Interaction hardsuit that protects against the strangest energies the universe can throw at it."
- icon_state = "science_rig"
- armor = list(melee = 45, bullet = 5, laser = 45, energy = 80, bomb = 60, bio = 100, rad = 100)
- slowdown = 1
- offline_vision_restriction = 1
- siemens_coefficient= 0.75
-
- helm_type = /obj/item/clothing/head/helmet/space/rig/hazmat
-
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/stack/flag,
- /obj/item/storage/excavation,
- /obj/item/pickaxe,
- /obj/item/healthanalyzer,
- /obj/item/measuring_tape,
- /obj/item/ano_scanner,
- /obj/item/depth_scanner,
- /obj/item/core_sampler,
- /obj/item/gps,
- /obj/item/beacon_locator,
- /obj/item/radio/beacon,
- /obj/item/pickaxe/hand,
- /obj/item/storage/backpack,
- /obj/item/storage/bag/fossils)
-
-/obj/item/rig/hazmat/equipped
- initial_modules = list(
- /obj/item/rig_module/ai_container,
- /obj/item/rig_module/maneuvering_jets,
- /obj/item/rig_module/device/anomaly_scanner
- )
-
-//Paramedic suit
-/obj/item/rig/medical
-
- name = "rescue suit control module"
- suit_type = "rescue hardsuit"
- desc = "A durable suit designed for medical rescue in high risk areas."
- icon_state = "medical_rig"
- armor = list(melee = 30, bullet = 15, laser = 20, energy = 60, bomb = 30, bio = 100, rad = 100)
- slowdown = 1
- offline_vision_restriction = 1
- siemens_coefficient= 0.75
-
- helm_type = /obj/item/clothing/head/helmet/space/rig/medical
-
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/firstaid,
- /obj/item/healthanalyzer,
- /obj/item/storage/backpack,
- /obj/item/stack/medical,
- /obj/item/roller
- )
-
-/obj/item/rig/medical/equipped
- initial_modules = list(
- /obj/item/rig_module/sprinter,
- /obj/item/rig_module/chem_dispenser/injector,
- /obj/item/rig_module/maneuvering_jets,
- /obj/item/rig_module/device/healthscanner,
- /obj/item/rig_module/vision/medhud
- )
-
-//Security suit
-/obj/item/rig/hazard
- name = "hazard hardsuit control module"
- suit_type = "hazard hardsuit"
- desc = "A Security hardsuit designed for prolonged EVA in dangerous environments."
- icon_state = "hazard_rig"
- armor = list(melee = 60, bullet = 40, laser = 30, energy = 15, bomb = 60, bio = 100, rad = 30)
- slowdown = 1
- offline_slowdown = 3
- offline_vision_restriction = 1
- siemens_coefficient= 0.7
-
- helm_type = /obj/item/clothing/head/helmet/space/rig/hazard
-
- allowed = list(
- /obj/item/gun,
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/storage/backpack,
- /obj/item/suit_cooling_unit,
- /obj/item/melee/baton
- )
-
-/obj/item/rig/hazard/equipped
-
- initial_modules = list(
- /obj/item/rig_module/vision/sechud,
- /obj/item/rig_module/maneuvering_jets,
- /obj/item/rig_module/grenade_launcher,
- /obj/item/rig_module/mounted/taser
- )
diff --git a/code/modules/rigsuits/suits/station/cargo.dm b/code/modules/rigsuits/suits/station/cargo.dm
new file mode 100644
index 00000000000..226f8781d27
--- /dev/null
+++ b/code/modules/rigsuits/suits/station/cargo.dm
@@ -0,0 +1,47 @@
+/obj/item/rig/industrial
+ name = "industrial suit control module"
+ suit_type = "industrial hardsuit"
+ desc = "A heavy, powerful hardsuit used by construction crews and mining corporations."
+ icon_state = "engineering_rig"
+ armor_type = /datum/armor/rig/industrial
+ slowdown = 1
+ offline_slowdown = 10
+ offline_vision_restriction = 2
+ emp_protection = -20
+ siemens_coefficient= 0.75
+ rigsuit_max_pressure = 15 * ONE_ATMOSPHERE // Max pressure the rig protects against when sealed
+ rigsuit_min_pressure = 0 // Min pressure the rig protects against when sealed
+ helm_type = /obj/item/clothing/head/helmet/space/rig/industrial
+
+ allowed = list(
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/suit_cooling_unit,
+ /obj/item/storage/bag/ore,
+ /obj/item/t_scanner,
+ /obj/item/pickaxe,
+ /obj/item/rcd,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
+
+/datum/armor/rig/industrial
+ melee = 0.6
+ bullet = 0.5
+ laser = 0.3
+ energy = 0.2
+ bomb = 0.5
+ bio = 1.0
+ rad = 0.7
+
+/obj/item/rig/industrial/equipped
+ initial_modules = list(
+ /obj/item/rig_module/device/plasmacutter,
+ /obj/item/rig_module/device/drill,
+ /obj/item/rig_module/device/orescanner,
+ /obj/item/rig_module/vision/material,
+ /obj/item/rig_module/maneuvering_jets,
+ )
+
+/obj/item/clothing/head/helmet/space/rig/industrial
+ camera_networks = list(NETWORK_MINE)
diff --git a/code/modules/rigsuits/suits/station/engineering.dm b/code/modules/rigsuits/suits/station/engineering.dm
new file mode 100644
index 00000000000..d0a6a689195
--- /dev/null
+++ b/code/modules/rigsuits/suits/station/engineering.dm
@@ -0,0 +1,114 @@
+/obj/item/rig/eva
+ name = "EVA suit control module"
+ suit_type = "EVA hardsuit"
+ desc = "A light hardsuit for repairs and maintenance to the outside of habitats and vessels."
+ icon_state = "eva_rig"
+ armor_type = /datum/armor/rig/eva
+ slowdown = 0
+ offline_slowdown = 1
+ offline_vision_restriction = 1
+ siemens_coefficient= 0.75
+ seal_delay = 24 //Should be slightly faster than other hardsuits, giving Engineering faster response time for emergencies.
+
+
+ helm_type = /obj/item/clothing/head/helmet/space/rig/eva
+ glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
+
+ allowed = list(
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/suit_cooling_unit,
+ /obj/item/storage/backpack,
+ /obj/item/storage/briefcase/inflatable,
+ /obj/item/t_scanner,
+ /obj/item/rcd
+ )
+
+ max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
+
+/datum/armor/rig/eva
+ melee = 0.35
+ bullet = 0.1
+ laser = 0.2
+ energy = 0.25
+ bomb = 0.45
+ bio = 1.0
+ rad = 0.95
+
+/obj/item/clothing/gloves/gauntlets/rig/eva
+ name = "insulated gauntlets"
+ siemens_coefficient = 0
+
+/obj/item/rig/eva/equipped
+ initial_modules = list(
+ /obj/item/rig_module/device/plasmacutter,
+ /obj/item/rig_module/maneuvering_jets,
+ /obj/item/rig_module/device/rcd,
+ /obj/item/rig_module/vision/meson
+ )
+
+/obj/item/clothing/head/helmet/space/rig/eva
+ light_overlay = "helmet_light_dual"
+ camera_networks = list(NETWORK_ENGINEERING)
+
+/obj/item/rig/ce
+ name = "advanced voidsuit control module"
+ suit_type = "advanced voidsuit"
+ desc = "An advanced voidsuit that protects against hazardous, low pressure environments. Shines with a high polish."
+ icon_state = "ce_rig"
+ armor_type = /datum/armor/rig/ce
+ slowdown = 0
+ offline_slowdown = 0
+ offline_vision_restriction = 0
+ siemens_coefficient= 0.75
+ rigsuit_max_pressure = 20 * ONE_ATMOSPHERE // Max pressure the rig protects against when sealed
+ rigsuit_min_pressure = 0 // Min pressure the rig protects against when sealed
+ seal_delay = 8 //Why did we give the EVA hardsuit a better equip time than the CE hardsuit, again? I'm changing it.
+
+ helm_type = /obj/item/clothing/head/helmet/space/rig/ce
+ glove_type = /obj/item/clothing/gloves/gauntlets/rig/ce
+ boot_type = /obj/item/clothing/shoes/magboots/rig/ce
+
+ allowed = list(
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/suit_cooling_unit,
+ /obj/item/storage/bag/ore,
+ /obj/item/t_scanner,
+ /obj/item/pickaxe,
+ /obj/item/rcd,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
+
+ max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
+
+/datum/armor/rig/ce
+ melee = 0.4
+ bullet = 0.2
+ laser = 0.3
+ energy = 0.25
+ bomb = 0.4
+ bio = 1.0
+ rad = 1.0
+
+/obj/item/clothing/gloves/gauntlets/rig/ce
+ name = "insulated gauntlets"
+ siemens_coefficient = 0
+
+/obj/item/clothing/shoes/magboots/rig/ce
+ slowdown_on = 0
+
+/obj/item/rig/ce/equipped
+ initial_modules = list(
+ /obj/item/rig_module/ai_container,
+ /obj/item/rig_module/maneuvering_jets,
+ /obj/item/rig_module/device/plasmacutter,
+ /obj/item/rig_module/device/rcd,
+ /obj/item/rig_module/vision/meson,
+ /obj/item/rig_module/device/rigwelder, // CE gets tools in their RIG
+ /obj/item/rig_module/device/toolset
+ )
+
+/obj/item/clothing/head/helmet/space/rig/ce
+ camera_networks = list(NETWORK_ENGINEERING,NETWORK_COMMAND)
diff --git a/code/modules/rigsuits/suits/station/medical.dm b/code/modules/rigsuits/suits/station/medical.dm
new file mode 100644
index 00000000000..61a646a7d5a
--- /dev/null
+++ b/code/modules/rigsuits/suits/station/medical.dm
@@ -0,0 +1,48 @@
+/obj/item/rig/medical
+ name = "rescue suit control module"
+ suit_type = "rescue hardsuit"
+ desc = "A durable suit designed for medical rescue in high risk areas."
+ icon_state = "medical_rig"
+ armor_type = /datum/armor/rig/medical
+ slowdown = 1
+ offline_vision_restriction = 1
+ siemens_coefficient= 0.75
+
+ helm_type = /obj/item/clothing/head/helmet/space/rig/medical
+
+ allowed = list(
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/suit_cooling_unit,
+ /obj/item/storage/firstaid,
+ /obj/item/healthanalyzer,
+ /obj/item/stack/medical,
+ /obj/item/roller,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
+
+/datum/armor/rig/medical
+ melee = 0.3
+ bullet = 0.15
+ laser = 0.2
+ energy = 0.6
+ bomb = 0.3
+ bio = 1.0
+ rad = 1.0
+
+/obj/item/rig/medical/equipped
+ seal_delay = 5
+ initial_modules = list(
+ /obj/item/rig_module/maneuvering_jets,
+ /obj/item/rig_module/device/healthscanner,
+ /obj/item/rig_module/vision/medhud,
+ /obj/item/rig_module/sprinter,
+ /obj/item/rig_module/chem_dispenser/injector,
+ /obj/item/rig_module/pat_module,
+ /obj/item/rig_module/rescue_pharm,
+ /obj/item/rig_module/device/hand_defib,
+ )
+
+/obj/item/clothing/head/helmet/space/rig/medical
+ camera_networks = list(NETWORK_MEDICAL)
diff --git a/code/modules/rigsuits/suits/station/misc.dm b/code/modules/rigsuits/suits/station/misc.dm
new file mode 100644
index 00000000000..ae094d1bb55
--- /dev/null
+++ b/code/modules/rigsuits/suits/station/misc.dm
@@ -0,0 +1,36 @@
+/obj/item/rig/internalaffairs
+ name = "augmented tie"
+ suit_type = "augmented suit"
+ desc = "The last suit you'll ever wear."
+ icon_state = "internalaffairs_rig"
+ armor_type = /datum/armor/none
+ siemens_coefficient = 0.9
+ slowdown = 0
+ offline_slowdown = 0
+ offline_vision_restriction = 0
+
+ allowed = list(
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/suit_cooling_unit,
+ /obj/item/storage/backpack,
+ /obj/item/storage/briefcase,
+ /obj/item/storage/secure/briefcase
+ )
+
+ glove_type = null
+ helm_type = null
+ boot_type = null
+
+/obj/item/rig/internalaffairs/equipped
+ initial_modules = list(
+ /obj/item/rig_module/ai_container,
+ /obj/item/rig_module/device/flash,
+ /obj/item/rig_module/device/paperdispenser,
+ /obj/item/rig_module/device/pen,
+ /obj/item/rig_module/device/stamp
+ )
+
+ glove_type = null
+ helm_type = null
+ boot_type = null
diff --git a/code/modules/rigsuits/suits/station/science.dm b/code/modules/rigsuits/suits/station/science.dm
new file mode 100644
index 00000000000..01500fb7e0c
--- /dev/null
+++ b/code/modules/rigsuits/suits/station/science.dm
@@ -0,0 +1,53 @@
+/obj/item/rig/hazmat
+ name = "AMI control module"
+ suit_type = "hazmat hardsuit"
+ desc = "An Anomalous Material Interaction hardsuit that protects against the strangest energies the universe can throw at it."
+ icon_state = "science_rig"
+ armor_type = /datum/armor/rig/ami
+ slowdown = 1
+ offline_vision_restriction = 1
+ siemens_coefficient= 0.75
+
+ helm_type = /obj/item/clothing/head/helmet/space/rig/hazmat
+
+ allowed = list(
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/suit_cooling_unit,
+ /obj/item/stack/flag,
+ /obj/item/storage/excavation,
+ /obj/item/pickaxe,
+ /obj/item/healthanalyzer,
+ /obj/item/measuring_tape,
+ /obj/item/ano_scanner,
+ /obj/item/depth_scanner,
+ /obj/item/core_sampler,
+ /obj/item/gps,
+ /obj/item/beacon_locator,
+ /obj/item/radio/beacon,
+ /obj/item/pickaxe/hand,
+ /obj/item/storage/bag/fossils,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
+
+/datum/armor/rig/ami
+ melee = 0.45
+ bullet = 0.2
+ laser = 0.45
+ energy = 0.8
+ bomb = 0.6
+ bio = 1.0
+ rad = 0.9
+
+/obj/item/rig/hazmat/equipped
+ initial_modules = list(
+ /obj/item/rig_module/ai_container,
+ /obj/item/rig_module/maneuvering_jets,
+ /obj/item/rig_module/device/anomaly_scanner,
+ /obj/item/rig_module/device/drill,
+ )
+
+/obj/item/clothing/head/helmet/space/rig/hazmat
+ light_overlay = "hardhat_light"
+ camera_networks = list(NETWORK_RESEARCH,NETWORK_COMMAND)
diff --git a/code/modules/rigsuits/suits/station/security.dm b/code/modules/rigsuits/suits/station/security.dm
new file mode 100644
index 00000000000..1f821a207b0
--- /dev/null
+++ b/code/modules/rigsuits/suits/station/security.dm
@@ -0,0 +1,43 @@
+/obj/item/rig/hazard
+ name = "hazard hardsuit control module"
+ suit_type = "hazard hardsuit"
+ desc = "A Security hardsuit designed for prolonged EVA in dangerous environments."
+ icon_state = "hazard_rig"
+ armor_type = /datum/armor/rig/hazard
+ slowdown = 1
+ offline_slowdown = 3
+ offline_vision_restriction = 1
+ siemens_coefficient= 0.7
+
+ helm_type = /obj/item/clothing/head/helmet/space/rig/hazard
+
+ allowed = list(
+ /obj/item/gun,
+ /obj/item/flashlight,
+ /obj/item/tank,
+ /obj/item/suit_cooling_unit,
+ /obj/item/melee/baton,
+ /obj/item/storage/backpack,
+ /obj/item/bluespace_radio,
+ )
+/datum/armor/rig/hazard
+ melee = 0.6
+ bullet = 0.4
+ laser = 0.3
+ energy = 0.15
+ bomb = 0.6
+ bio = 1.0
+ rad = 0.3
+
+/obj/item/rig/hazard/equipped
+
+ initial_modules = list(
+ /obj/item/rig_module/vision/sechud,
+ /obj/item/rig_module/maneuvering_jets,
+ /obj/item/rig_module/grenade_launcher,
+ /obj/item/rig_module/mounted/taser
+ )
+
+/obj/item/clothing/head/helmet/space/rig/hazard
+ light_overlay = "helmet_light_dual"
+ camera_networks = list(NETWORK_SECURITY)
diff --git a/code/modules/rigsuits/suits/station_vr.dm b/code/modules/rigsuits/suits/station_vr.dm
deleted file mode 100644
index dda0f351d9c..00000000000
--- a/code/modules/rigsuits/suits/station_vr.dm
+++ /dev/null
@@ -1,56 +0,0 @@
-//Drill added for hazmat suit
-/obj/item/rig/hazmat/equipped
- initial_modules = list(
- /obj/item/rig_module/ai_container,
- /obj/item/rig_module/maneuvering_jets,
- /obj/item/rig_module/device/anomaly_scanner,
- /obj/item/rig_module/device/drill //The suit has nothing to mine with otherwise.
- )
-
-//Access restriction and seal delay, plus pat_module and rescue_pharm for medical suit
-/obj/item/rig/medical/equipped
- seal_delay = 5
-
- initial_modules = list(
- /obj/item/rig_module/maneuvering_jets,
- /obj/item/rig_module/sprinter,
- /obj/item/rig_module/pat_module,
- /obj/item/rig_module/rescue_pharm,
- /obj/item/rig_module/device/hand_defib
- )
-
-//Area allowing backpacks to be placed on rigsuits.
-/obj/item/rig/vox
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/backpack,/obj/item/bluespace_radio)
-/obj/item/rig/combat1
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton,/obj/item/storage/backpack,/obj/item/bluespace_radio)
-/obj/item/rig/ert
- allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/t_scanner, /obj/item/rcd, /obj/item/tool/crowbar, \
- /obj/item/tool/screwdriver, /obj/item/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, /obj/item/multitool, \
- /obj/item/radio, /obj/item/analyzer,/obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, \
- /obj/item/storage/firstaid, /obj/item/reagent_containers/hypospray, /obj/item/roller, /obj/item/storage/backpack,/obj/item/bluespace_radio)
-/obj/item/rig/light/ninja
- allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/cell, /obj/item/storage/backpack,/obj/item/bluespace_radio)
-/obj/item/rig/merc
- 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/storage/backpack,/obj/item/bluespace_radio)
-/obj/item/rig/ce
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/t_scanner,/obj/item/pickaxe, /obj/item/rcd,/obj/item/storage/backpack,/obj/item/bluespace_radio)
-/obj/item/rig/medical
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/firstaid,/obj/item/healthanalyzer,/obj/item/stack/medical,/obj/item/roller,/obj/item/storage/backpack,/obj/item/bluespace_radio)
-/obj/item/rig/hazmat
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/stack/flag,/obj/item/storage/excavation,/obj/item/pickaxe,/obj/item/healthanalyzer,/obj/item/measuring_tape,/obj/item/ano_scanner,/obj/item/depth_scanner,/obj/item/core_sampler,/obj/item/gps,/obj/item/beacon_locator,/obj/item/radio/beacon,/obj/item/pickaxe/hand,/obj/item/storage/bag/fossils,/obj/item/storage/backpack,/obj/item/bluespace_radio)
-/obj/item/rig/hazard
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton,/obj/item/storage/backpack,/obj/item/bluespace_radio)
-/obj/item/rig/industrial
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/t_scanner,/obj/item/pickaxe, /obj/item/rcd,/obj/item/storage/backpack,/obj/item/bluespace_radio)
-
-/obj/item/rig/military
- allowed = list(/obj/item/flashlight, /obj/item/tank,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/handcuffs, \
- /obj/item/t_scanner, /obj/item/rcd, /obj/item/weldingtool, /obj/item/tool, /obj/item/multitool, \
- /obj/item/radio, /obj/item/analyzer,/obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, \
- /obj/item/storage/firstaid, /obj/item/reagent_containers/hypospray, /obj/item/roller, /obj/item/suit_cooling_unit, /obj/item/storage/backpack,/obj/item/bluespace_radio)
-/obj/item/rig/pmc
- allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/t_scanner, /obj/item/rcd, /obj/item/tool/crowbar, \
- /obj/item/tool/screwdriver, /obj/item/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, /obj/item/multitool, \
- /obj/item/radio, /obj/item/analyzer,/obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, \
- /obj/item/storage/firstaid, /obj/item/reagent_containers/hypospray, /obj/item/roller, /obj/item/storage/backpack,/obj/item/bluespace_radio)
diff --git a/code/modules/shieldgen/directional_shield.dm b/code/modules/shieldgen/directional_shield.dm
index c38c7e37771..9b2fed951f7 100644
--- a/code/modules/shieldgen/directional_shield.dm
+++ b/code/modules/shieldgen/directional_shield.dm
@@ -55,9 +55,9 @@
/obj/effect/directional_shield/CanPass(atom/movable/mover, turf/target)
. = ..()
- if(istype(mover, /obj/item/projectile))
- var/obj/item/projectile/P = mover
- if(istype(P, /obj/item/projectile/test)) // Turrets need to try to kill the shield and so their test bullet needs to penetrate.
+ if(istype(mover, /obj/projectile))
+ var/obj/projectile/P = mover
+ if(istype(P, /obj/projectile/test)) // Turrets need to try to kill the shield and so their test bullet needs to penetrate.
return TRUE
var/bad_arc = REVERSE_DIR(dir) // Arc of directions from which we cannot block.
@@ -65,7 +65,7 @@
return FALSE
return TRUE
-/obj/effect/directional_shield/bullet_act(var/obj/item/projectile/P)
+/obj/effect/directional_shield/bullet_act(var/obj/projectile/P)
adjust_health(-P.get_structure_damage())
P.on_hit()
playsound(src, 'sound/effects/EMPulse.ogg', 75, 1)
diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm
index c5e3cf38c6d..7266fb0926c 100644
--- a/code/modules/shieldgen/emergency_shield.dm
+++ b/code/modules/shieldgen/emergency_shield.dm
@@ -43,7 +43,7 @@
if(!istype(W)) return
//Calculate damage
- var/aforce = W.force
+ var/aforce = W.damage_force
if(W.damtype == BRUTE || W.damtype == BURN)
src.health -= aforce
@@ -56,7 +56,7 @@
..()
-/obj/machinery/shield/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/shield/bullet_act(var/obj/projectile/Proj)
health -= Proj.get_structure_damage()
..()
check_failure()
diff --git a/code/modules/shieldgen/energy_field.dm b/code/modules/shieldgen/energy_field.dm
index 2e55ed0cc9b..27261d7908f 100644
--- a/code/modules/shieldgen/energy_field.dm
+++ b/code/modules/shieldgen/energy_field.dm
@@ -45,12 +45,12 @@
/obj/effect/energy_field/legacy_ex_act(var/severity)
adjust_strength(-(4 - severity) * 4)
-/obj/effect/energy_field/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/energy_field/bullet_act(var/obj/projectile/Proj)
adjust_strength(-Proj.get_structure_damage() / 10)
/obj/effect/energy_field/attackby(obj/item/W, mob/user)
- if(W.force)
- adjust_strength(-W.force / 20)
+ if(W.damage_force)
+ adjust_strength(-W.damage_force / 20)
user.do_attack_animation(src)
user.setClickCooldown(user.get_attack_speed(W))
..()
diff --git a/code/modules/shieldgen/energy_shield.dm b/code/modules/shieldgen/energy_shield.dm
index 8c2660516e5..58fc4ba6b03 100644
--- a/code/modules/shieldgen/energy_shield.dm
+++ b/code/modules/shieldgen/energy_shield.dm
@@ -239,7 +239,7 @@
// Projectiles
-/obj/effect/shield/bullet_act(var/obj/item/projectile/proj)
+/obj/effect/shield/bullet_act(var/obj/projectile/proj)
if(proj.damage_type == BURN)
take_damage(proj.get_structure_damage(), SHIELD_DAMTYPE_HEAT)
else if (proj.damage_type == BRUTE)
@@ -256,11 +256,11 @@
if(gen.check_flag(MODEFLAG_HYPERKINETIC))
user.visible_message("\The [user] hits \the [src] with \the [I]!")
if(I.damtype == BURN)
- take_damage(I.force, SHIELD_DAMTYPE_HEAT)
+ take_damage(I.damage_force, SHIELD_DAMTYPE_HEAT)
else if (I.damtype == BRUTE)
- take_damage(I.force, SHIELD_DAMTYPE_PHYSICAL)
+ take_damage(I.damage_force, SHIELD_DAMTYPE_PHYSICAL)
else
- take_damage(I.force, SHIELD_DAMTYPE_EM)
+ take_damage(I.damage_force, SHIELD_DAMTYPE_EM)
else
user.visible_message("\The [user] tries to attack \the [src] with \the [I], but it passes through!")
@@ -342,7 +342,7 @@
return !gen.check_flag(MODEFLAG_HYPERKINETIC)
// Beams
-/obj/item/projectile/beam/can_pass_shield(var/obj/machinery/power/shield_generator/gen)
+/obj/projectile/beam/can_pass_shield(var/obj/machinery/power/shield_generator/gen)
return !gen.check_flag(MODEFLAG_PHOTONIC)
diff --git a/code/modules/shieldgen/sheldwallgen.dm b/code/modules/shieldgen/sheldwallgen.dm
index d3579d64018..59a52139043 100644
--- a/code/modules/shieldgen/sheldwallgen.dm
+++ b/code/modules/shieldgen/sheldwallgen.dm
@@ -212,7 +212,7 @@
src.cleanup(8)
..()
-/obj/machinery/shieldwallgen/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/shieldwallgen/bullet_act(var/obj/projectile/Proj)
storedpower -= 400 * Proj.get_structure_damage()
..()
return
@@ -277,7 +277,7 @@
gen_secondary.storedpower -= power_usage
-/obj/machinery/shieldwall/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/shieldwall/bullet_act(var/obj/projectile/Proj)
if(needs_power)
var/obj/machinery/shieldwallgen/G
if(prob(50))
@@ -321,5 +321,5 @@
return
if(istype(mover) && mover.check_pass_flags(ATOM_PASS_GLASS))
return prob(20)
- if(istype(mover, /obj/item/projectile))
+ if(istype(mover, /obj/projectile))
return prob(10)
diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm
index cf6e03626ab..5ff821496b2 100644
--- a/code/modules/shuttles/shuttle_console.dm
+++ b/code/modules/shuttles/shuttle_console.dm
@@ -136,7 +136,7 @@
to_chat(user, "You short out the console's ID checking system. It's now available to everyone!")
return 1
-/obj/machinery/computer/shuttle_control/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/computer/shuttle_control/bullet_act(var/obj/projectile/Proj)
visible_message("\The [Proj] ricochets off \the [src]!")
/obj/machinery/computer/shuttle_control/legacy_ex_act()
diff --git a/code/modules/species/outsider/scori.dm b/code/modules/species/outsider/scori.dm
index 249d583ea3a..7b5e2ccef64 100644
--- a/code/modules/species/outsider/scori.dm
+++ b/code/modules/species/outsider/scori.dm
@@ -41,7 +41,7 @@
//Physical resistances and weaknesses.
brute_mod = 0.85
- burn_mod = 0.15
+ burn_mod = 0.25
radiation_mod = 0.5
toxins_mod = 0.5
diff --git a/code/modules/species/promethean/promethean_blob.dm b/code/modules/species/promethean/promethean_blob.dm
index 1d829cf22cd..5e0bb94f5d0 100644
--- a/code/modules/species/promethean/promethean_blob.dm
+++ b/code/modules/species/promethean/promethean_blob.dm
@@ -195,7 +195,7 @@
set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
update_icon()
-/mob/living/simple_mob/slime/promethean/bullet_act(obj/item/projectile/P)
+/mob/living/simple_mob/slime/promethean/bullet_act(obj/projectile/P)
if(humanform)
return humanform.bullet_act(P)
else
diff --git a/code/modules/species/station/xenomorph_hybrids/hybrid_resin.dm b/code/modules/species/station/xenomorph_hybrids/hybrid_resin.dm
index c1ca94cc79a..ae8c43a5253 100644
--- a/code/modules/species/station/xenomorph_hybrids/hybrid_resin.dm
+++ b/code/modules/species/station/xenomorph_hybrids/hybrid_resin.dm
@@ -116,7 +116,7 @@
"You hear squelching...")
/obj/structure/bed/hybrid_nest/attackby(obj/item/W as obj, mob/user as mob)
- var/aforce = W.force
+ var/aforce = W.damage_force
health = max(0, health - aforce)
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
for(var/mob/M in viewers(src, 7))
@@ -172,7 +172,7 @@
qdel(src)
return
-/obj/effect/alien/hybrid_resin/bullet_act(var/obj/item/projectile/Proj)
+/obj/effect/alien/hybrid_resin/bullet_act(var/obj/projectile/Proj)
health -= Proj.damage
..()
healthcheck()
@@ -247,7 +247,7 @@
/obj/effect/alien/hybrid_resin/attackby(obj/item/W as obj, mob/user as mob)
user.setClickCooldown(user.get_attack_speed(W))
- var/aforce = W.force
+ var/aforce = W.damage_force
health = max(0, health - aforce)
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
healthcheck()
diff --git a/code/modules/species/xenomorphs/alien_facehugger.dm b/code/modules/species/xenomorphs/alien_facehugger.dm
index 11636b09b95..239ff19dbd4 100644
--- a/code/modules/species/xenomorphs/alien_facehugger.dm
+++ b/code/modules/species/xenomorphs/alien_facehugger.dm
@@ -61,7 +61,7 @@ var/const/MAX_ACTIVE_TIME = 400
return
/obj/item/clothing/mask/facehugger/attackby(obj/item/I, mob/user)
- if(I.force)
+ if(I.damage_force)
user.do_attack_animation(src)
Die()
return
@@ -343,7 +343,7 @@ var/const/MAX_ACTIVE_TIME = 400
return
/mob/living/simple_mob/animal/space/alien/facehugger/attackby(obj/item/I, mob/user)
- if(I.force)
+ if(I.damage_force)
user.do_attack_animation(src)
Die()
return
diff --git a/code/modules/species/xenomorphs/alien_powers.dm b/code/modules/species/xenomorphs/alien_powers.dm
index bfed7534e84..4d119a3677a 100644
--- a/code/modules/species/xenomorphs/alien_powers.dm
+++ b/code/modules/species/xenomorphs/alien_powers.dm
@@ -142,7 +142,7 @@
spitting = FALSE
return
visible_message("[src] spits [spit_name] at \the [A]!", "You spit [spit_name] at \the [A].")
- var/obj/item/projectile/P = new spit_projectile(get_turf(src))
+ var/obj/projectile/P = new spit_projectile(get_turf(src))
P.firer = src
P.old_style_target(A)
P.fire()
@@ -201,7 +201,7 @@
else
last_spit = world.time
spitting = TRUE
- spit_projectile = /obj/item/projectile/energy/neurotoxin
+ spit_projectile = /obj/projectile/energy/neurotoxin
spit_name = "neurotoxin"
to_chat(src, "You prepare to spit neurotoxin.")
@@ -222,7 +222,7 @@
else
last_spit = world.time
spitting = TRUE
- spit_projectile = /obj/item/projectile/energy/acid
+ spit_projectile = /obj/projectile/energy/acid
spit_name = "acid"
to_chat(src, "You prepare to spit acid.")
diff --git a/code/modules/spells/aoe_turf/conjure/forcewall.dm b/code/modules/spells/aoe_turf/conjure/forcewall.dm
index 9bfcaac458e..ac539093ce3 100644
--- a/code/modules/spells/aoe_turf/conjure/forcewall.dm
+++ b/code/modules/spells/aoe_turf/conjure/forcewall.dm
@@ -35,7 +35,7 @@
unacidable = 1
invisibility = 101
-/obj/effect/forcefield/bullet_act(var/obj/item/projectile/Proj, var/def_zone)
+/obj/effect/forcefield/bullet_act(var/obj/projectile/Proj, var/def_zone)
var/turf/T = get_turf(src.loc)
if(T)
for(var/mob/M in T)
diff --git a/code/modules/spells/artifacts.dm b/code/modules/spells/artifacts.dm
index 4228e582920..c27947df2c5 100644
--- a/code/modules/spells/artifacts.dm
+++ b/code/modules/spells/artifacts.dm
@@ -9,7 +9,7 @@
throw_range = 7
throw_force = 10
damtype = BURN
- force = 10
+ damage_force = 10
hitsound = 'sound/items/welder2.ogg'
/obj/item/scrying/attack_self(mob/user)
@@ -37,7 +37,7 @@
item_state = "knife"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
- force = 15
+ damage_force = 15
throw_force = 10
w_class = WEIGHT_CLASS_NORMAL
hitsound = 'sound/weapons/bladeslice.ogg'
diff --git a/code/modules/spells/spell_projectile.dm b/code/modules/spells/spell_projectile.dm
index 97d9a54e4c2..0247ce78357 100644
--- a/code/modules/spells/spell_projectile.dm
+++ b/code/modules/spells/spell_projectile.dm
@@ -1,4 +1,4 @@
-/obj/item/projectile/spell_projectile
+/obj/projectile/spell_projectile
name = "spell"
icon = 'icons/obj/projectiles.dmi'
@@ -15,16 +15,16 @@
var/proj_trail_icon_state = "trail"
var/list/trails = new()
-/obj/item/projectile/spell_projectile/Destroy()
+/obj/projectile/spell_projectile/Destroy()
for(var/trail in trails)
qdel(trail)
carried = null
return ..()
-/obj/item/projectile/spell_projectile/legacy_ex_act()
+/obj/projectile/spell_projectile/legacy_ex_act()
return
-/obj/item/projectile/spell_projectile/before_move()
+/obj/projectile/spell_projectile/before_move()
if(proj_trail && src && src.loc) //pretty trails
var/obj/effect/overlay/trail = new /obj/effect/overlay(src.loc)
trails += trail
@@ -35,21 +35,21 @@
trails -= trail
qdel(trail)
-/obj/item/projectile/spell_projectile/proc/prox_cast(var/list/targets)
+/obj/projectile/spell_projectile/proc/prox_cast(var/list/targets)
if(loc)
carried.prox_cast(targets, src)
qdel(src)
return
-/obj/item/projectile/spell_projectile/Bump(var/atom/A)
+/obj/projectile/spell_projectile/Bump(var/atom/A)
if(loc && carried)
prox_cast(carried.choose_prox_targets(user = carried.holder, spell_holder = src))
return 1
-/obj/item/projectile/spell_projectile/on_impact()
+/obj/projectile/spell_projectile/on_impact()
if(loc && carried)
prox_cast(carried.choose_prox_targets(user = carried.holder, spell_holder = src))
return 1
-/obj/item/projectile/spell_projectile/seeking
+/obj/projectile/spell_projectile/seeking
name = "seeking spell"
diff --git a/code/modules/spells/targeted/projectile/fireball.dm b/code/modules/spells/targeted/projectile/fireball.dm
index 0b2c4ac80c1..309ba6ffda7 100644
--- a/code/modules/spells/targeted/projectile/fireball.dm
+++ b/code/modules/spells/targeted/projectile/fireball.dm
@@ -2,7 +2,7 @@
name = "Fireball"
desc = "This spell fires a fireball at a target and does not require wizard garb."
- proj_type = /obj/item/projectile/spell_projectile/fireball
+ proj_type = /obj/projectile/spell_projectile/fireball
school = "evocation"
charge_max = 100
@@ -34,6 +34,6 @@
//PROJECTILE
-/obj/item/projectile/spell_projectile/fireball
+/obj/projectile/spell_projectile/fireball
name = "fireball"
icon_state = "fireball"
diff --git a/code/modules/spells/targeted/projectile/magic_missile.dm b/code/modules/spells/targeted/projectile/magic_missile.dm
index c3589ce94b2..7e8967766cc 100644
--- a/code/modules/spells/targeted/projectile/magic_missile.dm
+++ b/code/modules/spells/targeted/projectile/magic_missile.dm
@@ -12,7 +12,7 @@
max_targets = 0
- proj_type = /obj/item/projectile/spell_projectile/seeking/magic_missile
+ proj_type = /obj/projectile/spell_projectile/seeking/magic_missile
duration = 10
proj_step_delay = 5
@@ -31,7 +31,7 @@
//PROJECTILE
-/obj/item/projectile/spell_projectile/seeking/magic_missile
+/obj/projectile/spell_projectile/seeking/magic_missile
name = "magic missile"
icon_state = "magicm"
diff --git a/code/modules/spells/targeted/projectile/projectile.dm b/code/modules/spells/targeted/projectile/projectile.dm
index ebf52f76bb7..a7b81eef3db 100644
--- a/code/modules/spells/targeted/projectile/projectile.dm
+++ b/code/modules/spells/targeted/projectile/projectile.dm
@@ -10,7 +10,7 @@ If the spell_projectile is seeking, it will update its target every process and
range = 7
- var/proj_type = /obj/item/projectile/spell_projectile //use these. They are very nice
+ var/proj_type = /obj/projectile/spell_projectile //use these. They are very nice
var/proj_step_delay = 1 //lower = faster
var/cast_prox_range = 1
@@ -21,7 +21,7 @@ If the spell_projectile is seeking, it will update its target every process and
proj_type = text2path(proj_type) // sanity filters
for(var/atom/target in targets)
- var/obj/item/projectile/projectile = new proj_type(user.loc, user.dir)
+ var/obj/projectile/projectile = new proj_type(user.loc, user.dir)
if(!projectile)
return
@@ -30,8 +30,8 @@ If the spell_projectile is seeking, it will update its target every process and
projectile.shot_from = user //fired from the user
projectile.hitscan = !proj_step_delay
projectile.speed = proj_step_delay
- if(istype(projectile, /obj/item/projectile/spell_projectile))
- var/obj/item/projectile/spell_projectile/SP = projectile
+ if(istype(projectile, /obj/projectile/spell_projectile))
+ var/obj/projectile/spell_projectile/SP = projectile
SP.carried = src //casting is magical
projectile.def_zone = check_zone("chest")
projectile.old_style_target(target)
diff --git a/code/modules/tables/interactions.dm b/code/modules/tables/interactions.dm
index 24e9e770c7a..e4f23aba7a5 100644
--- a/code/modules/tables/interactions.dm
+++ b/code/modules/tables/interactions.dm
@@ -2,7 +2,7 @@
. = ..()
if(.)
return
- if(istype(mover,/obj/item/projectile))
+ if(istype(mover,/obj/projectile))
return check_cover(mover,target)
if(flipped == 1)
if(get_dir(mover, target) & turn(dir, 180))
@@ -23,7 +23,7 @@
return !density || !(get_dir(loc, newLoc) & dir)
//checks if projectile 'P' from turf 'from' can hit whatever is behind the table. Returns 1 if it can, 0 if bullet stops.
-/obj/structure/table/proc/check_cover(obj/item/projectile/P, turf/from)
+/obj/structure/table/proc/check_cover(obj/projectile/P, turf/from)
var/turf/cover
if(flipped==1)
cover = get_turf(src)
diff --git a/code/modules/tension/tension.dm b/code/modules/tension/tension.dm
index bd0e67a49e7..eeaca7468e8 100644
--- a/code/modules/tension/tension.dm
+++ b/code/modules/tension/tension.dm
@@ -30,7 +30,7 @@
// Treat potential_damage as estimated DPS. If the enemy attacks twice as fast as usual, it will double the number.
potential_damage *= 1 SECOND / (base_attack_cooldown + melee_attack_delay)
else
- var/obj/item/projectile/P = new projectiletype(src)
+ var/obj/projectile/P = new projectiletype(src)
if(P.nodamage || P.taser_effect) // Tasers are somewhat less scary.
potential_damage = P.agony / 2
else
@@ -174,7 +174,7 @@
else
var/weapon_attack_speed = get_attack_speed(I) / (1 SECOND)
- var/weapon_damage = I.force
+ var/weapon_damage = I.damage_force
for(var/datum/modifier/M in modifiers)
if(!isnull(M.outgoing_melee_damage_percent))
@@ -183,7 +183,7 @@
if(istype(I, /obj/item/gun))
will_point_blank = TRUE
var/obj/item/gun/G = I
- var/obj/item/projectile/P
+ var/obj/projectile/P
P = new G.projectile_type()
diff --git a/code/modules/unit_tests/projectiles.dm b/code/modules/unit_tests/projectiles.dm
index d49d4d9fd4e..56108e11bb9 100644
--- a/code/modules/unit_tests/projectiles.dm
+++ b/code/modules/unit_tests/projectiles.dm
@@ -1,5 +1,5 @@
/datum/unit_test/projectile_movetypes/Run()
- for(var/path in typesof(/obj/item/projectile))
+ for(var/path in typesof(/obj/projectile))
var/obj/projectile/projectile = path
if(initial(projectile.movement_type) & MOVEMENT_PHASING)
Fail("[path] has default movement type MOVEMENT_PHASING. Piercing projectiles should be done using the projectile piercing system, not movement_types!")
diff --git a/code/modules/vehicles/boat.dm b/code/modules/vehicles/boat.dm
index c897dfa6496..d7b3a0be431 100644
--- a/code/modules/vehicles/boat.dm
+++ b/code/modules/vehicles/boat.dm
@@ -69,7 +69,7 @@
desc = "Used to provide propulsion to a boat."
icon_state = "oar"
item_state = "oar"
- force = 12
+ damage_force = 12
var/datum/material/material = null
/obj/item/oar/sifwood/Initialize(mapload, material_name)
diff --git a/code/modules/vehicles_legacy/Securitrain_vr.dm b/code/modules/vehicles_legacy/Securitrain_vr.dm
index 355cab24e4e..4110873132f 100644
--- a/code/modules/vehicles_legacy/Securitrain_vr.dm
+++ b/code/modules/vehicles_legacy/Securitrain_vr.dm
@@ -101,7 +101,7 @@
..()
//cargo trains are open topped, so there is a chance the projectile will hit the mob ridding the train instead
-/obj/vehicle_old/train/security/bullet_act(var/obj/item/projectile/Proj)
+/obj/vehicle_old/train/security/bullet_act(var/obj/projectile/Proj)
if(has_buckled_mobs() && prob(70))
var/mob/living/M = pick(buckled_mobs)
M.bullet_act(Proj)
diff --git a/code/modules/vehicles_legacy/bike.dm b/code/modules/vehicles_legacy/bike.dm
index 8f31500fb0d..121c533d38f 100644
--- a/code/modules/vehicles_legacy/bike.dm
+++ b/code/modules/vehicles_legacy/bike.dm
@@ -174,7 +174,7 @@
..()
-/obj/vehicle_old/bike/bullet_act(var/obj/item/projectile/Proj)
+/obj/vehicle_old/bike/bullet_act(var/obj/projectile/Proj)
if(has_buckled_mobs() && prob(protection_percent))
var/mob/living/L = pick(buckled_mobs)
L.bullet_act(Proj)
diff --git a/code/modules/vehicles_legacy/cargo_train.dm b/code/modules/vehicles_legacy/cargo_train.dm
index 4a76d4e3572..a2add92f4f2 100644
--- a/code/modules/vehicles_legacy/cargo_train.dm
+++ b/code/modules/vehicles_legacy/cargo_train.dm
@@ -86,7 +86,7 @@
/*
//cargo trains are open topped, so there is a chance the projectile will hit the mob ridding the train instead
-/obj/vehicle_old/train/cargo/bullet_act(var/obj/item/projectile/Proj)
+/obj/vehicle_old/train/cargo/bullet_act(var/obj/projectile/Proj)
if(has_buckled_mobs() && prob(70))
var/mob/living/L = pick(buckled_mobs)
L.bullet_act(Proj)
diff --git a/code/modules/vehicles_legacy/rover_vr.dm b/code/modules/vehicles_legacy/rover_vr.dm
index 2f271cd85ac..d282d32387a 100644
--- a/code/modules/vehicles_legacy/rover_vr.dm
+++ b/code/modules/vehicles_legacy/rover_vr.dm
@@ -102,7 +102,7 @@
..()
//cargo trains are open topped, so there is a chance the projectile will hit the mob ridding the train instead
-/obj/vehicle_old/train/rover/bullet_act(var/obj/item/projectile/Proj)
+/obj/vehicle_old/train/rover/bullet_act(var/obj/projectile/Proj)
if(has_buckled_mobs() && prob(70))
var/mob/living/M = pick(buckled_mobs)
M.bullet_act(Proj)
diff --git a/code/modules/vehicles_legacy/skateboard.dm b/code/modules/vehicles_legacy/skateboard.dm
index abee64eb3df..69baa8a14e6 100644
--- a/code/modules/vehicles_legacy/skateboard.dm
+++ b/code/modules/vehicles_legacy/skateboard.dm
@@ -346,7 +346,7 @@
desc = "This roughly shaped board of flexible steel seems like it could be used to travel in style. It's just missing something..."
icon = 'icons/obj/items.dmi'
icon_state = "skate_assembly0"
- force = 3.0
+ damage_force = 3.0
throw_force = 3.0
throw_speed = 2
throw_range = 5
@@ -358,7 +358,7 @@
desc = "This bulky board of reinforced steel seems like it could be used to travel in radical style. It's just missing something..."
icon = 'icons/obj/items.dmi'
icon_state = "skate_assembly0"
- force = 6.0
+ damage_force = 6.0
throw_force = 6.0
throw_speed = 2
throw_range = 4
diff --git a/code/modules/vehicles_legacy/train.dm b/code/modules/vehicles_legacy/train.dm
index 8b77caaf7d0..8bb7bb8dce5 100644
--- a/code/modules/vehicles_legacy/train.dm
+++ b/code/modules/vehicles_legacy/train.dm
@@ -61,7 +61,7 @@
add_attack_logs(D,M,"Ran over with [src.name]")
//trains are commonly open topped, so there is a chance the projectile will hit the mob riding the train instead
-/obj/vehicle_old/train/bullet_act(var/obj/item/projectile/Proj)
+/obj/vehicle_old/train/bullet_act(var/obj/projectile/Proj)
if(has_buckled_mobs() && prob(70))
var/mob/living/L = pick(buckled_mobs)
L.bullet_act(Proj)
diff --git a/code/modules/vehicles_legacy/vehicle.dm b/code/modules/vehicles_legacy/vehicle.dm
index d7a781cb7d4..fef8bd4a76f 100644
--- a/code/modules/vehicles_legacy/vehicle.dm
+++ b/code/modules/vehicles_legacy/vehicle.dm
@@ -108,19 +108,19 @@
else
to_chat(user, "Unable to repair while [src] is off.")
- else if(hasvar(W,"force") && hasvar(W,"damtype"))
+ else if(hasvar(W,"damage_force") && hasvar(W,"damtype"))
user.setClickCooldown(user.get_attack_speed(W))
switch(W.damtype)
if("fire")
- health -= W.force * fire_dam_coeff
+ health -= W.damage_force * fire_dam_coeff
if("brute")
- health -= W.force * brute_dam_coeff
+ health -= W.damage_force * brute_dam_coeff
..()
healthcheck()
else
..()
-/obj/vehicle_old/bullet_act(var/obj/item/projectile/Proj)
+/obj/vehicle_old/bullet_act(var/obj/projectile/Proj)
health -= Proj.get_structure_damage()
..()
healthcheck()
diff --git a/code/modules/virus2/helpers.dm b/code/modules/virus2/helpers.dm
index f7c596c3516..d32f1c3e53c 100644
--- a/code/modules/virus2/helpers.dm
+++ b/code/modules/virus2/helpers.dm
@@ -7,7 +7,7 @@
if(istype(H) && H.species.get_virus_immune(H))
return 0
- var/protection = M.run_mob_armor(null, "bio") //gets the full body bio armour value, weighted by body part coverage.
+ var/protection = M.legacy_mob_armor(null, "bio") //gets the full body bio armour value, weighted by body part coverage.
var/score = round(0.06*protection) //scales 100% protection to 6.
switch(vector)
@@ -17,7 +17,7 @@
var/obj/item/I = M.wear_mask
//masks provide a small bonus and can replace overall bio protection
if(I)
- score = max(score, round(0.06*I.armor["bio"]))
+ score = max(score, round(0.06*100*I.fetch_armor().raw(ARMOR_BIO)))
if (istype(I, /obj/item/clothing/mask))
score += 1 //this should be added after
@@ -46,12 +46,12 @@
if (!istype(M))
return 0
- var/protection = M.run_mob_armor(null, "bio") //gets the full body bio armour value, weighted by body part coverage.
+ var/protection = M.legacy_mob_armor(null, "bio") //gets the full body bio armour value, weighted by body part coverage.
if (vector == "Airborne")
var/obj/item/I = M.wear_mask
if (istype(I))
- protection = max(protection, I.armor["bio"])
+ protection = max(protection, 100 * I.fetch_armor().raw(ARMOR_BIO))
return prob(protection)
@@ -170,7 +170,7 @@
var/list/clothes = list(H.head, H.wear_mask, H.wear_suit, H.w_uniform, H.gloves, H.shoes)
for(var/obj/item/clothing/C in clothes)
if(C && istype(C))
- if(C.body_cover_flags & select_area.body_part)
+ if(C.body_cover_flags & select_area.body_part_flags)
nudity = 0
if (nudity)
for (var/ID in victim.virus2)
diff --git a/code/modules/vore/eating/leave_remains_vr.dm b/code/modules/vore/eating/leave_remains_vr.dm
index b573c6e5e3f..c30bda57234 100644
--- a/code/modules/vore/eating/leave_remains_vr.dm
+++ b/code/modules/vore/eating/leave_remains_vr.dm
@@ -76,7 +76,7 @@
desc = "A bleached bone. It's very non-descript and its hard to tell what species or part of the body it came from."
icon = 'icons/obj/bones_vr.dmi'
icon_state = "generic"
- force = 0
+ damage_force = 0
throw_force = 0
item_state = "bone"
w_class = ITEMSIZE_SMALL
diff --git a/code/modules/vore/fluffstuff/custom_clothes.dm b/code/modules/vore/fluffstuff/custom_clothes.dm
index 3e8982ea615..02d20e2668b 100644
--- a/code/modules/vore/fluffstuff/custom_clothes.dm
+++ b/code/modules/vore/fluffstuff/custom_clothes.dm
@@ -88,7 +88,7 @@
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "freddyhead_mob"
permeability_coefficient = 0.01
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
inv_hide_flags = HIDEMASK|HIDEEARS
cold_protection = HEAD
siemens_coefficient = 0.9
@@ -126,7 +126,7 @@
permeability_coefficient = 0.02
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/flashlight,/obj/item/tank)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ armor_type = /datum/armor/none
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
siemens_coefficient = 0.9
@@ -173,7 +173,7 @@
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "rig0-hos_mob"
- armor = list("melee" = 60, "bullet" = 35, "laser" = 35, "energy" = 15, "bomb" = 50, "bio" = 100, "rad" = 10)
+ armor_type = /datum/armor/security/hos
species_restricted = null
/obj/item/storage/belt/utility/fluff/vulpine
@@ -261,14 +261,14 @@
desc = "The uniform worn by command officers in the mid 2260s."
icon_state = "trek_command"
item_state = "trek_command"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) // Considering only staff heads get to pick it
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/rank/trek/engsec
name = "Operations Uniform"
desc = "The uniform worn by operations officers of the mid 2260s. You feel strangely vulnerable just seeing this..."
icon_state = "trek_engsec"
item_state = "trek_engsec"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) // since they're shared between jobs and kinda moot.
+ armor_type = /datum/armor/security/jumpsuit
/obj/item/clothing/under/rank/trek/medsci
name = "MedSci Uniform"
@@ -276,7 +276,7 @@
icon_state = "trek_medsci"
item_state = "trek_medsci"
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) // basically a copy of vanilla sci/med
+ armor_type = /datum/armor/medical/jumpsuit
//TNG
/obj/item/clothing/under/rank/trek/command/next
@@ -345,7 +345,7 @@
/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,
/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle
)
- armor = list(melee = 20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 20, rad = 25)
+ armor_type = /datum/armor/security/low
/obj/item/clothing/suit/storage/trek/ds9/equipped(mob/user, slot, flags)
..()
@@ -362,7 +362,7 @@
desc = "Admirality specialty coat to keep flag officers fashionable and protected."
icon_state = "trek_ds9_coat_adm"
item_state = "trek_ds9_coat_adm_mob"
- armor = list(melee = 45, bullet = 35, laser = 35, energy = 20, bomb = 0, bio = 40, rad = 55)
+ armor_type = /datum/armor/security/hos
/obj/item/clothing/under/rank/trek/command/ds9
diff --git a/code/modules/vore/fluffstuff/custom_guns.dm b/code/modules/vore/fluffstuff/custom_guns.dm
index fe88e3d7f2b..37d82e40ad1 100644
--- a/code/modules/vore/fluffstuff/custom_guns.dm
+++ b/code/modules/vore/fluffstuff/custom_guns.dm
@@ -107,10 +107,10 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "ge_pistol_r", SLOT_ID_LEFT_HAND = "ge_pistol_l")
slot_flags = SLOT_BELT
w_class = ITEMSIZE_NORMAL
- force = 10
+ damage_force = 10
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2)
matter = list(MAT_STEEL = 2000)
- projectile_type = /obj/item/projectile/beam/imperial
+ projectile_type = /obj/projectile/beam/imperial
/* CITADEL CHANGE - Removes Virgo Fluff
// jertheace : Jeremiah 'Ace' Acacius
/obj/item/gun/ballistic/shotgun/pump/USDF/fluff/ace
@@ -300,22 +300,22 @@ END OF CITADEL CHANGES */
item_state = "energystun100" //This is temporary.
fire_sound = 'sound/weapons/Taser.ogg'
charge_cost = 100
- force = 8
+ damage_force = 8
w_class = ITEMSIZE_LARGE
fire_delay = 6
pixel_x = -16
- projectile_type = /obj/item/projectile/beam/stun/weak
+ projectile_type = /obj/projectile/beam/stun/weak
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3)
modifystate = "g44estun"
one_handed_penalty = 60
firemodes = list(
- list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 100),
- list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg'),
- list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg', charge_cost = 200),
- list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg'),
+ list(mode_name="stun", burst=1, projectile_type=/obj/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 100),
+ list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg'),
+ list(mode_name="lethal", burst=1, projectile_type=/obj/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg', charge_cost = 200),
+ list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg'),
)*/
/* CITADEL CHANGE - Removes Virgo Fluff
@@ -359,8 +359,8 @@ END OF CITADEL CHANGES */
modifystate = "elugerstun"
fire_sound = 'sound/weapons/Taser.ogg'
firemodes = list(
- list(mode_name="stun", charge_cost=120,projectile_type=/obj/item/projectile/beam/stun, modifystate="elugerstun", fire_sound='sound/weapons/Taser.ogg'),
- list(mode_name="lethal", charge_cost=240,projectile_type=/obj/item/projectile/beam/eluger, modifystate="elugerkill", fire_sound='sound/weapons/eluger.ogg'),
+ list(mode_name="stun", charge_cost=120,projectile_type=/obj/projectile/beam/stun, modifystate="elugerstun", fire_sound='sound/weapons/Taser.ogg'),
+ list(mode_name="lethal", charge_cost=240,projectile_type=/obj/projectile/beam/eluger, modifystate="elugerkill", fire_sound='sound/weapons/eluger.ogg'),
)
//////////////////// Eris Ported Guns ////////////////////
@@ -485,7 +485,7 @@ END OF CITADEL CHANGES */
icon_state = "PDW"
item_state = "gun"
w_class = ITEMSIZE_SMALL
- projectile_type = /obj/item/projectile/beam/stun
+ projectile_type = /obj/projectile/beam/stun
charge_cost = 1200
charge_meter = 0
modifystate = null
@@ -493,8 +493,8 @@ END OF CITADEL CHANGES */
fire_sound = 'sound/weapons/Taser.ogg'
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', charge_cost = 600),
- list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/Laser.ogg', charge_cost = 1200),
+ list(mode_name="stun", projectile_type=/obj/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', charge_cost = 600),
+ list(mode_name="lethal", projectile_type=/obj/projectile/beam, fire_sound='sound/weapons/Laser.ogg', charge_cost = 1200),
)
/obj/item/gun/energy/gun/martin/update_overlays()
@@ -510,7 +510,7 @@ END OF CITADEL CHANGES */
//////////////////// Custom Ammo ////////////////////
/////////////////////////////////////////////////////
//---------------- Beams ----------------
-/obj/item/projectile/beam/eluger
+/obj/projectile/beam/eluger
name = "laser beam"
icon_state = "xray"
light_color = "#00FF00"
@@ -518,7 +518,7 @@ END OF CITADEL CHANGES */
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
-/obj/item/projectile/beam/imperial
+/obj/projectile/beam/imperial
name = "laser beam"
fire_sound = 'sound/weapons/mandalorian.ogg'
icon_state = "darkb"
@@ -527,7 +527,7 @@ END OF CITADEL CHANGES */
tracer_type = /obj/effect/projectile/tracer/darkmatter
impact_type = /obj/effect/projectile/impact/darkmatter
-/obj/item/projectile/beam/stun/kin21
+/obj/projectile/beam/stun/kin21
name = "kinh21 stun beam"
icon_state = "omnilaser"
light_color = "#0000FF"
@@ -549,7 +549,7 @@ END OF CITADEL CHANGES */
desc = "A 7.92x33mm Kurz casing."
icon_state = "rifle-casing"
caliber = "7.92x33mm"
- projectile_type = /obj/item/projectile/bullet/rifle/a762
+ projectile_type = /obj/projectile/bullet/rifle/a762
/obj/item/ammo_magazine/mtg/empty
initial_ammo = 0
@@ -569,9 +569,9 @@ END OF CITADEL CHANGES */
desc = "A 9.5x40mm bullet casing."
icon_state = "rifle-casing"
caliber = "9.5x40mm"
- projectile_type = /obj/item/projectile/bullet/rifle/a95
+ projectile_type = /obj/projectile/bullet/rifle/a95
-/obj/item/projectile/bullet/rifle/a95
+/obj/projectile/bullet/rifle/a95
damage = 40
/obj/item/ammo_magazine/m95/empty
@@ -626,7 +626,7 @@ END OF CITADEL CHANGES */
caliber = ".357"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "stun357"
- projectile_type = /obj/item/projectile/energy/electrode/stunshot/strong
+ projectile_type = /obj/projectile/energy/electrode/stunshot/strong
/obj/item/ammo_magazine/s357/rubber
name = "speedloader (.357 rubber)"
@@ -642,7 +642,7 @@ END OF CITADEL CHANGES */
caliber = ".357"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "rubber357"
- projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
+ projectile_type = /obj/projectile/bullet/pistol/rubber/strong
/obj/item/ammo_magazine/s357/flash
name = "speedloader (.357 flash)"
@@ -657,13 +657,13 @@ END OF CITADEL CHANGES */
caliber = ".357"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "flash357"
- projectile_type = /obj/item/projectile/energy/flash/strong
+ projectile_type = /obj/projectile/energy/flash/strong
//.380
/obj/item/ammo_casing/a380
desc = "A .380 bullet casing."
caliber = ".380"
- projectile_type = /obj/item/projectile/bullet/pistol
+ projectile_type = /obj/projectile/bullet/pistol
/obj/item/ammo_magazine/m380
name = "magazine (.380)"
@@ -680,7 +680,7 @@ END OF CITADEL CHANGES */
/obj/item/ammo_casing/a44/rubber
icon_state = "r-casing"
desc = "A .44 rubber bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
+ projectile_type = /obj/projectile/bullet/pistol/rubber/strong
/obj/item/ammo_magazine/m44/rubber
desc = "A magazine for .44 less-than-lethal ammo."
@@ -721,10 +721,10 @@ END OF CITADEL CHANGES */
var/recharging = 0
var/phase_power = 75
- projectile_type = /obj/item/projectile/beam
+ projectile_type = /obj/projectile/beam
firemodes = list(
- list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300),
- list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60),
+ list(mode_name="lethal", fire_delay=12, projectile_type=/obj/projectile/beam, charge_cost = 300),
+ list(mode_name="low-power", fire_delay=8, projectile_type=/obj/projectile/beam/weaklaser, charge_cost = 60),
)
/obj/item/gun/energy/frontier/unload_ammo(var/mob/user)
@@ -771,8 +771,8 @@ END OF CITADEL CHANGES */
modifystate = "carbinekill"
firemodes = list(
- list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, modifystate="carbinekill", charge_cost = 300),
- list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, modifystate="carbinestun", charge_cost = 60),
+ list(mode_name="lethal", fire_delay=12, projectile_type=/obj/projectile/beam, modifystate="carbinekill", charge_cost = 300),
+ list(mode_name="low-power", fire_delay=8, projectile_type=/obj/projectile/beam/weaklaser, modifystate="carbinestun", charge_cost = 60),
)
/obj/item/gun/energy/frontier/locked/carbine/update_icon_state()
@@ -795,9 +795,9 @@ END OF CITADEL CHANGES */
charge_cost = 600
modifystate = "holdoutkill"
firemodes = list(
- list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, modifystate="holdoutkill", charge_cost = 600),
- list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, modifystate="holdoutstun", charge_cost = 120),
- list(mode_name="stun", fire_delay=12, projectile_type=/obj/item/projectile/beam/stun/med, modifystate="holdoutshock", charge_cost = 300),
+ list(mode_name="lethal", fire_delay=12, projectile_type=/obj/projectile/beam, modifystate="holdoutkill", charge_cost = 600),
+ list(mode_name="low-power", fire_delay=8, projectile_type=/obj/projectile/beam/weaklaser, modifystate="holdoutstun", charge_cost = 120),
+ list(mode_name="stun", fire_delay=12, projectile_type=/obj/projectile/beam/stun/med, modifystate="holdoutshock", charge_cost = 300),
)
/obj/item/gun/energy/frontier/taj
@@ -809,7 +809,7 @@ END OF CITADEL CHANGES */
wielded_item_state = "phaser-taj"
charge_cost = 600
- projectile_type = /obj/item/projectile/beam/midlaser
+ projectile_type = /obj/projectile/beam/midlaser
firemodes = list(
diff --git a/code/modules/vore/fluffstuff/custom_items.dm b/code/modules/vore/fluffstuff/custom_items.dm
index 2be982358a9..e42d45158db 100644
--- a/code/modules/vore/fluffstuff/custom_items.dm
+++ b/code/modules/vore/fluffstuff/custom_items.dm
@@ -83,7 +83,7 @@
icon_override = 'icons/vore/custom_items_vr.dmi'
item_state = "joanariamob"
origin_tech = "materials=7"
- force = 15
+ damage_force = 15
sharp = 1
edge = 1
hitsound = 'sound/weapons/bladeslice.ogg'
@@ -291,7 +291,7 @@
atom_flags = NOBLOODY
slot_flags = SLOT_BELT
- force = 10
+ damage_force = 10
throw_force = 3
w_class = ITEMSIZE_NORMAL
damtype = HALLOSS
@@ -300,7 +300,7 @@
//General use
/obj/item/melee/fluff/holochain/mass
desc = "A mass produced version of the original. It has faux leather and an aluminium base, but still stings like the original."
- force = 8
+ damage_force = 8
attack_verb = list("flogged", "whipped", "lashed", "flayed")
@@ -539,7 +539,7 @@
icon_state = "browncane"
item_icons = list (SLOT_ID_RIGHT_HAND = 'icons/vore/custom_items_vr.dmi', SLOT_ID_LEFT_HAND = 'icons/vore/custom_items_vr.dmi')
item_state_slots = list(SLOT_ID_RIGHT_HAND = "browncanemob_r", SLOT_ID_LEFT_HAND = "browncanemob_l")
- force = 5.0
+ damage_force = 5.0
throw_force = 7.0
w_class = ITEMSIZE_SMALL
matter = list(MAT_STEEL = 50)
@@ -558,7 +558,7 @@
icon_state = "alexiswand"
item_icons = list (SLOT_ID_RIGHT_HAND = 'icons/vore/custom_items_vr.dmi', SLOT_ID_LEFT_HAND = 'icons/vore/custom_items_vr.dmi')
item_state_slots = list(SLOT_ID_RIGHT_HAND = "alexiswandmob_r", SLOT_ID_LEFT_HAND = "alexiswandmob_l")
- force = 1.0
+ damage_force = 1.0
throw_force = 2.0
w_class = ITEMSIZE_SMALL
matter = list(MAT_STEEL = 50)
@@ -1385,7 +1385,7 @@
item_icons = list(SLOT_ID_LEFT_HAND = 'icons/vore/custom_items_left_hand_vr.dmi', SLOT_ID_RIGHT_HAND = 'icons/vore/custom_items_right_hand_vr.dmi')
icon_state = "stunstaff00"
var/base_icon = "stunstaff"
- force = 5
+ damage_force = 5
sharp = 0
edge = 0
throw_force = 7
@@ -1408,12 +1408,12 @@
var/mob/living/M = loc
if(istype(M) && !issmall(M) && M.is_holding(src) && !M.hands_full())
wielded = 1
- force = 15
+ damage_force = 15
name = "[base_name] (wielded)"
update_icon()
else
wielded = 0
- force = 8
+ damage_force = 8
name = "[base_name]"
update_icon()
..()
@@ -1493,7 +1493,7 @@
return
active = 1
embed_chance = active_embed_chance
- force = active_force
+ damage_force = active_force
throw_force = active_throwforce
sharp = 1
edge = 1
@@ -1506,7 +1506,7 @@
playsound(user, 'sound/weapons/sparkle.ogg', 50, 1)
active = 0
embed_chance = initial(embed_chance)
- force = initial(force)
+ damage_force = initial(damage_force)
throw_force = initial(throw_force)
sharp = initial(sharp)
edge = initial(edge)
@@ -1550,7 +1550,7 @@
active_force = 15
active_throwforce = 7
active_w_class = ITEMSIZE_LARGE
- force = 1
+ damage_force = 1
throw_force = 1
throw_speed = 1
throw_range = 5
diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/cell_loaded.dm b/code/modules/vore/fluffstuff/guns/cell_loaded/cell_loaded.dm
index b5368f9902d..4d029f72e85 100644
--- a/code/modules/vore/fluffstuff/guns/cell_loaded/cell_loaded.dm
+++ b/code/modules/vore/fluffstuff/guns/cell_loaded/cell_loaded.dm
@@ -216,7 +216,7 @@
caliber = "nsfw"
var/type_color = null
var/type_name = null
- projectile_type = /obj/item/projectile/beam
+ projectile_type = /obj/projectile/beam
/obj/item/ammo_casing/microbattery/Initialize(mapload)
. = ..()
diff --git a/code/modules/vore/fluffstuff/guns/cell_loaded/medigun_cells.dm b/code/modules/vore/fluffstuff/guns/cell_loaded/medigun_cells.dm
index 406f3d42656..c3d4987af30 100644
--- a/code/modules/vore/fluffstuff/guns/cell_loaded/medigun_cells.dm
+++ b/code/modules/vore/fluffstuff/guns/cell_loaded/medigun_cells.dm
@@ -6,12 +6,12 @@
icon_state = "ml3m_batt"
origin_tech = list(TECH_BIO = 2, TECH_MATERIAL = 1, TECH_MAGNETS = 2)
-/obj/item/projectile/beam/medical_cell
+/obj/projectile/beam/medical_cell
name = "\improper healing beam"
icon_state = "medbeam"
nodamage = 1
damage = 0
- check_armour = "laser"
+ damage_flag = ARMOR_LASER
light_color = "#80F5FF"
combustion = FALSE
@@ -20,16 +20,16 @@
tracer_type = /obj/effect/projectile/tracer/medigun
impact_type = /obj/effect/projectile/impact/medigun
-/obj/item/projectile/beam/medical_cell/on_hit(var/mob/living/carbon/human/target) //what does it do when it hits someone?
+/obj/projectile/beam/medical_cell/on_hit(var/mob/living/carbon/human/target) //what does it do when it hits someone?
return
/obj/item/ammo_casing/microbattery/medical/brute
name = "\'AML\' nanite cell - BRUTE"
type_color = "#BF0000"
type_name = "BRUTE"
- projectile_type = /obj/item/projectile/beam/medical_cell/brute
+ projectile_type = /obj/projectile/beam/medical_cell/brute
-/obj/item/projectile/beam/medical_cell/brute/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/brute/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustBruteLoss(-10)
else
@@ -39,9 +39,9 @@
name = "\'AML\' nanite cell - BURN"
type_color = "#FF8000"
type_name = "BURN"
- projectile_type = /obj/item/projectile/beam/medical_cell/burn
+ projectile_type = /obj/projectile/beam/medical_cell/burn
-/obj/item/projectile/beam/medical_cell/burn/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/burn/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustFireLoss(-10)
else
@@ -51,9 +51,9 @@
name = "\'AML\' nanite cell - STABILIZE" //Disinfects all open wounds, cures oxy damage
type_color = "#0080FF"
type_name = "STABILIZE"
- projectile_type = /obj/item/projectile/beam/medical_cell/stabilize
+ projectile_type = /obj/projectile/beam/medical_cell/stabilize
-/obj/item/projectile/beam/medical_cell/stabilize/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/stabilize/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustOxyLoss(-30)
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
@@ -79,9 +79,9 @@
name = "\'AML\' nanite cell - TOXIN"
type_color = "#00A000"
type_name = "TOXIN"
- projectile_type = /obj/item/projectile/beam/medical_cell/toxin
+ projectile_type = /obj/projectile/beam/medical_cell/toxin
-/obj/item/projectile/beam/medical_cell/toxin/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/toxin/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustToxLoss(-10)
else
@@ -91,9 +91,9 @@
name = "\'AML\' nanite cell - OMNI"
type_color = "#8040FF"
type_name = "OMNI"
- projectile_type = /obj/item/projectile/beam/medical_cell/omni
+ projectile_type = /obj/projectile/beam/medical_cell/omni
-/obj/item/projectile/beam/medical_cell/omni/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/omni/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustBruteLoss(-2.5)
target.adjustFireLoss(-2.5)
@@ -106,9 +106,9 @@
name = "\'AML\' nanite cell - ANTIRAD"
type_color = "#008000"
type_name = "ANTIRAD"
- projectile_type = /obj/item/projectile/beam/medical_cell/antirad
+ projectile_type = /obj/projectile/beam/medical_cell/antirad
-/obj/item/projectile/beam/medical_cell/antirad/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/antirad/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustToxLoss(-2.5)
target.cure_radiation(RAD_MOB_CURE_STRENGTH_MEDIGUN)
@@ -119,9 +119,9 @@
name = "\'AML\' nanite cell - BRUTE-II"
type_color = "#BF0000"
type_name = "BRUTE-II"
- projectile_type = /obj/item/projectile/beam/medical_cell/brute2
+ projectile_type = /obj/projectile/beam/medical_cell/brute2
-/obj/item/projectile/beam/medical_cell/brute2/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/brute2/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustBruteLoss(-20)
else
@@ -131,9 +131,9 @@
name = "\'AML\' nanite cell - BURN-II"
type_color = "#FF8000"
type_name = "BURN-II"
- projectile_type = /obj/item/projectile/beam/medical_cell/burn2
+ projectile_type = /obj/projectile/beam/medical_cell/burn2
-/obj/item/projectile/beam/medical_cell/burn2/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/burn2/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustFireLoss(-20)
else
@@ -143,9 +143,9 @@
name = "\'AML\' nanite cell - STABILIZE-II" //Disinfects and bandages all open wounds, cures all oxy damage
type_color = "#0080FF"
type_name = "STABILIZE-II"
- projectile_type = /obj/item/projectile/beam/medical_cell/stabilize2
+ projectile_type = /obj/projectile/beam/medical_cell/stabilize2
-/obj/item/projectile/beam/medical_cell/stabilize2/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/stabilize2/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustOxyLoss(-200)
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
@@ -166,9 +166,9 @@
name = "\'AML\' nanite cell - OMNI-II"
type_color = "#8040FF"
type_name = "OMNI-II"
- projectile_type = /obj/item/projectile/beam/medical_cell/omni2
+ projectile_type = /obj/projectile/beam/medical_cell/omni2
-/obj/item/projectile/beam/medical_cell/omni2/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/omni2/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustBruteLoss(-5)
target.adjustFireLoss(-5)
@@ -181,9 +181,9 @@
name = "\'AML\' nanite cell - TOXIN-II"
type_color = "#00A000"
type_name = "TOXIN-II"
- projectile_type = /obj/item/projectile/beam/medical_cell/toxin2
+ projectile_type = /obj/projectile/beam/medical_cell/toxin2
-/obj/item/projectile/beam/medical_cell/toxin2/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/toxin2/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustToxLoss(-20)
else
@@ -193,9 +193,9 @@
name = "\'AML\' nanite cell - HASTE"
type_color = "#FF3300"
type_name = "HASTE"
- projectile_type = /obj/item/projectile/beam/medical_cell/haste
+ projectile_type = /obj/projectile/beam/medical_cell/haste
-/obj/item/projectile/beam/medical_cell/haste/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/haste/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.add_modifier(/datum/modifier/ml3mhaste, 20 SECONDS)
else
@@ -213,9 +213,9 @@
name = "\'AML\' nanite cell - RESIST"
type_color = "#555555"
type_name = "RESIST"
- projectile_type = /obj/item/projectile/beam/medical_cell/resist
+ projectile_type = /obj/projectile/beam/medical_cell/resist
-/obj/item/projectile/beam/medical_cell/resist/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/resist/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.add_modifier(/datum/modifier/resistance, 20 SECONDS)
else
@@ -233,9 +233,9 @@
name = "\'AML\' nanite cell - CORPSE MEND"
type_color = "#669900"
type_name = "CORPSE MEND"
- projectile_type = /obj/item/projectile/beam/medical_cell/corpse_mend
+ projectile_type = /obj/projectile/beam/medical_cell/corpse_mend
-/obj/item/projectile/beam/medical_cell/corpse_mend/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/corpse_mend/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
if(target.stat == DEAD)
target.adjustBruteLoss(-50)
@@ -249,9 +249,9 @@
name = "\'AML\' nanite cell - BRUTE-III"
type_color = "#BF0000"
type_name = "BRUTE-III"
- projectile_type = /obj/item/projectile/beam/medical_cell/brute3
+ projectile_type = /obj/projectile/beam/medical_cell/brute3
-/obj/item/projectile/beam/medical_cell/brute3/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/brute3/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustBruteLoss(-40)
else
@@ -261,9 +261,9 @@
name = "\'AML\' nanite cell - BURN-III"
type_color = "#FF8000"
type_name = "BURN-III"
- projectile_type = /obj/item/projectile/beam/medical_cell/burn3
+ projectile_type = /obj/projectile/beam/medical_cell/burn3
-/obj/item/projectile/beam/medical_cell/burn3/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/burn3/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustFireLoss(-40)
else
@@ -273,9 +273,9 @@
name = "\'AML\' nanite cell - TOXIN-III"
type_color = "#00A000"
type_name = "TOXIN-III"
- projectile_type = /obj/item/projectile/beam/medical_cell/toxin3
+ projectile_type = /obj/projectile/beam/medical_cell/toxin3
-/obj/item/projectile/beam/medical_cell/toxin3/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/toxin3/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustToxLoss(-40)
else
@@ -285,9 +285,9 @@
name = "\'AML\' nanite cell - OMNI-III"
type_color = "#8040FF"
type_name = "OMNI-III"
- projectile_type = /obj/item/projectile/beam/medical_cell/omni3
+ projectile_type = /obj/projectile/beam/medical_cell/omni3
-/obj/item/projectile/beam/medical_cell/omni3/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/omni3/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.adjustBruteLoss(-10)
target.adjustFireLoss(-10)
@@ -301,9 +301,9 @@
name = "\'AML\' nanite cell - SHRINK"
type_color = "#910ffc"
type_name = "SHRINK"
- projectile_type = /obj/item/projectile/beam/medical_cell/shrink
+ projectile_type = /obj/projectile/beam/medical_cell/shrink
-/obj/item/projectile/beam/medical_cell/shrink/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/shrink/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.resize(0.5)
target.show_message("The beam fires into your body, changing your size!")
@@ -315,9 +315,9 @@
name = "\'AML\' nanite cell - GROW"
type_color = "#fc0fdc"
type_name = "GROW"
- projectile_type = /obj/item/projectile/beam/medical_cell/grow
+ projectile_type = /obj/projectile/beam/medical_cell/grow
-/obj/item/projectile/beam/medical_cell/grow/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/grow/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.resize(2.0)
target.show_message("The beam fires into your body, changing your size!")
@@ -329,9 +329,9 @@
name = "\'AML\' nanite cell - NORMALSIZE"
type_color = "#C70FEC"
type_name = "NORMALSIZE"
- projectile_type = /obj/item/projectile/beam/medical_cell/normalsize
+ projectile_type = /obj/projectile/beam/medical_cell/normalsize
-/obj/item/projectile/beam/medical_cell/normalsize/on_hit(var/mob/living/carbon/human/target)
+/obj/projectile/beam/medical_cell/normalsize/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
target.resize(1)
target.show_message("The beam fires into your body, changing your size!")
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 3a1b24e15e9..c7ee2819ed9 100644
--- a/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm
+++ b/code/modules/vore/fluffstuff/guns/cell_loaded/revolver_cells.dm
@@ -9,33 +9,33 @@
name = "\'Hydra\' microbattery - LETHAL"
type_color = "#bf3d3d"
type_name = "LETHAL"
- projectile_type = /obj/item/projectile/beam
+ projectile_type = /obj/projectile/beam
/obj/item/ammo_casing/microbattery/combat/stun
name = "\'Hydra\' microbattery - STUN"
type_color = "#0f81bc"
type_name = "STUN"
- projectile_type = /obj/item/projectile/beam/stun/blue
+ projectile_type = /obj/projectile/beam/stun/blue
/obj/item/ammo_casing/microbattery/combat/net
name = "\'Hydra\' microbattery - NET"
type_color = "#43f136"
type_name = "NET"
- projectile_type = /obj/item/projectile/beam/energy_net
+ projectile_type = /obj/projectile/beam/energy_net
/obj/item/ammo_casing/microbattery/combat/xray
name = "\'Hydra\' microbattery - XRAY"
type_color = "#32c025"
type_name = "XRAY"
- projectile_type = /obj/item/projectile/beam/xray
+ projectile_type = /obj/projectile/beam/xray
/obj/item/ammo_casing/microbattery/combat/shotstun
name = "\'Hydra\' microbattery - SCATTERSTUN"
type_color = "#88ffff"
type_name = "SCATTERSTUN"
- projectile_type = /obj/item/projectile/bullet/pellet/e_shot_stun
+ projectile_type = /obj/projectile/bullet/pellet/e_shot_stun
-/obj/item/projectile/bullet/pellet/e_shot_stun
+/obj/projectile/bullet/pellet/e_shot_stun
icon_state = "spell"
damage = 2
agony = 20
@@ -45,29 +45,29 @@
spread_step = 10
embed_chance = 0
sharp = 0
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
/obj/item/ammo_casing/microbattery/combat/ion
name = "\'Hydra\' microbattery - ION"
type_color = "#d084d6"
type_name = "ION"
- projectile_type = /obj/item/projectile/ion/small
+ projectile_type = /obj/projectile/ion/small
/obj/item/ammo_casing/microbattery/combat/stripper
name = "\'Hydra\' microbattery - STRIPPER"
type_color = "#fc8d0f"
type_name = "STRIPPER"
- projectile_type = /obj/item/projectile/bullet/stripper
+ projectile_type = /obj/projectile/bullet/stripper
-/obj/item/projectile/bullet/stripper
+/obj/projectile/bullet/stripper
icon_state = "magicm"
nodamage = 1
agony = 5
embed_chance = 0
sharp = 0
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
-/obj/item/projectile/bullet/stripper/on_hit(var/atom/stripped)
+/obj/projectile/bullet/stripper/on_hit(var/atom/stripped)
if(ishuman(stripped))
var/mob/living/carbon/human/H = stripped
if(!H.permit_stripped)
@@ -80,9 +80,9 @@
name = "\'Hydra\' microbattery - FINAL OPTION"
type_color = "#fcfc0f"
type_name = "FINAL OPTION" //Doesn't look good in yellow in chat
- projectile_type = /obj/item/projectile/beam/final_option
+ projectile_type = /obj/projectile/beam/final_option
-/obj/item/projectile/beam/final_option
+/obj/projectile/beam/final_option
name = "final option beam"
icon_state = "omnilaser"
nodamage = 1
@@ -94,7 +94,7 @@
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
-/obj/item/projectile/beam/final_option/on_hit(var/atom/impacted)
+/obj/projectile/beam/final_option/on_hit(var/atom/impacted)
if(isliving(impacted))
var/mob/living/L = impacted
if(L.mind)
diff --git a/code/modules/vore/fluffstuff/guns/crestrose.dm b/code/modules/vore/fluffstuff/guns/crestrose.dm
index 2aaeed5b388..95ff8ed09a6 100644
--- a/code/modules/vore/fluffstuff/guns/crestrose.dm
+++ b/code/modules/vore/fluffstuff/guns/crestrose.dm
@@ -12,7 +12,7 @@
slot_flags = null
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
- force = 3
+ damage_force = 3
recoil = 2
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -22,8 +22,8 @@
allowed_magazines = list(/obj/item/ammo_magazine/m762)
firemodes = list(
- list(mode_name="fold", icon_state="crestrose_fold",item_state = "laser",force=3),
- list(mode_name="scythe", icon_state="crestrose",item_state = "crestrose",force=15),
+ list(mode_name="fold", icon_state="crestrose_fold",item_state = "laser",damage_force=3),
+ list(mode_name="scythe", icon_state="crestrose",item_state = "crestrose",damage_force=15),
)
/obj/item/gun/ballistic/automatic/fluff/crestrose/switch_firemodes(mob/user)
diff --git a/code/modules/vore/fluffstuff/guns/dominator.dm b/code/modules/vore/fluffstuff/guns/dominator.dm
index 9fe66690580..e51b46cf8a3 100644
--- a/code/modules/vore/fluffstuff/guns/dominator.dm
+++ b/code/modules/vore/fluffstuff/guns/dominator.dm
@@ -11,15 +11,15 @@
item_icons = null
fire_sound = 'sound/weapons/Taser.ogg'
- projectile_type = /obj/item/projectile/beam/stun
+ projectile_type = /obj/projectile/beam/stun
modifystate = "dominatorstun"
dna_lock = 1
firemodes = list(
- list(mode_name="stun", charge_cost=240,projectile_type=/obj/item/projectile/beam/stun, modifystate="dominatorstun", fire_sound='sound/weapons/Taser.ogg'),
- list(mode_name="lethal", charge_cost=480,projectile_type=/obj/item/projectile/beam/dominator, modifystate="dominatorkill", fire_sound='sound/weapons/gauss_shoot.ogg'),
+ list(mode_name="stun", charge_cost=240,projectile_type=/obj/projectile/beam/stun, modifystate="dominatorstun", fire_sound='sound/weapons/Taser.ogg'),
+ list(mode_name="lethal", charge_cost=480,projectile_type=/obj/projectile/beam/dominator, modifystate="dominatorkill", fire_sound='sound/weapons/gauss_shoot.ogg'),
)
var/emagged = FALSE
@@ -42,7 +42,7 @@
// Dominator Ammo
-/obj/item/projectile/beam/dominator
+/obj/projectile/beam/dominator
name = "dominator lethal beam"
icon_state = "xray"
muzzle_type = /obj/effect/projectile/muzzle/xray
diff --git a/code/modules/vore/fluffstuff/guns/gunsword.dm b/code/modules/vore/fluffstuff/guns/gunsword.dm
index c319938d8a4..f6827a7075e 100644
--- a/code/modules/vore/fluffstuff/guns/gunsword.dm
+++ b/code/modules/vore/fluffstuff/guns/gunsword.dm
@@ -12,7 +12,7 @@
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 4)
slot_flags = null
- projectile_type = /obj/item/projectile/beam/stun
+ projectile_type = /obj/projectile/beam/stun
fire_sound = 'sound/weapons/gauss_shoot.ogg'
charge_meter = 1
@@ -21,8 +21,8 @@
modifystate = "gbuster"
firemodes = list(
- list(mode_name="stun", charge_cost=240,projectile_type=/obj/item/projectile/beam/stun, modifystate="gbuster", fire_sound='sound/weapons/Taser.ogg'),
- list(mode_name="lethal", charge_cost=480,projectile_type=/obj/item/projectile/beam, modifystate="gbuster", fire_sound='sound/weapons/gauss_shoot.ogg'),
+ list(mode_name="stun", charge_cost=240,projectile_type=/obj/projectile/beam/stun, modifystate="gbuster", fire_sound='sound/weapons/Taser.ogg'),
+ list(mode_name="lethal", charge_cost=480,projectile_type=/obj/projectile/beam, modifystate="gbuster", fire_sound='sound/weapons/gauss_shoot.ogg'),
)
@@ -37,7 +37,7 @@
item_state = "gsaberoff"
maxcharge = 2400
charge_amount = 20
- force = 3
+ damage_force = 3
throw_force = 5
throw_speed = 1
throw_range = 5
@@ -65,7 +65,7 @@
item_state = "gsaber"
active = 1
embed_chance = active_embed_chance
- force = active_force
+ damage_force = active_force
throw_force = active_throwforce
sharp = 1
edge = 1
@@ -84,7 +84,7 @@
item_state = "gsaberoff"
active = 0
embed_chance = initial(embed_chance)
- force = initial(force)
+ damage_force = initial(damage_force)
throw_force = initial(throw_force)
sharp = initial(sharp)
edge = initial(edge)
diff --git a/code/modules/vore/fluffstuff/guns/protector.dm b/code/modules/vore/fluffstuff/guns/protector.dm
index 51cd1a74748..ac559ad9138 100644
--- a/code/modules/vore/fluffstuff/guns/protector.dm
+++ b/code/modules/vore/fluffstuff/guns/protector.dm
@@ -15,7 +15,7 @@
item_state = "gun"
fire_sound = 'sound/weapons/Taser.ogg'
- projectile_type = /obj/item/projectile/beam/stun
+ projectile_type = /obj/projectile/beam/stun
modifystate = "stun"
@@ -30,8 +30,8 @@
flight_y_offset = 0
firemodes = list(
- list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/protector, modifystate="stun", fire_sound='sound/weapons/Taser.ogg'),
- list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="kill", fire_sound='sound/weapons/gauss_shoot.ogg'),
+ list(mode_name="stun", projectile_type=/obj/projectile/beam/stun/protector, modifystate="stun", fire_sound='sound/weapons/Taser.ogg'),
+ list(mode_name="lethal", projectile_type=/obj/projectile/beam, modifystate="kill", fire_sound='sound/weapons/gauss_shoot.ogg'),
)
var/emagged = FALSE
@@ -107,7 +107,7 @@
// Protector beams
-/obj/item/projectile/beam/stun/protector
+/obj/projectile/beam/stun/protector
name = "protector stun beam"
icon_state = "omnilaser" //A little more cyan
light_color = "#00C6FF"
diff --git a/code/modules/vore/fluffstuff/guns/pummeler.dm b/code/modules/vore/fluffstuff/guns/pummeler.dm
index 252534f5bef..20a4b871934 100644
--- a/code/modules/vore/fluffstuff/guns/pummeler.dm
+++ b/code/modules/vore/fluffstuff/guns/pummeler.dm
@@ -16,7 +16,7 @@
item_state = "gun"
fire_sound = 'sound/effects/basscannon.ogg'
- projectile_type = /obj/item/projectile/pummel
+ projectile_type = /obj/projectile/pummel
charge_cost = 600
@@ -26,17 +26,17 @@
w_class = ITEMSIZE_LARGE
//Projectile
-/obj/item/projectile/pummel
+/obj/projectile/pummel
name = "sonic blast"
icon_state = "sound"
damage = 5
damage_type = BRUTE
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
embed_chance = 0
vacuum_traversal = 0
range = 6 //Scary name, but just deletes the projectile after this range
-/obj/item/projectile/pummel/on_hit(var/atom/movable/target, var/blocked = 0)
+/obj/projectile/pummel/on_hit(var/atom/movable/target, var/blocked = 0)
if(isliving(target))
var/mob/living/L = target
var/throwdir = get_dir(firer,L)
diff --git a/code/modules/vore/fluffstuff/guns/sickshot.dm b/code/modules/vore/fluffstuff/guns/sickshot.dm
index ef5714a233e..1fdbb998dab 100644
--- a/code/modules/vore/fluffstuff/guns/sickshot.dm
+++ b/code/modules/vore/fluffstuff/guns/sickshot.dm
@@ -16,25 +16,25 @@
item_state = "gun"
fire_sound = 'sound/weapons/eluger.ogg'
- projectile_type = /obj/item/projectile/sickshot
+ projectile_type = /obj/projectile/sickshot
charge_cost = 600
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_MAGNET = 2)
//Projectile
-/obj/item/projectile/sickshot
+/obj/projectile/sickshot
name = "discombobulator pulse"
icon_state = "sound"
damage = 5
armor_penetration = 30
damage_type = BURN
- check_armour = "melee"
+ damage_flag = ARMOR_MELEE
embed_chance = 0
vacuum_traversal = 0
range = 5 //Scary name, but just deletes the projectile after this range
-/obj/item/projectile/sickshot/on_hit(var/atom/movable/target, var/blocked = 0)
+/obj/projectile/sickshot/on_hit(var/atom/movable/target, var/blocked = 0)
if(isliving(target))
var/mob/living/L = target
if(prob(20))
diff --git a/code/modules/xenoarcheaology/artifacts/artifact.dm b/code/modules/xenoarcheaology/artifacts/artifact.dm
index 6edd6549ce8..28fba6a0455 100644
--- a/code/modules/xenoarcheaology/artifacts/artifact.dm
+++ b/code/modules/xenoarcheaology/artifacts/artifact.dm
@@ -240,7 +240,7 @@
secondary_effect.ToggleActivate(0)
else
..()
- if (my_effect.trigger == TRIGGER_FORCE && W.force >= 10)
+ if (my_effect.trigger == TRIGGER_FORCE && W.damage_force >= 10)
my_effect.ToggleActivate()
if(secondary_effect && secondary_effect.trigger == TRIGGER_FORCE && prob(25))
secondary_effect.ToggleActivate(0)
@@ -274,16 +274,16 @@
to_chat(M, "You accidentally touch [src].")
..()
-/obj/machinery/artifact/bullet_act(var/obj/item/projectile/P)
- if(istype(P,/obj/item/projectile/bullet))
+/obj/machinery/artifact/bullet_act(var/obj/projectile/P)
+ if(istype(P,/obj/projectile/bullet))
if(my_effect.trigger == TRIGGER_FORCE)
my_effect.ToggleActivate()
if(secondary_effect && secondary_effect.trigger == TRIGGER_FORCE && prob(25))
secondary_effect.ToggleActivate(0)
- else if(istype(P,/obj/item/projectile/beam) ||\
- istype(P,/obj/item/projectile/ion) ||\
- istype(P,/obj/item/projectile/energy))
+ else if(istype(P,/obj/projectile/beam) ||\
+ istype(P,/obj/projectile/ion) ||\
+ istype(P,/obj/projectile/energy))
if(my_effect.trigger == TRIGGER_ENERGY)
my_effect.ToggleActivate()
if(secondary_effect && secondary_effect.trigger == TRIGGER_ENERGY && prob(25))
diff --git a/code/modules/xenoarcheaology/finds/find_spawning.dm b/code/modules/xenoarcheaology/finds/find_spawning.dm
index 8803abdbb23..31c43b29abb 100644
--- a/code/modules/xenoarcheaology/finds/find_spawning.dm
+++ b/code/modules/xenoarcheaology/finds/find_spawning.dm
@@ -236,7 +236,7 @@
if(19)
apply_prefix = 0
new_item = new /obj/item/material/sword(src.loc)
- new_item.force = 10
+ new_item.damage_force = 10
item_type = new_item.name
if(prob(30))
new_item.icon = 'icons/obj/xenoarchaeology.dmi'
@@ -284,7 +284,7 @@
if(25)
apply_prefix = 0
new_item = new /obj/item/material/sword/katana(src.loc)
- new_item.force = 10
+ new_item.damage_force = 10
item_type = new_item.name
if(26)
//energy gun
@@ -551,7 +551,7 @@
TH.force_unwielded *= 0.7
TH.force_wielded *= 0.5
else
- MW.force *= 0.3
+ MW.damage_force *= 0.3
var/decorations = ""
if(apply_material_decorations)
diff --git a/code/modules/xenoarcheaology/tools/coolant_tank.dm b/code/modules/xenoarcheaology/tools/coolant_tank.dm
index 3c010be6a08..ba9ac92b9f4 100644
--- a/code/modules/xenoarcheaology/tools/coolant_tank.dm
+++ b/code/modules/xenoarcheaology/tools/coolant_tank.dm
@@ -9,9 +9,9 @@
. = ..()
reagents.add_reagent("coolant", 1000)
-/obj/structure/reagent_dispensers/coolanttank/bullet_act(var/obj/item/projectile/Proj)
+/obj/structure/reagent_dispensers/coolanttank/bullet_act(var/obj/projectile/Proj)
if(Proj.get_structure_damage())
- if(!istype(Proj ,/obj/item/projectile/beam/lasertag) && !istype(Proj ,/obj/item/projectile/beam/practice) ) // TODO: make this not terrible
+ if(!istype(Proj ,/obj/projectile/beam/lasertag) && !istype(Proj ,/obj/projectile/beam/practice) ) // TODO: make this not terrible
explode()
/obj/structure/reagent_dispensers/coolanttank/legacy_ex_act()
diff --git a/code/modules/xenoarcheaology/tools/equipment.dm b/code/modules/xenoarcheaology/tools/equipment.dm
index 59781f439d7..04b44f1bc42 100644
--- a/code/modules/xenoarcheaology/tools/equipment.dm
+++ b/code/modules/xenoarcheaology/tools/equipment.dm
@@ -5,7 +5,7 @@
icon_state = "engspace_suit"
item_state = "engspace_suit"
update_icon_define = "icons/mob/clothing/spacesuits.dmi"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100)
+ armor_type = /datum/armor/general/biosuit/anomaly
max_pressure_protection = 5 * ONE_ATMOSPHERE // Not very good protection, but if an anomaly starts doing gas stuff you're not screwed
min_pressure_protection = 0.4 * ONE_ATMOSPHERE
@@ -14,7 +14,7 @@
desc = "A sealed bio hood capable of insulating against exotic alien energies."
icon_state = "engspace_helmet"
item_state = "engspace_helmet"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100)
+ armor_type = /datum/armor/general/biosuit/anomaly
max_pressure_protection = 5 * ONE_ATMOSPHERE // Not very good protection, but if an anomaly starts doing gas stuff you're not screwed
min_pressure_protection = 0.4 * ONE_ATMOSPHERE
@@ -23,7 +23,7 @@
desc = "A pressure resistant excavation suit partially capable of insulating against exotic alien energies."
icon_state = "cespace_suit"
item_state = "cespace_suit"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100)
+ armor_type = /datum/armor/general/biosuit/anomaly
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/pickaxe)
slowdown = 1
// Pressure protection inherited from space suits
@@ -33,4 +33,4 @@
desc = "A pressure resistant excavation hood partially capable of insulating against exotic alien energies."
icon_state = "cespace_helmet"
item_state = "cespace_helmet"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100)
+ armor_type = /datum/armor/general/biosuit/anomaly
diff --git a/code/modules/xenoarcheaology/tools/tools_pickaxe.dm b/code/modules/xenoarcheaology/tools/tools_pickaxe.dm
index 3c376d10c2d..46bfc3dd593 100644
--- a/code/modules/xenoarcheaology/tools/tools_pickaxe.dm
+++ b/code/modules/xenoarcheaology/tools/tools_pickaxe.dm
@@ -5,7 +5,7 @@
item_state = "syringe_0"
slot_flags = SLOT_EARS
digspeed = 20
- force = 0
+ damage_force = 0
throw_force = 0
desc = "Thick metallic wires for clearing away dust and loose scree (1 centimetre excavation depth)."
excavation_amount = 1
@@ -18,7 +18,7 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "pick1"
item_state = "syringe_0"
- force = 2
+ damage_force = 2
digspeed = 20
desc = "A miniature excavation tool for precise digging (2 centimetre excavation depth)."
excavation_amount = 2
@@ -31,7 +31,7 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "pick2"
item_state = "syringe_0"
- force = 2
+ damage_force = 2
digspeed = 20
desc = "A miniature excavation tool for precise digging (4 centimetre excavation depth)."
excavation_amount = 4
@@ -44,7 +44,7 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "pick3"
item_state = "syringe_0"
- force = 3
+ damage_force = 3
digspeed = 20
desc = "A miniature excavation tool for precise digging (6 centimetre excavation depth)."
excavation_amount = 6
@@ -57,7 +57,7 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "pick4"
item_state = "syringe_0"
- force = 3
+ damage_force = 3
digspeed = 20
desc = "A miniature excavation tool for precise digging (8 centimetre excavation depth)."
excavation_amount = 8
@@ -70,7 +70,7 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "pick5"
item_state = "syringe_0"
- force = 5
+ damage_force = 5
digspeed = 20
desc = "A miniature excavation tool for precise digging (10 centimetre excavation depth)."
excavation_amount = 10
@@ -83,7 +83,7 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "pick6"
item_state = "syringe_0"
- force = 5
+ damage_force = 5
digspeed = 20
desc = "A miniature excavation tool for precise digging (12 centimetre excavation depth)."
excavation_amount = 12
@@ -96,7 +96,7 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "pick_hand"
item_state = "syringe_0"
- force = 10
+ damage_force = 10
digspeed = 30
desc = "A smaller, more precise version of the pickaxe (30 centimetre excavation depth)."
excavation_amount = 30
@@ -169,7 +169,7 @@
desc = "Advanced archaeological drill combining ultrasonic excitation and bluespace manipulation to provide extreme precision. The tip is adjustable from 1 to 30 cm."
drill_sound = 'sound/weapons/thudswoosh.ogg'
drill_verb = "drilling"
- force = 5
+ damage_force = 5
w_class = 2
attack_verb = list("drilled")
diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm
index 317480b1932..5b66e986519 100644
--- a/code/modules/xenobio/items/extracts.dm
+++ b/code/modules/xenobio/items/extracts.dm
@@ -4,7 +4,7 @@
desc = "Goo extracted from a slime, which can do different things depending on its color and what it is injected with."
icon = 'icons/mob/slimes.dmi'
icon_state = "grey slime extract"
- force = 1
+ damage_force = 1
w_class = ITEMSIZE_TINY
throw_force = 0
throw_speed = 3
diff --git a/code/modules/xenobio/items/slime_objects.dm b/code/modules/xenobio/items/slime_objects.dm
index e94b678034d..9b948c1e041 100644
--- a/code/modules/xenobio/items/slime_objects.dm
+++ b/code/modules/xenobio/items/slime_objects.dm
@@ -81,7 +81,7 @@
icon_state = "slime_crystal_small"
w_class = ITEMSIZE_TINY
origin_tech = list(TECH_MAGNET = 6, TECH_BLUESPACE = 3)
- force = 1 //Needs a token force to ensure you can attack because for some reason you can't attack with 0 force things
+ damage_force = 1 //Needs a token damage_force to ensure you can attack because for some reason you can't attack with 0 damage_force things
/obj/item/slime_crystal/melee_mob_hit(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
. = ..()
diff --git a/code/modules/xenobio/items/weapons.dm b/code/modules/xenobio/items/weapons.dm
index 8f7415e35d5..06435ad14b4 100644
--- a/code/modules/xenobio/items/weapons.dm
+++ b/code/modules/xenobio/items/weapons.dm
@@ -4,7 +4,7 @@
icon_state = "slimebaton"
item_state = "slimebaton"
slot_flags = SLOT_BELT
- force = 9
+ damage_force = 9
lightcolor = "#33CCFF"
origin_tech = list(TECH_COMBAT = 2, TECH_BIO = 2)
agonyforce = 10 //It's not supposed to be great at stunning human beings.
@@ -50,7 +50,7 @@
fire_sound = 'sound/weapons/taser2.ogg'
charge_cost = 120 // Twice as many shots.
no_pin_required = 1
- projectile_type = /obj/item/projectile/beam/stun/xeno
+ projectile_type = /obj/projectile/beam/stun/xeno
accuracy = 30 // Make it a bit easier to hit the slimes.
description_info = "This gun will stun a slime or other lesser slimy lifeform for about two seconds, if hit with the projectile it fires."
description_fluff = "An easy to use weapon designed by NanoTrasen, for NanoTrasen. This weapon is designed to subdue lesser \
@@ -66,7 +66,7 @@
desc = "An NT Mk30 NL retrofitted to fire beams for subduing non-humanoid slimy xeno life forms."
icon_state = "taserold"
item_state = "taser"
- projectile_type = /obj/item/projectile/beam/stun/xeno/weak
+ projectile_type = /obj/projectile/beam/stun/xeno/weak
charge_cost = 480
accuracy = 0 //Same accuracy as a normal Sec taser.
description_fluff = "An NT Mk30 NL retrofitted after the events that occurred aboard the NRS Prometheus."
@@ -76,7 +76,7 @@
use_external_power = 1
recharge_time = 3
-/obj/item/projectile/beam/stun/xeno
+/obj/projectile/beam/stun/xeno
icon_state = "omni"
agony = 4
nodamage = TRUE
@@ -88,10 +88,10 @@
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
-/obj/item/projectile/beam/stun/xeno/weak //Weaker variant for non-research equipment, turrets, or rapid fire types.
+/obj/projectile/beam/stun/xeno/weak //Weaker variant for non-research equipment, turrets, or rapid fire types.
agony = 3
-/obj/item/projectile/beam/stun/xeno/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
+/obj/projectile/beam/stun/xeno/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
if(istype(target, /mob/living))
var/mob/living/L = target
if(L.mob_class & MOB_CLASS_SLIME)
diff --git a/code/modules/xenobio2/mob/xeno procs.dm b/code/modules/xenobio2/mob/xeno procs.dm
index 631a756cfdb..9c1e560b30c 100644
--- a/code/modules/xenobio2/mob/xeno procs.dm
+++ b/code/modules/xenobio2/mob/xeno procs.dm
@@ -143,9 +143,9 @@ Divergence proc, used in mutation to make unique datums.
/mob/living/simple_mob/xeno/proc/BuildReagentLists()
return
-/mob/living/simple_mob/xeno/bullet_act(var/obj/item/projectile/P)
+/mob/living/simple_mob/xeno/bullet_act(var/obj/projectile/P)
//Shamelessly stolen from ablative armor.
- if((traitdat.traits[TRAIT_XENO_CHROMATIC]) && istype(P, /obj/item/projectile/beam))
+ if((traitdat.traits[TRAIT_XENO_CHROMATIC]) && istype(P, /obj/projectile/beam))
visible_message(")\The beam reflects off of the [src]!")
// Find a turf near or on the original location to bounce to
var/new_x = P.starting.x + pick(0, -1, 1, -2, 2)
diff --git a/code/modules/xenobio2/mob/xeno.dm b/code/modules/xenobio2/mob/xeno.dm
index a4c6ed13b49..dbb37397c29 100644
--- a/code/modules/xenobio2/mob/xeno.dm
+++ b/code/modules/xenobio2/mob/xeno.dm
@@ -92,9 +92,9 @@ Also includes Life and New
if(!health)
set_stat(DEAD)
-/mob/living/simple_mob/xeno/bullet_act(var/obj/item/projectile/Proj)
- if(istype(Proj, /obj/item/projectile/beam/stun/xeno))
- var/obj/item/projectile/beam/stun/xeno/hit = Proj
+/mob/living/simple_mob/xeno/bullet_act(var/obj/projectile/Proj)
+ if(istype(Proj, /obj/projectile/beam/stun/xeno))
+ var/obj/projectile/beam/stun/xeno/hit = Proj
stasis += hit.stasisforce
..()