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 ..()