From 8d80bbc8f09de14ba5877b38a414da8b1e377cc8 Mon Sep 17 00:00:00 2001 From: Delams-The-SM <66973657+Delams-The-SM@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:42:41 +0200 Subject: [PATCH 01/11] Initial Alot of things are still broken, like melee, or no abletive armour, still need more testing --- code/__DEFINES/mobs.dm | 22 +- code/__DEFINES/weapons.dm | 23 +- code/_onclick/item_attack.dm | 2 +- code/datums/stat_modifiers/mob_modifiers.dm | 20 +- .../modifiers/mob/superior/armor.dm | 36 +- .../mob/superior/ranged/ranged_modifiers.dm | 4 +- .../modifiers/mob/superior/roach_modifiers.dm | 12 +- .../mob/superior/special/special_modifiers.dm | 14 +- .../mob/superior/spider_modifiers.dm | 26 +- .../mob/superior/superior_modifiers.dm | 46 +- .../modifiers/mob/superior/xeno_modifers.dm | 28 +- .../superior_modifier_defines.dm | 22 +- .../mecha/equipment/tools/mining_tools.dm | 2 +- code/game/mecha/equipment/tools/work_tools.dm | 4 +- code/game/mecha/equipment/weapons/melee.dm | 4 +- code/game/objects/items.dm | 6 +- .../devices/organ_module/active/armblades.dm | 6 +- .../devices/organ_module/active/armshields.dm | 2 +- code/game/objects/items/oddities.dm | 2 +- code/game/objects/items/stacks/throwing.dm | 4 +- .../objects/items/weapons/hydrogen_melee.dm | 4 +- .../objects/items/weapons/material/misc.dm | 2 +- .../objects/items/weapons/material/swords.dm | 2 +- .../objects/items/weapons/melee/energy.dm | 10 +- code/game/objects/items/weapons/nt_melee.dm | 36 +- code/game/objects/items/weapons/shields.dm | 16 +- code/game/objects/items/weapons/storage.dm | 2 +- .../objects/items/weapons/swords_axes_etc.dm | 10 +- .../objects/items/weapons/tools/_tools.dm | 10 +- .../objects/items/weapons/tools/hammer.dm | 18 +- code/game/objects/items/weapons/tools/karl.dm | 2 +- .../items/weapons/tools/knifes_daggers.dm | 20 +- .../items/weapons/tools/mods/armor_mods.dm | 8 +- .../items/weapons/tools/mods/mod_types.dm | 4 +- .../objects/items/weapons/tools/pickaxe.dm | 2 +- code/game/objects/items/weapons/tools/saws.dm | 16 +- .../objects/items/weapons/tools/scalpels.dm | 4 +- .../objects/items/weapons/tools/shovel.dm | 4 +- .../items/weapons/tools/simple_weapons.dm | 56 +-- .../items/weapons/tools/surgicaldrills.dm | 6 +- code/game/objects/objs.dm | 6 +- code/game/turfs/simulated/walls.dm | 4 +- code/modules/clothing/accessories/holster.dm | 2 +- code/modules/clothing/cloak/hooded.dm | 8 +- code/modules/clothing/clothing.dm | 8 +- code/modules/clothing/gloves/boxing.dm | 2 +- .../modules/clothing/gloves/knuckledusters.dm | 14 +- code/modules/clothing/gloves/miscellaneous.dm | 32 +- code/modules/clothing/gloves/stungloves.dm | 4 +- code/modules/clothing/head/hardhat.dm | 18 +- code/modules/clothing/head/helmet.dm | 146 +++--- code/modules/clothing/head/hood.dm | 4 +- code/modules/clothing/head/jobs.dm | 4 +- code/modules/clothing/head/mindreader.dm | 6 +- code/modules/clothing/head/misc.dm | 20 +- code/modules/clothing/head/misc_special.dm | 8 +- code/modules/clothing/masks/gasmask.dm | 2 +- code/modules/clothing/shoes/jobs.dm | 10 +- code/modules/clothing/shoes/magboots.dm | 6 +- code/modules/clothing/shoes/miscellaneous.dm | 13 +- code/modules/clothing/spacesuits/bomb.dm | 24 +- code/modules/clothing/spacesuits/captain.dm | 24 +- .../clothing/spacesuits/miscellaneous.dm | 2 +- code/modules/clothing/spacesuits/rig/rig.dm | 10 +- .../spacesuits/rig/suits/ameridian_knight.dm | 2 +- .../clothing/spacesuits/rig/suits/combat.dm | 48 +- .../clothing/spacesuits/rig/suits/light.dm | 26 +- .../clothing/spacesuits/rig/suits/merc.dm | 6 +- .../clothing/spacesuits/rig/suits/station.dm | 68 +-- code/modules/clothing/spacesuits/syndi.dm | 12 +- .../clothing/spacesuits/void/excelsior.dm | 24 +- code/modules/clothing/spacesuits/void/merc.dm | 84 ++-- .../clothing/spacesuits/void/neotheology.dm | 60 +-- .../clothing/spacesuits/void/station.dm | 140 +++--- code/modules/clothing/spacesuits/void/void.dm | 12 +- .../clothing/spacesuits/void/wizard.dm | 12 +- code/modules/clothing/suits/armor.dm | 194 ++++---- code/modules/clothing/suits/gorka.dm | 4 +- code/modules/clothing/suits/greatcoat.dm | 28 +- code/modules/clothing/suits/jobs.dm | 50 +- code/modules/clothing/suits/labcoat.dm | 6 +- code/modules/clothing/suits/miscellaneous.dm | 62 +-- code/modules/clothing/suits/storage.dm | 42 +- code/modules/clothing/suits/utility.dm | 8 +- code/modules/clothing/under/jobs/civilian.dm | 2 +- .../clothing/under/jobs/engineering.dm | 14 +- code/modules/clothing/under/jobs/medsci.dm | 6 +- code/modules/clothing/under/jobs/militia.dm | 4 +- code/modules/clothing/under/jobs/security.dm | 2 +- code/modules/clothing/under/miscellaneous.dm | 20 +- .../genetics/creatures/golden_roach.dm | 2 +- code/modules/genetics/creatures/wasonce.dm | 2 +- .../mob/living/carbon/carbon_defense.dm | 2 +- .../living/carbon/human/human_attackhand.dm | 4 +- .../mob/living/carbon/human/human_damage.dm | 6 +- .../mob/living/carbon/human/human_defense.dm | 4 +- .../carbon/human/species/species_attack.dm | 2 +- .../carbon/human/species/station/station.dm | 8 - .../mob/living/carbon/human/unarmed_attack.dm | 4 +- .../ameridian/ameridian_behemoth.dm | 2 +- .../ameridian/ameridian_golem.dm | 2 +- .../ameridian/ameridian_runtling.dm | 2 +- .../ameridian/ameridian_shooter.dm | 2 +- .../living/carbon/superior_animal/defense.dm | 7 +- .../superior_animal/drone/handmade_drone.dm | 2 +- .../superior_animal/drone/parts/parts.dm | 12 +- .../superior_animal/drone/types/hammer.dm | 2 +- .../superior_animal/drone/types/roomba.dm | 8 +- .../superior_animal/fungi/types/slime.dm | 6 +- .../giant_spider/giant_spider.dm | 6 +- .../giant_spider/types/hunter/hunter.dm | 14 +- .../giant_spider/types/nurse.dm | 10 +- .../carbon/superior_animal/human/stranger.dm | 2 +- .../human/subtype/colony/colony.dm | 6 +- .../human/subtype/eventwolf/eventwolf.dm | 4 +- .../human/subtype/excelsior/excelsior.dm | 4 +- .../human/subtype/kriosan/kriosan.dm | 6 +- .../human/subtype/prisoners/prisoners.dm | 6 +- .../human/subtype/solgov/marines.dm | 8 +- .../human/subtype/voidwolf/voidwolf.dm | 26 +- .../human/subtype/xiang jiang/xiang.dm | 4 +- .../superior_animal/lodge/types/cerberus.dm | 4 +- .../carbon/superior_animal/nanobot/nanobot.dm | 2 +- .../psi_monsters/psi_monster.dm | 2 +- .../psi_monsters/types/Ploge.dm | 6 +- .../psi_monsters/types/PsiImpressive.dm | 14 +- .../psi_monsters/types/PsiMega.dm | 2 +- .../psi_monsters/types/PsiRobust.dm | 8 +- .../psi_monsters/types/PsiTrash.dm | 6 +- .../psi_monsters/types/corrupted_beings.dm | 36 +- .../carbon/superior_animal/roach/roach.dm | 2 +- .../superior_animal/roach/types/bluespace.dm | 2 +- .../carbon/superior_animal/roach/types/emp.dm | 2 +- .../superior_animal/roach/types/fuhrer.dm | 2 +- .../superior_animal/roach/types/glowing.dm | 4 +- .../superior_animal/roach/types/hunter.dm | 2 +- .../superior_animal/roach/types/kaiser.dm | 4 +- .../superior_animal/roach/types/nanites.dm | 2 +- .../superior_animal/roach/types/tank.dm | 4 +- .../superior_animal/roach/types/tazntz.dm | 4 +- .../superior_animal/roach/types/toxic.dm | 2 +- .../carbon/superior_animal/robots/robot.dm | 2 +- .../robots/subtype/church/types/bishop.dm | 2 +- .../robots/subtype/church/types/knight.dm | 2 +- .../robots/subtype/church/types/pawn.dm | 2 +- .../robots/subtype/church/types/rook.dm | 2 +- .../robots/subtype/greyson/types/mechs.dm | 2 +- .../robots/subtype/greyson/types/turrets.dm | 4 +- .../carbon/superior_animal/termite/termite.dm | 20 +- .../termite/termite_no_despawn.dm | 20 +- .../superior_animal/vox/thrown_items.dm | 4 +- .../superior_animal/vox/types/vox_types.dm | 10 +- .../carbon/superior_animal/vox/types/wasp.dm | 2 +- .../living/carbon/superior_animal/vox/vox.dm | 4 +- .../superior_animal/wurms/types/wurm.dm | 10 +- .../carbon/superior_animal/xenomorph/drone.dm | 6 +- .../xenomorph/types/XenoImpressive.dm | 4 +- .../xenomorph/types/XenoMega.dm | 4 +- code/modules/mob/living/living_defense.dm | 429 ++++++++++++------ code/modules/mob/living/living_defines.dm | 6 +- .../modules/mob/living/silicon/robot/robot.dm | 2 +- .../simple_animal/friendly/light_geist.dm | 6 +- .../mob/living/simple_animal/hostile/bear.dm | 2 +- .../mob/living/simple_animal/hostile/big.dm | 14 +- .../mob/living/simple_animal/hostile/carp.dm | 4 +- .../living/simple_animal/hostile/creature.dm | 2 +- .../living/simple_animal/hostile/excelsior.dm | 9 +- .../living/simple_animal/hostile/hivebot.dm | 4 +- .../mob/living/simple_animal/hostile/jelly.dm | 2 +- .../simple_animal/hostile/retaliate/drone.dm | 2 +- .../living/simple_animal/hostile/syndicate.dm | 6 +- .../mob/living/simple_animal/simple_animal.dm | 2 +- code/modules/mob/mob_grab_specials.dm | 2 +- code/modules/nanogate/nanogate_items.dm | 6 +- code/modules/nanogate/powers/nanobot.dm | 2 +- code/modules/organs/external/damage.dm | 4 +- .../organs/external/subtypes/robotic.dm | 2 +- .../organs/external/subtypes/robotic_types.dm | 12 +- .../organs/external/subtypes/standard.dm | 2 +- code/modules/organs/internal/_internal.dm | 2 +- .../modules/projectiles/ammunition/bullets.dm | 6 +- .../projectiles/ammunition/magazines.dm | 8 +- code/modules/projectiles/gun.dm | 19 +- .../guns/energy/laser/antebellum.dm | 2 +- .../projectiles/guns/energy/laser/cog.dm | 2 +- .../guns/energy/laser/concilium.dm | 2 +- .../guns/energy/laser/lasercore.dm | 3 +- .../projectiles/guns/energy/misc/robotguns.dm | 10 +- .../guns/energy/plasma/excubitor.dm | 2 +- .../projectiles/guns/matter/launcher/books.dm | 2 +- code/modules/projectiles/guns/mods/mods.dm | 15 +- code/modules/projectiles/guns/oddity_items.dm | 48 +- .../guns/projectile/automatic/scaffold.dm | 2 +- .../projectile/automatic/slaught_o_matic.dm | 2 +- .../projectile/automatic/trouble_shooter.dm | 2 +- .../guns/projectile/little_comet.dm | 2 +- .../guns/projectile/pistol/rebar.dm | 2 +- .../guns/projectile/pistol/silenced.dm | 2 +- .../guns/projectile/revolver/breakaction.dm | 4 +- .../guns/projectile/revolver/deckard.dm | 2 +- .../guns/projectile/revolver/longboi.dm | 2 +- .../guns/projectile/revolver/revolver.dm | 2 +- .../projectile/revolver/tacticool_revolver.dm | 2 +- .../guns/projectile/revolver/wayfarer.dm | 2 +- .../guns/projectile/shotgun/buffalo.dm | 2 +- code/modules/projectiles/projectile.dm | 38 +- .../projectiles/projectile/ameridian.dm | 4 +- code/modules/projectiles/projectile/beams.dm | 72 ++- .../modules/projectiles/projectile/bullets.dm | 14 +- .../projectiles/projectile/bullettypes.dm | 327 ++++++------- code/modules/projectiles/projectile/energy.dm | 2 +- .../projectiles/projectile/fragment.dm | 2 +- .../projectiles/projectile/hydrogen.dm | 8 +- code/modules/projectiles/projectile/plasma.dm | 14 +- .../projectiles/projectile/plasma_aoe.dm | 12 +- .../projectile/projectilegrenades.dm | 4 +- .../modules/projectiles/projectile/special.dm | 16 +- .../psionics/psionic_items/psi_Harmor.dm | 24 +- .../psionics/psionic_items/psi_Larmor.dm | 24 +- .../psionics/psionic_items/psi_armor.dm | 24 +- .../psionics/psionic_items/psi_artifacts.dm | 6 +- .../psionics/psionic_items/psi_temp_items.dm | 12 +- .../xenoarchaeology/tools/anomaly_suit.dm | 4 +- modular_sojourn/fencer.dm | 4 +- modular_sojourn/power_puncher.dm | 4 +- nano/templates/clothing_stats.tmpl | 2 +- nano/templates/tool_stats.tmpl | 2 +- nano/templates/weapon_stats.tmpl | 2 +- 228 files changed, 1841 insertions(+), 1664 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 35adebef6a6..421cbacb8ad 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -89,7 +89,7 @@ #define DEFAULT_ATTACK_COOLDOWN 8 //Default timeout for aggressive actions #define DEFAULT_QUICK_COOLDOWN 4 -#define FAST_WEAPON_COOLDOWN -2 +#define FAST_WEAPON_COOLDOWN 3 #define DEFAULT_WEAPON_COOLDOWN 5 #define SLOW_WEAPON_COOLDOWN 7 @@ -116,23 +116,23 @@ // Mobs may have multiple types, attached to a max() operator. this is mostly because some 'miscelaneous' mobs are grouped more generally. // If you don't see something here that seems to fit what you want, it may very well not have a define. #define ROACH_HEALTH_MOD 1 //all roaches other than kaisers./ -#define SPIDER_HEALTH_MOD 0.5 //all spiders other than reapers./ -#define TERMITE_HEALTH_MOD 0.5 //all termites./ -#define CAVEMOB_HEALTH_MOD 0.70 //wurms, Sargoyle./ -#define AMGOLEM_HEALTH_MOD 0.70 //ameridien golems./ +#define SPIDER_HEALTH_MOD 1 //all spiders other than reapers./ +#define TERMITE_HEALTH_MOD 1 //all termites./ +#define CAVEMOB_HEALTH_MOD 1 //wurms, Sargoyle./ +#define AMGOLEM_HEALTH_MOD 1 //ameridien golems./ #define CHURCHMOB_HEALTH_MOD 1 //Rooks and other church related mobs. #define XENOMORPH_HEALTH_MOD 1 //Xenos, duh. includes queens. #define REPUBLICON_HEALTH_MOD 1 //preppers bots, including seekers and drones. -#define GREYSONWEAK_HEALTH_MOD 0.8 //Weak greyson bots -#define GREYSONROBUST_HEALTH_MOD 0.70 //Strong greyson bots +#define GREYSONWEAK_HEALTH_MOD 1 //Weak greyson bots +#define GREYSONROBUST_HEALTH_MOD 1 //Strong greyson bots #define CARP_HEALTH_MOD 1 //All space carp./ -#define VOIDWOLF_HEALTH_MOD 0.75 //all voidwolves other than reavers. +#define VOIDWOLF_HEALTH_MOD 1 //all voidwolves other than reavers. #define MEGAFAUNA_HEALTH_MOD 1 //all megafauna other than levaiathans. Renders, mukwah, nightmare stalkers. #define VOXBIRD_HEALTH_MOD 1 //all the tribal birds./ -#define EXCELSIOR_HEALTH_MOD 0.7 //all the excelsior mobs, including mindslaves, and bears. +#define EXCELSIOR_HEALTH_MOD 1 //all the excelsior mobs, including mindslaves, and bears. #define LEVIATHAN_HEALTH_MOD 1 //leviathans; Kaiser, Reaper, Patriarch, etc./ -#define PSIMOB_HEALTH_MOD 0.5 //Deepmaints mobs other than bosses./ -#define DVEY_HEALTH_MOD 0.6 //'corrupted beings', I.E Daskvey and their pets./ +#define PSIMOB_HEALTH_MOD 1 //Deepmaints mobs other than bosses./ +#define DVEY_HEALTH_MOD 1 //'corrupted beings', I.E Daskvey and their pets./ #define PSIBOSS_HEALTH_MOD 1 //deepmaints bosses, be careful with this one. it's generally preferable to manually tweak them because they're...yknow, uniques./ diff --git a/code/__DEFINES/weapons.dm b/code/__DEFINES/weapons.dm index 0c8e4b4b0cd..d847a3ca31b 100644 --- a/code/__DEFINES/weapons.dm +++ b/code/__DEFINES/weapons.dm @@ -12,14 +12,13 @@ #define WEAPON_FORCE_GODLIKE 88 // currently only used by the energy axe, which can only be obtained via admin verbs //Armor Penetration: Ignores a certain amount of armor for the purposes of inflicting damage. -#define ARMOR_PEN_GRAZING 1.2 -#define ARMOR_PEN_SHALLOW 1.4 -#define ARMOR_PEN_MODERATE 1.6 -#define ARMOR_PEN_DEEP 1.8 -#define ARMOR_PEN_HALF 2 -#define ARMOR_PEN_EXTREME 2.5 -#define ARMOR_PEN_MASSIVE 3 -#define ARMOR_PEN_MAX 10 +#define ARMOR_PEN_GRAZING 5 +#define ARMOR_PEN_SHALLOW 10 +#define ARMOR_PEN_MODERATE 15 +#define ARMOR_PEN_DEEP 20 +#define ARMOR_PEN_EXTREME 25 +#define ARMOR_PEN_MASSIVE 30 +#define ARMOR_PEN_HALF 50 //Wounding Multiplier: Increases damage taken, applied after armor. #define WOUNDING_HARMLESS 0.25 @@ -84,10 +83,10 @@ Fire delay 15 = 40 rounds per minute */ //Quick defines for fire modes -#define FULL_AUTO_150 list(mode_name = "full auto", mode_desc = "150 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 4 , icon="auto") -#define FULL_AUTO_200 list(mode_name = "full auto", mode_desc = "200 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 3 , icon="auto") -#define FULL_AUTO_300 list(mode_name = "full auto", mode_desc = "300 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 2 , icon="auto") -#define FULL_AUTO_600 list(mode_name = "fuller auto", mode_desc = "600 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 1 , icon="fuller") +#define FULL_AUTO_150 list(mode_name = "full auto", mode_desc = "150 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 4 , icon="auto", damage_mult_add = -0.2) +#define FULL_AUTO_200 list(mode_name = "full auto", mode_desc = "200 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 3 , icon="auto", damage_mult_add = -0.2) +#define FULL_AUTO_300 list(mode_name = "full auto", mode_desc = "300 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 2 , icon="auto", damage_mult_add = -0.2) +#define FULL_AUTO_600 list(mode_name = "fuller auto", mode_desc = "600 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 1 , icon="fuller", damage_mult_add = -0.2) #define FULL_AUTO_150_NOLOSS list(mode_name = "full auto", mode_desc = "150 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 4 , icon="auto") #define FULL_AUTO_200_NOLOSS list(mode_name = "full auto", mode_desc = "200 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 3 , icon="auto") diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 1e099a19ebe..d1cc4692347 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -285,7 +285,7 @@ avoid code duplication. This includes items that may sometimes act as a standard if(!i==0) T = get_step(T, get_dir(user, A)) force = force * 0.8 //20% less damage each step forwards - armor_divisor -= 0.2 //Lower AD a little, per tile + armor_penetration -= 10 //Lower AD a little, per tile //else //message_admins("0th tile bypassed") diff --git a/code/datums/stat_modifiers/mob_modifiers.dm b/code/datums/stat_modifiers/mob_modifiers.dm index ad1627c2657..673e4a45e6c 100644 --- a/code/datums/stat_modifiers/mob_modifiers.dm +++ b/code/datums/stat_modifiers/mob_modifiers.dm @@ -21,9 +21,9 @@ var/inherent_projectile_increment_adjustment /// Any projectiles fired by the holder will have their armor penetration increased by this much, added after the mult - var/projectile_armor_divisor_adjustment + var/projectile_armor_penetration_adjustment /// Any projectiles fired by the holder will have their armor penetration multiplied by this much, added first - var/projectile_armor_divisor_mult_increment + var/projectile_armor_penetration_mult_increment /// Inverted, lower = higher speed var/projectile_speed_increment_adjustment @@ -66,10 +66,10 @@ for (var/entry in projectile_damage_mult) livingholder.projectile_damage_mult[entry] = ZERO_OR_MORE((livingholder.projectile_damage_mult[entry] - projectile_damage_mult[entry])) - if (projectile_armor_divisor_adjustment) - livingholder.projectile_armor_divisor_adjustment = ZERO_OR_MORE((livingholder.projectile_armor_divisor_adjustment - projectile_armor_divisor_adjustment)) - if (projectile_armor_divisor_mult_increment) - livingholder.projectile_armor_divisor_mult = ZERO_OR_MORE((livingholder.projectile_armor_divisor_mult - projectile_armor_divisor_mult_increment)) + if (projectile_armor_penetration_adjustment) + livingholder.projectile_armor_penetration_adjustment = ZERO_OR_MORE((livingholder.projectile_armor_penetration_adjustment - projectile_armor_penetration_adjustment)) + if (projectile_armor_penetration_mult_increment) + livingholder.projectile_armor_penetration_mult = ZERO_OR_MORE((livingholder.projectile_armor_penetration_mult - projectile_armor_penetration_mult_increment)) if (projectile_speed_increment_adjustment) livingholder.projectile_speed_increment = ZERO_OR_MORE((livingholder.projectile_speed_increment - projectile_speed_increment_adjustment)) @@ -110,10 +110,10 @@ for (var/entry in projectile_damage_mult) livingtarget.projectile_damage_mult[entry] = ZERO_OR_MORE((livingtarget.projectile_damage_mult[entry] + projectile_damage_mult[entry])) - if (projectile_armor_divisor_adjustment) - livingtarget.projectile_armor_divisor_adjustment = ZERO_OR_MORE((livingtarget.projectile_armor_divisor_adjustment + projectile_armor_divisor_adjustment)) - if (projectile_armor_divisor_mult_increment) - livingtarget.projectile_armor_divisor_mult = ZERO_OR_MORE((livingtarget.projectile_armor_divisor_mult + projectile_armor_divisor_mult_increment)) + if (projectile_armor_penetration_adjustment) + livingtarget.projectile_armor_penetration_adjustment = ZERO_OR_MORE((livingtarget.projectile_armor_penetration_adjustment + projectile_armor_penetration_adjustment)) + if (projectile_armor_penetration_mult_increment) + livingtarget.projectile_armor_penetration_mult = ZERO_OR_MORE((livingtarget.projectile_armor_penetration_mult + projectile_armor_penetration_mult_increment)) if (projectile_speed_increment_adjustment) livingtarget.projectile_speed_increment = ZERO_OR_MORE((livingtarget.projectile_speed_increment + projectile_speed_increment_adjustment)) diff --git a/code/datums/stat_modifiers/modifiers/mob/superior/armor.dm b/code/datums/stat_modifiers/modifiers/mob/superior/armor.dm index 7725e10bd4d..d84862ea26c 100644 --- a/code/datums/stat_modifiers/modifiers/mob/superior/armor.dm +++ b/code/datums/stat_modifiers/modifiers/mob/superior/armor.dm @@ -92,9 +92,9 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/positive/low armor_adjustment = list( - melee = 2, - bullet = 2, - energy = 2, + melee = 10, + bullet = 10, + energy = 10, bomb = 10, bio = 10, rad = 10, @@ -103,9 +103,9 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/positive/medium armor_adjustment = list( - melee = 3, - bullet = 3, - energy = 3, + melee = 20, + bullet = 20, + energy = 20, bomb = 20, bio = 20, rad = 20, @@ -114,9 +114,9 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/positive/high armor_adjustment = list( - melee = 4, - bullet = 4, - energy = 4, + melee = 30, + bullet = 30, + energy = 30, bomb = 30, bio = 30, rad = 30, @@ -161,9 +161,9 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/negative/low armor_adjustment = list( - melee = -2, - bullet = -2, - energy = -2, + melee = -10, + bullet = -10, + energy = -10, bomb = -10, bio = -10, rad = -10, @@ -172,9 +172,9 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/negative/medium armor_adjustment = list( - melee = -5, - bullet = -5, - energy = -5, + melee = -20, + bullet = -20, + energy = -20, bomb = -20, bio = -20, rad = -20, @@ -183,9 +183,9 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/negative/high armor_adjustment = list( - melee = -7, - bullet = -7, - energy = -7, + melee = -30, + bullet = -30, + energy = -30, bomb = -30, bio = -30, rad = -30, diff --git a/code/datums/stat_modifiers/modifiers/mob/superior/ranged/ranged_modifiers.dm b/code/datums/stat_modifiers/modifiers/mob/superior/ranged/ranged_modifiers.dm index 37c63363d0a..e03a219a4ef 100644 --- a/code/datums/stat_modifiers/modifiers/mob/superior/ranged/ranged_modifiers.dm +++ b/code/datums/stat_modifiers/modifiers/mob/superior/ranged/ranged_modifiers.dm @@ -1,7 +1,7 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/deadeye inherent_projectile_mult_increment = 1 //a little more dps, but more easily avoided - projectile_armor_divisor_mult_increment = 1.25 + projectile_armor_penetration_mult_increment = 0.25 delay_for_range_mult = 1.4 delay_for_rapid_range_mult = 1.4 @@ -34,7 +34,7 @@ rapid_fire_shooting_amount_mult = 2 //pretty noticable damage increase delay_for_rapid_range_mult = 0.5 //half the delay - projectile_armor_divisor_mult_increment = -0.5 //significantly worse armor penetration because they're just shooting whatever part of you they can + projectile_armor_penetration_mult_increment = -0.5 //significantly worse armor penetration because they're just shooting whatever part of you they can inherent_projectile_mult_increment = -0.3 // but still with higher DPS because theyre shooting you twice as much for 70% damage diff --git a/code/datums/stat_modifiers/modifiers/mob/superior/roach_modifiers.dm b/code/datums/stat_modifiers/modifiers/mob/superior/roach_modifiers.dm index 23b745fcb38..e5d04830dee 100644 --- a/code/datums/stat_modifiers/modifiers/mob/superior/roach_modifiers.dm +++ b/code/datums/stat_modifiers/modifiers/mob/superior/roach_modifiers.dm @@ -1,13 +1,13 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/biosilicified armor_adjustment = list( - melee = 2, - bullet = 1, + melee = 10, + bullet = 5, bomb = 10, agony = 15 //Rubbers deal way less to us! ) - armor_divisor_increment = 1.5 + armor_penetration_increment = 15 stattags = DEFENSE_STATTAG | MELEE_STATTAG @@ -18,12 +18,12 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/lambertian armor_adjustment = list( - energy = 2, - agony = 1 + energy = 10, + agony = 10 ) flash_resistances_increment = 2 - armor_divisor_increment = 1.15 + armor_penetration_increment = 5 stattags = DEFENSE_STATTAG diff --git a/code/datums/stat_modifiers/modifiers/mob/superior/special/special_modifiers.dm b/code/datums/stat_modifiers/modifiers/mob/superior/special/special_modifiers.dm index 5ead6829508..4fde5debc55 100644 --- a/code/datums/stat_modifiers/modifiers/mob/superior/special/special_modifiers.dm +++ b/code/datums/stat_modifiers/modifiers/mob/superior/special/special_modifiers.dm @@ -29,20 +29,20 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/aggressive/savage armor_adjustment = list( - melee = -10, - bullet = -8, - energy = -8, + melee = -40, + bullet = -35, + energy = -35, bomb = -40, - agony = 12 //it doesnt care, it just wants you dead + agony = 50 //it doesnt care, it just wants you dead ) maxHealth_mult = 0.8 //80% hp move_to_delay_increment = -1.3 // fast - projectile_armor_divisor_mult_increment = 0.5 - armor_divisor_mult = 1.5 - armor_divisor_zeroth = 0.1 + projectile_armor_penetration_mult_increment = 0.5 + armor_penetration_mult = 1.5 + armor_penetration_zeroth = 0.1 melee_damage_lower_mult = 1.5 melee_damage_upper_mult = 1.5 diff --git a/code/datums/stat_modifiers/modifiers/mob/superior/spider_modifiers.dm b/code/datums/stat_modifiers/modifiers/mob/superior/spider_modifiers.dm index e5aa299adbc..f4eecca5d52 100644 --- a/code/datums/stat_modifiers/modifiers/mob/superior/spider_modifiers.dm +++ b/code/datums/stat_modifiers/modifiers/mob/superior/spider_modifiers.dm @@ -5,7 +5,7 @@ ) flash_resistances_increment = 2 - armor_divisor_increment = 1.25 + armor_penetration_increment = 15 prefix = "Lustrous" @@ -16,13 +16,13 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/durable/spider armor_adjustment = list( - melee = 1, - bullet = 1, + melee = 5, + bullet = 5, bomb = 15, - agony = 7 + agony = 30 ) - armor_divisor_increment = 1.1 + armor_penetration_increment = 5 flash_resistances_increment = 1 maxHealth_increment = 20 @@ -33,10 +33,10 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/young/spider armor_adjustment = list( - melee = -1, - bullet = -1, - energy = -1, - agony = -1 + melee = -5, + bullet = -5, + energy = -5, + agony = -5 ) maxHealth_increment = -10 @@ -51,10 +51,10 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/old/spider armor_adjustment = list( - melee = 1, - bullet = 1, + melee = 5, + bullet = 5, bomb = 10, - agony = 5 //just cant feel it + agony = 20 //just cant feel it ) maxHealth_increment = 20 //life already seen them by @@ -71,7 +71,7 @@ bomb = 5, bio = 15, rad = 15, - agony = 2 + agony = 10 ) stattags = DEFENSE_STATTAG | MELEE_STATTAG diff --git a/code/datums/stat_modifiers/modifiers/mob/superior/superior_modifiers.dm b/code/datums/stat_modifiers/modifiers/mob/superior/superior_modifiers.dm index 35d5eedd8f7..a983d0291fd 100644 --- a/code/datums/stat_modifiers/modifiers/mob/superior/superior_modifiers.dm +++ b/code/datums/stat_modifiers/modifiers/mob/superior/superior_modifiers.dm @@ -1,10 +1,10 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/durable armor_adjustment = list( - melee = 1, - bullet = 1, - bomb = 3, - agony = 7 + melee = 5, + bullet = 5, + bomb = 15, + agony = 30 ) flash_resistances_increment = 1 @@ -18,22 +18,22 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/brutish armor_adjustment = list( - melee = 1, - bullet = 1, - energy = -1, + melee = 5, + bullet = 5, + energy = -5, bomb = 5, - agony = 1 + agony = 11 ) melee_damage_lower_increment = 2 melee_damage_upper_increment = 2 maxHealth_increment = 5 - armor_divisor_increment = 1.25 + armor_penetration_increment = 1.25 stattags = DEFENSE_STATTAG | MELEE_STATTAG inherent_projectile_mult_increment = 0.1 - projectile_armor_divisor_adjustment = 2 + projectile_armor_penetration_adjustment = 2 description = "This one is noticably muscular. It looks like it might hit harder than others." @@ -42,10 +42,10 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/padded armor_adjustment = list( - melee = 2, - bullet = 1, + melee = 10, + bullet = 5, bomb = 10, - agony = 3 //Rubbers deal way less to us! + agony = 15 //Rubbers deal way less to us! ) stattags = DEFENSE_STATTAG @@ -59,10 +59,10 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/old armor_adjustment = list( - melee = 1, - bullet = 1, + melee = 5, + bullet = 5, bomb = 10, - agony = 5 //just cant feel it + agony = 20 //just cant feel it ) maxHealth_increment = 20 //life already seen them by @@ -79,10 +79,10 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/young armor_adjustment = list( - melee = -1, - bullet = -1, - energy = -1, - agony = -1 + melee = -5, + bullet = -5, + energy = -5, + agony = -5 ) maxHealth_increment = -10 @@ -101,10 +101,10 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/brutal armor_adjustment = list( - melee = 3, - bullet = 1, + melee = 15, + bullet = 5, bomb = 15, - agony = 7 + agony = 30 ) flash_resistances_increment = 4 diff --git a/code/datums/stat_modifiers/modifiers/mob/superior/xeno_modifers.dm b/code/datums/stat_modifiers/modifiers/mob/superior/xeno_modifers.dm index ba980746d8e..0466e48e1df 100644 --- a/code/datums/stat_modifiers/modifiers/mob/superior/xeno_modifers.dm +++ b/code/datums/stat_modifiers/modifiers/mob/superior/xeno_modifers.dm @@ -1,10 +1,10 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/durable/xeno armor_adjustment = list( - melee = 3, - bullet = 3, - bomb = 3, - agony = 7 + melee = 15, + bullet = 15, + bomb = 15, + agony = 30 ) flash_resistances_increment = 2 @@ -15,17 +15,17 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/brutish/xeno armor_adjustment = list( - melee = 2, - bullet = 2, + melee = 10, + bullet = 10, energy = 0, bomb = 5, - agony = 3 + agony = 15 ) melee_damage_lower_increment = 5 melee_damage_upper_increment = 5 maxHealth_increment = 25 - armor_divisor_increment = 1.25 + armor_penetration_increment = 15 description = "This one is noticably tougher with sharp claws. It looks like it might hit harder than others." @@ -34,10 +34,10 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/padded/xeno armor_adjustment = list( - melee = 5, - bullet = 3, + melee = 20, + bullet = 15, bomb = 20, - agony = 8 //Rubbers deal way less to us! + agony = 35 //Rubbers deal way less to us! ) stattags = DEFENSE_STATTAG @@ -51,10 +51,10 @@ /datum/stat_modifier/mob/living/carbon/superior_animal/old/xeno armor_adjustment = list( - melee = -3, - bullet = 2, + melee = -15, + bullet = 35, bomb = -10, - agony = 30 //just cant feel it + agony = 60 //just cant feel it ) maxHealth_increment = 60 //life already seen them by diff --git a/code/datums/stat_modifiers/superior_modifier_defines.dm b/code/datums/stat_modifiers/superior_modifier_defines.dm index 276d66a239d..7bf9d3e27c0 100644 --- a/code/datums/stat_modifiers/superior_modifier_defines.dm +++ b/code/datums/stat_modifiers/superior_modifier_defines.dm @@ -24,9 +24,9 @@ var/flash_resistances_mult var/flash_resistances_zeroth = 0.5 - var/armor_divisor_increment - var/armor_divisor_mult - var/armor_divisor_zeroth = 1 + var/armor_penetration_increment + var/armor_penetration_mult + var/armor_penetration_zeroth = 1 var/rapid_fire_shooting_amount_increment var/rapid_fire_shooting_amount_mult @@ -78,10 +78,10 @@ if (flash_resistances_mult) superior_holder.flash_resistances = ZERO_OR_MORE(round(superior_holder.flash_resistances / flash_resistances_mult)) - if (armor_divisor_increment) - superior_holder.armor_divisor = ZERO_OR_MORE(superior_holder.armor_divisor - armor_divisor_increment) - if (armor_divisor_mult) - superior_holder.armor_divisor = ZERO_OR_MORE(superior_holder.armor_divisor / armor_divisor_mult) + if (armor_penetration_increment) + superior_holder.armor_penetration = ZERO_OR_MORE(superior_holder.armor_penetration - armor_penetration_increment) + if (armor_penetration_mult) + superior_holder.armor_penetration = ZERO_OR_MORE(superior_holder.armor_penetration / armor_penetration_mult) if (fire_delay_increment) superior_holder.fire_delay = ZERO_OR_MORE(superior_holder.fire_delay - fire_delay_increment) @@ -153,10 +153,10 @@ if (flash_resistances_increment) superior_target.flash_resistances = ZERO_OR_MORE(superior_target.flash_resistances + flash_resistances_increment) - if (armor_divisor_mult) - superior_target.armor_divisor = (SAFEMULT(superior_target.armor_divisor, armor_divisor_mult, armor_divisor_zeroth)) - if (armor_divisor_increment) - superior_target.armor_divisor = (superior_target.armor_divisor + armor_divisor_increment) + if (armor_penetration_mult) + superior_target.armor_penetration = (SAFEMULT(superior_target.armor_penetration, armor_penetration_mult, armor_penetration_zeroth)) + if (armor_penetration_increment) + superior_target.armor_penetration = (superior_target.armor_penetration + armor_penetration_increment) if (fire_delay_mult) superior_target.fire_delay_initial = ZERO_OR_MORE(round(SAFEMULT(superior_target.fire_delay_initial, fire_delay_mult, fire_delay_zeroth))) diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index 14c5f9b8c25..025bf032364 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -12,7 +12,7 @@ energy_drain = 10 price_tag = 150 force = 30 - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP structure_damage_factor = STRUCTURE_DAMAGE_HEAVY tool_qualities = list(QUALITY_DIGGING = 60) required_type = list(/obj/mecha/working, /obj/mecha/combat, /obj/mecha/medical) diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 42d6cbc6ad1..9f237436f7d 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -19,7 +19,7 @@ energy_drain = 10 tool_qualities = list(QUALITY_CLAMPING = 5, QUALITY_HAMMERING = 30, QUALITY_PRYING = 30, QUALITY_BOLT_TURNING = 20, QUALITY_EXCAVATION = 20, QUALITY_SHOVELING = 30) // This is a literal industrial clamp force = 20 - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW var/obj/mecha/cargo_holder var/can_load_living = FALSE @@ -83,7 +83,7 @@ name = "\improper KILL CLAMP" energy_drain = 0 force = 90 //Lmao, the mech sword deals 60 - armor_divisor = ARMOR_PEN_EXTREME //This thing is hilarious, I'm just adding to it + armor_penetration = ARMOR_PEN_EXTREME //This thing is hilarious, I'm just adding to it can_load_living = TRUE /obj/item/mecha_parts/mecha_equipment/tool/extinguisher diff --git a/code/game/mecha/equipment/weapons/melee.dm b/code/game/mecha/equipment/weapons/melee.dm index 1fff4d38126..fa66837156a 100644 --- a/code/game/mecha/equipment/weapons/melee.dm +++ b/code/game/mecha/equipment/weapons/melee.dm @@ -17,7 +17,7 @@ sharp = TRUE edge = TRUE tool_qualities = list(QUALITY_CUTTING = 35, QUALITY_SAWING = 20) // It's a literal mech sized blade - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP structure_damage_factor = STRUCTURE_DAMAGE_HEAVY hitsound = 'sound/weapons/bladeslice.ogg' var/icon/melee_overlay @@ -41,7 +41,7 @@ tool_qualities = list(QUALITY_CUTTING = 30, QUALITY_WIRE_CUTTING = 20) //Same as E-cutlasses origin_tech = list(TECH_MAGNET = 5, TECH_POWER = 6, TECH_COMBAT = 3) //Same as E-cutlasses matter = list(MATERIAL_STEEL = 15, MATERIAL_SILVER = 1, MATERIAL_GOLD = 1) //WAY LESS then normal E-cutlasses do to the only being 5 more damage - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP structure_damage_factor = STRUCTURE_DAMAGE_HEAVY hitsound = 'sound/weapons/bladeslice.ogg' var/icon/melee_overlay diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 9572aeaa2eb..d1ce9342d2d 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -97,6 +97,8 @@ var/embed_mult = 1 //Multiplier for the chance of embedding in mobs. Set to zero to completely disable embedding var/structure_damage_factor = STRUCTURE_DAMAGE_NORMAL //Multiplier applied to the damage when attacking structures and machinery + var/post_penetration_dammult = 1 //how much damage do we do post-armor-penetation, unknown if it is currently used, TODO : check it ??? + //Does not affect damage dealt to mobs //var/attack_distance = 1 @@ -688,7 +690,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. /obj/item/proc/refresh_upgrades() damtype = initial(damtype) force = initial(force) - armor_divisor = initial(armor_divisor) + armor_penetration = initial(armor_penetration) item_flags = initial(item_flags) name = initial(name) max_upgrades = initial(max_upgrades) @@ -750,7 +752,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. /obj/item/proc/alt_mode_activeate_two() damtype = alt_mode_damagetype force = force *= alt_mode_lossrate - armor_divisor= armor_divisor *= alt_mode_lossrate + armor_penetration= armor_penetration *= alt_mode_lossrate attack_verb = LAZYCOPY(alt_mode_verbs) sharp = alt_mode_sharp flags |= NOBLOODY diff --git a/code/game/objects/items/devices/organ_module/active/armblades.dm b/code/game/objects/items/devices/organ_module/active/armblades.dm index 8f894d766c8..82baabe3692 100644 --- a/code/game/objects/items/devices/organ_module/active/armblades.dm +++ b/code/game/objects/items/devices/organ_module/active/armblades.dm @@ -13,7 +13,7 @@ throwforce = WEAPON_FORCE_WEAK w_class = ITEM_SIZE_SMALL attack_verb = list("stabbed", "chopped", "cut") - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE tool_qualities = list(QUALITY_CUTTING = 20) /obj/item/organ_module/active/simple/proc/get_scanner_name() @@ -97,7 +97,7 @@ worksound = WORKSOUND_HARD_SLASH force = WEAPON_FORCE_ROBUST throwforce = WEAPON_FORCE_WEAK - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE w_class = ITEM_SIZE_SMALL attack_verb = list("stabbed", "chopped", "cut", "sliced", "reaped") tool_qualities = list(QUALITY_CUTTING = 30) @@ -123,7 +123,7 @@ worksound = WORKSOUND_HARD_SLASH force = WEAPON_FORCE_ROBUST throwforce = WEAPON_FORCE_WEAK - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE w_class = ITEM_SIZE_SMALL attack_verb = list("stabbed", "chopped", "cut", "sliced", "reaped") tool_qualities = list(QUALITY_CUTTING = 30) diff --git a/code/game/objects/items/devices/organ_module/active/armshields.dm b/code/game/objects/items/devices/organ_module/active/armshields.dm index e81739bc24b..c3b02afa154 100644 --- a/code/game/objects/items/devices/organ_module/active/armshields.dm +++ b/code/game/objects/items/devices/organ_module/active/armshields.dm @@ -3,7 +3,7 @@ desc = "An embedded shield adept at blocking objects from connecting with the torso of the shield wielder." icon_state = "marine_shield" item_state = "marine_shield" - armor_list = list(melee = 3, bullet = 3, energy = 3, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 15, bullet = 15, energy = 15, bomb = 0, bio = 0, rad = 0) attack_verb = list("bashed") base_block_chance = 50 diff --git a/code/game/objects/items/oddities.dm b/code/game/objects/items/oddities.dm index f8503da5eea..1925658ba7e 100644 --- a/code/game/objects/items/oddities.dm +++ b/code/game/objects/items/oddities.dm @@ -908,7 +908,7 @@ slot_flags = SLOT_BELT sharp = TRUE edge = TRUE - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW oddity_stats = list( STAT_ROB = 7 diff --git a/code/game/objects/items/stacks/throwing.dm b/code/game/objects/items/stacks/throwing.dm index 4feaf15e91c..55af1aaae1e 100644 --- a/code/game/objects/items/stacks/throwing.dm +++ b/code/game/objects/items/stacks/throwing.dm @@ -21,7 +21,7 @@ w_class = ITEM_SIZE_SMALL force = WEAPON_FORCE_NORMAL throwforce = WEAPON_FORCE_WEAK - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW slot_flags = SLOT_BELT /obj/item/stack/thrown/update_icon() @@ -73,7 +73,7 @@ w_class = ITEM_SIZE_SMALL force = WEAPON_FORCE_NORMAL throwforce = WEAPON_FORCE_NORMAL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW slot_flags = SLOT_BELT /obj/item/stack/thrown/throwing_knife/launchAt(atom/target, mob/living/carbon/C) diff --git a/code/game/objects/items/weapons/hydrogen_melee.dm b/code/game/objects/items/weapons/hydrogen_melee.dm index 47e5cf52c5f..98b24b1af44 100644 --- a/code/game/objects/items/weapons/hydrogen_melee.dm +++ b/code/game/objects/items/weapons/hydrogen_melee.dm @@ -48,7 +48,7 @@ active = TRUE force = active_force throwforce = active_throwforce - armor_divisor = active_ap + armor_penetration = active_ap sharp = TRUE edge = TRUE w_class = active_w_class @@ -63,7 +63,7 @@ active = FALSE force = initial(force) throwforce = initial(throwforce) - armor_divisor = initial(armor_divisor) + armor_penetration = initial(armor_penetration) sharp = initial(sharp) edge = initial(edge) w_class = initial(w_class) diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index e420bc04a29..e17c6c71bfe 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -5,6 +5,6 @@ desc = "Tharr she blows!" icon_state = "harpoon" item_state = "harpoon" - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE force_divisor = 0.3 // 18 with hardness 60 (steel) attack_verb = list("jabbed","stabbed","ripped") diff --git a/code/game/objects/items/weapons/material/swords.dm b/code/game/objects/items/weapons/material/swords.dm index 2dea10273c6..1dd895548b9 100644 --- a/code/game/objects/items/weapons/material/swords.dm +++ b/code/game/objects/items/weapons/material/swords.dm @@ -7,7 +7,7 @@ icon_state = "claymore" item_state = "claymore" slot_flags = SLOT_BELT - armor_divisor = ARMOR_PEN_EXTREME + armor_penetration = ARMOR_PEN_EXTREME force_divisor = 0.7 // 42 when wielded with hardnes 60 (steel) thrown_force_divisor = 0.5 // 10 when thrown with weight 20 (steel) sharp = 1 diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 28c094713b0..b5c3c102259 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -5,7 +5,7 @@ var/active_w_class sharp = 0 edge = 0 - armor_divisor = ARMOR_PEN_MASSIVE + armor_penetration = ARMOR_PEN_MASSIVE flags = NOBLOODY structure_damage_factor = STRUCTURE_DAMAGE_HEAVY heat = 3800 @@ -111,8 +111,8 @@ desc = "May the Force be with you." icon_state = "sword0" icon = 'icons/obj/weapons.dmi' - active_force = WEAPON_FORCE_LETHAL // Go forth and slay, padawan - active_throwforce = WEAPON_FORCE_LETHAL + active_force = WEAPON_FORCE_BRUTAL // Go forth and slay, padawan + active_throwforce = WEAPON_FORCE_BRUTAL active_w_class = ITEM_SIZE_BULKY force = WEAPON_FORCE_HARMLESS throwforce = WEAPON_FORCE_HARMLESS @@ -202,7 +202,7 @@ name = "laser dagger" desc = "A much smaller but still useful energy based short blade." clickdelay_offset = FAST_WEAPON_COOLDOWN - armor_divisor = ARMOR_PEN_EXTREME + armor_penetration = ARMOR_PEN_EXTREME active_force = WEAPON_FORCE_DANGEROUS active_throwforce = WEAPON_FORCE_DANGEROUS icon_state = "dagger0" @@ -278,7 +278,7 @@ desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal." icon_state = "blade" icon = 'icons/obj/weapons.dmi' - armor_divisor = 2 + armor_penetration = 30 sharp = 1 edge = 1 force = WEAPON_FORCE_BRUTAL diff --git a/code/game/objects/items/weapons/nt_melee.dm b/code/game/objects/items/weapons/nt_melee.dm index 1233387b2f2..5f9d4572836 100644 --- a/code/game/objects/items/weapons/nt_melee.dm +++ b/code/game/objects/items/weapons/nt_melee.dm @@ -10,7 +10,7 @@ extra_bulk = 3 //a little more size, it's awkward to store out of a sheath. force = WEAPON_FORCE_DANGEROUS throwforce = WEAPON_FORCE_WEAK - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP price_tag = 300 matter = list(MATERIAL_BIOMATTER = 25, MATERIAL_STEEL = 5) @@ -30,7 +30,7 @@ item_state = "nt_shortsword" force = WEAPON_FORCE_DANGEROUS throwforce = WEAPON_FORCE_WEAK - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP price_tag = 300 matter = list(MATERIAL_BIOMATTER = 25, MATERIAL_STEEL = 5) @@ -40,8 +40,8 @@ It bears a tau cross marking it as produced by the Church of Absolute's New Testament weapons division." icon_state = "nt_longsword" item_state = "nt_longsword" - force = WEAPON_FORCE_ROBUST + 4 - armor_divisor = ARMOR_PEN_HALF + force = WEAPON_FORCE_ROBUST + armor_penetration = ARMOR_PEN_HALF w_class = ITEM_SIZE_BULKY price_tag = 500 matter = list(MATERIAL_BIOMATTER = 50, MATERIAL_STEEL = 10, MATERIAL_PLASTEEL = 5) @@ -54,7 +54,7 @@ icon_state = "nt_dagger" item_state = "nt_dagger" force = WEAPON_FORCE_PAINFUL - armor_divisor = ARMOR_PEN_MASSIVE + armor_penetration = ARMOR_PEN_MASSIVE price_tag = 120 matter = list(MATERIAL_BIOMATTER = 5, MATERIAL_STEEL = 1) @@ -68,7 +68,7 @@ item_state = "nt_halberd" wielded_icon = "nt_halberd_wielded" force = WEAPON_FORCE_BRUTAL + 5 - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE max_upgrades = 3 w_class = ITEM_SIZE_HUGE slot_flags = SLOT_BACK @@ -85,8 +85,8 @@ item_state = "nt_scourge" force = WEAPON_FORCE_ROBUST var/force_extended = WEAPON_FORCE_PAINFUL - armor_divisor = 1 - var/armor_divisor_extended = 0.5 + armor_penetration = ARMOR_PEN_MASSIVE + var/armor_penetration_extended = ARMOR_PEN_HALF var/extended = FALSE var/agony = 20 var/agony_extended = 45 //Church harmbaton! This is legit better then a normal baton as it can be upgraded AND has base 15 damage @@ -105,7 +105,7 @@ /obj/item/tool/sword/nt/scourge/proc/extend() extended = TRUE force += (force_extended - initial(force)) - armor_divisor += (armor_divisor_extended - initial(armor_divisor)) + armor_penetration += (armor_penetration_extended - initial(armor_penetration)) agony += (agony_extended - initial(agony)) slot_flags = null w_class = ITEM_SIZE_HUGE @@ -117,7 +117,7 @@ w_class = initial(w_class) agony = initial(agony) slot_flags = initial(slot_flags) - armor_divisor = initial(armor_divisor) + armor_penetration = initial(armor_penetration) refresh_upgrades() //it's also sets all to default update_icon() @@ -147,7 +147,7 @@ w_class = ITEM_SIZE_HUGE slot_flags = SLOT_BACK | SLOT_BELT throwforce = WEAPON_FORCE_LETHAL * 1.5 - armor_divisor = ARMOR_PEN_MASSIVE + armor_penetration = ARMOR_PEN_MASSIVE throw_speed = 3 price_tag = 450 allow_spin = FALSE @@ -189,7 +189,7 @@ icon_state = "nt_flanged" item_state = "nt_flanged" force = WEAPON_FORCE_ROBUST - armor_divisor = ARMOR_PEN_HALF + armor_penetration = ARMOR_PEN_HALF w_class = ITEM_SIZE_BULKY price_tag = 800 matter = list(MATERIAL_BIOMATTER = 30, MATERIAL_STEEL = 5, MATERIAL_PLASTEEL = 5, MATERIAL_SILVER = 3) @@ -241,7 +241,7 @@ wielded_icon = "nt_warhammer_wielded" force = WEAPON_FORCE_BRUTAL - 3 //Naturally weaker do to knockbacking are targets (can stun lock) structure_damage_factor = STRUCTURE_DAMAGE_BREACHING - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE w_class = ITEM_SIZE_BULKY price_tag = 800 matter = list(MATERIAL_BIOMATTER = 30, MATERIAL_STEEL = 5, MATERIAL_PLASTEEL = 8) @@ -268,7 +268,7 @@ switched_on_icon_state = "nt_force_on" switched_on_item_state = "nt_force_on" force = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE w_class = ITEM_SIZE_BULKY no_swing = TRUE f @@ -325,7 +325,7 @@ icon_state = "nt_shield" item_state = "nt_shield" force = WEAPON_FORCE_DANGEROUS - armor_list = list(melee = 5, bullet = 5, energy = 2, bomb = 15, bio = 0, rad = 0) + armor_list = list(melee = 20, bullet = 20, energy = 10, bomb = 15, bio = 0, rad = 0) matter = list(MATERIAL_BIOMATTER = 35, MATERIAL_STEEL = 10, MATERIAL_PLASTEEL = 5, MATERIAL_GOLD = 3) price_tag = 1000 base_block_chance = 60 @@ -457,7 +457,7 @@ icon_state = "crusader" item_state = "crusader" force = WEAPON_FORCE_LETHAL - armor_divisor = ARMOR_PEN_HALF + armor_penetration = ARMOR_PEN_HALF matter = list(MATERIAL_DURASTEEL = 25, MATERIAL_GOLD = 3) price_tag = 10000 @@ -470,7 +470,7 @@ item_state = "nt_shortsword" force = WEAPON_FORCE_DANGEROUS throwforce = WEAPON_FORCE_WEAK - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_DEEP price_tag = 300 matter = list(MATERIAL_BIOMATTER = 25, MATERIAL_STEEL = 5) @@ -494,7 +494,7 @@ w_class = ITEM_SIZE_HUGE slot_flags = SLOT_BACK | SLOT_BELT throwforce = WEAPON_FORCE_LETHAL - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP throw_speed = 3 price_tag = 150 allow_spin = FALSE diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 4deda492e7b..a600b57013b 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -33,7 +33,7 @@ name = "shield" var/base_block_chance = 35 var/slowdown_time = 1 - armor_list = list(melee = 2, bullet = 2, energy = 1, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 10, energy = 5, bomb = 0, bio = 0, rad = 0) var/max_durability = 200 //So we can brake and need healing time to time var/durability = 200 var/can_block_proj = TRUE @@ -206,7 +206,7 @@ throw_range = 6 w_class = ITEM_SIZE_BULKY origin_tech = list(TECH_MATERIAL = 2) - armor_list = list(melee = 5, bullet = 6, energy = 2, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 20, bullet = 25, energy = 10, bomb = 0, bio = 0, rad = 0) matter = list(MATERIAL_GLASS = 5, MATERIAL_STEEL = 5, MATERIAL_PLASTEEL = 12) price_tag = 100 attack_verb = list("shoved", "bashed") @@ -256,7 +256,7 @@ flags = null throw_speed = 2 throw_range = 6 - armor_list = list(melee = 7, bullet = 2, energy = 3, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 30, bullet = 15, energy = 20, bomb = 10, bio = 0, rad = 0) base_block_chance = 60 matter = list(MATERIAL_GLASS = 5, MATERIAL_STEEL = 8, MATERIAL_PLASTEEL = 15) max_durability = 300 //Strong so that we can protect folks from quote a few shots @@ -298,7 +298,7 @@ price_tag = 230 base_block_chance = 60 attack_verb = list("shoved", "bashed") - armor_list = list(melee = 3, bullet = 8, energy = 2, bomb = 20, bio = 0, rad = 0) + armor_list = list(melee = 15, bullet = 35, energy = 10, bomb = 20, bio = 0, rad = 0) var/cooldown = 0 //shield bash cooldown. based on world.time var/picked_by_human = FALSE var/mob/living/carbon/human/picking_human @@ -439,7 +439,7 @@ price_tag = 0 base_block_chance = 70 attack_verb = list("smashed", "bashed") - armor_list = list(melee = 3, bullet = 5, energy = 2, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 15, bullet = 20, energy = 10, bomb = 0, bio = 0, rad = 0) max_durability = 250 //So we can brake and need healing time to time durability = 250 var/cooldown = 0 //shield bash cooldown. based on world.time @@ -539,7 +539,7 @@ flags = null throw_speed = 2 throw_range = 6 - armor_list = list(melee = 7, bullet = 3, energy = 5, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 15, bullet = 2, energy = 10, bomb = 0, bio = 0, rad = 0) matter = list(MATERIAL_BONE = 6) base_block_chance = 50 max_durability = 130 //So we can brake and need healing time to time @@ -557,7 +557,7 @@ base_block_chance = 50 max_durability = 90 //So we can brake and need healing time to time durability = 90 - armor_list = list(melee = 5, bullet = 2, energy = 1, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 30, bullet = 15, energy = 20, bomb = 10, bio = 0, rad = 0) /obj/item/shield/riot/tray/get_protected_area(mob/user) var/list/p_area = list(BP_CHEST, BP_HEAD, BP_L_ARM, BP_R_ARM, BP_GROIN) @@ -580,7 +580,7 @@ price_tag = 2000 max_durability = 500 //Well clearly made to last it should require some repair post crusade durability = 500 - armor_list = list(melee = 7, bullet = 8, energy = 6, bomb = 15, bio = 0, rad = 0) + armor_list = list(melee = 30, bullet = 35, energy = 25, bomb = 15, bio = 0, rad = 0) matter = list(MATERIAL_GLASS = 3, MATERIAL_STEEL = 10, MATERIAL_DURASTEEL = 20) item_icons = list( slot_back_str = 'icons/inventory/back/mob.dmi') diff --git a/code/game/objects/items/weapons/storage.dm b/code/game/objects/items/weapons/storage.dm index a73ddd0a3eb..8ddbc70163d 100644 --- a/code/game/objects/items/weapons/storage.dm +++ b/code/game/objects/items/weapons/storage.dm @@ -98,7 +98,7 @@ I.no_swing = TRUE I.embed_mult = 0 I.force *= damage_mult - I.armor_divisor -= ad_loss + I.armor_penetration -= ad_loss //This is a uniquic attack proc that has smaller checks, this is to I.fancy_ranged_melee_attack(A, user) I.refresh_upgrades() diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index c18bf326cad..370756220ab 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -16,7 +16,7 @@ hitsound = 'sound/effects/woodhit.ogg' slot_flags = SLOT_BELT damtype = BRUTE - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW force = WEAPON_FORCE_ROBUST structure_damage_factor = STRUCTURE_DAMAGE_BLUNT @@ -24,12 +24,12 @@ if(user.a_intent == I_HELP) damtype = HALLOSS force = WEAPON_FORCE_PAINFUL - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE if(user.a_intent == I_DISARM) damtype = HALLOSS force = WEAPON_FORCE_PAINFUL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW if(user.a_intent == I_HURT) damtype = BRUTE @@ -111,12 +111,12 @@ if(user.a_intent == I_HELP) damtype = HALLOSS force = WEAPON_FORCE_PAINFUL - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE if(user.a_intent == I_DISARM) damtype = HALLOSS force = 18 //3 more then help but not as good as a wooden classic - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW if(user.a_intent == I_HURT) damtype = BRUTE diff --git a/code/game/objects/items/weapons/tools/_tools.dm b/code/game/objects/items/weapons/tools/_tools.dm index 0fc4ee08a1e..1082de355ae 100644 --- a/code/game/objects/items/weapons/tools/_tools.dm +++ b/code/game/objects/items/weapons/tools/_tools.dm @@ -224,7 +224,7 @@ item_stats += list(list( "name" = "Damage", "type" = "ProgressBar", "value" = force, "max" = initial(force) * 10 )) if (extra_bulk) item_stats += list(list( "name" = "Extra Volume", "type" = "AnimatedNumber", "value" = extra_bulk )) - item_stats += list(list( "name" = "Armor Divisor", "type" = "AnimatedNumber", "value" = armor_divisor, "max" = 10)) + item_stats += list(list( "name" = "Armor Penetration", "type" = "AnimatedNumber", "value" = armor_penetration, "max" = 10)) stats["Item Stats"] = item_stats @@ -795,7 +795,7 @@ if(switched_on_forcemult) force *= switched_on_forcemult if(switched_on_penmult) - armor_divisor *= switched_on_penmult + armor_penetration *= switched_on_penmult if(glow_color) set_light(l_range = 1.7, l_power = 1.3, l_color = glow_color) if(switched_on_icon_state) @@ -821,7 +821,7 @@ if(switched_on_forcemult) force /= switched_on_forcemult if(switched_on_penmult) - armor_divisor /= switched_on_penmult + armor_penetration /= switched_on_penmult if(glow_color) set_light(l_range = 0, l_power = 0, l_color = glow_color) if(switched_on_icon_state) @@ -946,7 +946,7 @@ use_fuel_cost = initial(use_fuel_cost) use_power_cost = initial(use_power_cost) force = initial(force) - armor_divisor = initial(armor_divisor) + armor_penetration = initial(armor_penetration) damtype = initial(damtype) force_upgrade_mults = initial(force_upgrade_mults) force_upgrade_mods = initial(force_upgrade_mods) @@ -991,7 +991,7 @@ if(switched_on_forcemult) force *= switched_on_forcemult if(switched_on_penmult) - armor_divisor *= switched_on_penmult + armor_penetration *= switched_on_penmult if(wielded) if(force_wielded_multiplier) diff --git a/code/game/objects/items/weapons/tools/hammer.dm b/code/game/objects/items/weapons/tools/hammer.dm index baa6bcb53b0..c84a8c9c7b8 100644 --- a/code/game/objects/items/weapons/tools/hammer.dm +++ b/code/game/objects/items/weapons/tools/hammer.dm @@ -52,7 +52,7 @@ switched_on_qualities = list(QUALITY_HAMMERING = 45) switched_off_qualities = list(QUALITY_HAMMERING = 30) toggleable = TRUE - armor_divisor = ARMOR_PEN_EXTREME // Retains AP when turned off - it's a hammer. + armor_penetration = ARMOR_PEN_EXTREME // Retains AP when turned off - it's a hammer. degradation = 0.7 use_power_cost = 2 suitable_cell = /obj/item/cell/medium @@ -87,7 +87,7 @@ item_state = "onehammer" wielded_icon = "onehammer_on" switched_on_forcemult = 2.6 // 39 total - armor_divisor = ARMOR_PEN_EXTREME // Retains AP when turned off - it's a hammer. + armor_penetration = ARMOR_PEN_EXTREME // Retains AP when turned off - it's a hammer. structure_damage_factor = STRUCTURE_DAMAGE_DESTRUCTIVE matter = list(MATERIAL_STEEL = 4, MATERIAL_PLATINUM = 3, MATERIAL_DIAMOND = 3) price_tag = 860 @@ -109,7 +109,7 @@ wielded_icon = "sledgehammer1" force = WEAPON_FORCE_LETHAL slot_flags = SLOT_BELT|SLOT_BACK - armor_divisor = ARMOR_PEN_EXTREME + armor_penetration = ARMOR_PEN_EXTREME throwforce = WEAPON_FORCE_LETHAL matter = list(MATERIAL_PLASTEEL = 30, MATERIAL_PLASTIC = 5) throw_speed = 1 @@ -128,7 +128,7 @@ icon_state = "homewrecker" item_state = "homewrecker0" wielded_icon = "homewrecker1" - armor_divisor = ARMOR_PEN_EXTREME + armor_penetration = ARMOR_PEN_EXTREME w_class = ITEM_SIZE_BULKY slot_flags = SLOT_BELT|SLOT_BACK force = WEAPON_FORCE_ROBUST @@ -152,7 +152,7 @@ item_state = "iron_hammer" wielded_icon = "iron_hammer_wielded" w_class = ITEM_SIZE_HUGE - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP slot_flags = SLOT_BELT|SLOT_BACK force = WEAPON_FORCE_LETHAL structure_damage_factor = STRUCTURE_DAMAGE_BORING @@ -169,7 +169,7 @@ item_state = "excelsior_hammer" wielded_icon = "excelsior_hammer_wielded" w_class = ITEM_SIZE_HUGE - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP slot_flags = SLOT_BELT force = WEAPON_FORCE_BRUTAL structure_damage_factor = STRUCTURE_DAMAGE_BORING + 2 @@ -186,7 +186,7 @@ matter = list(MATERIAL_STEEL = 10) price_tag = 30 - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP force = WEAPON_FORCE_DANGEROUS tool_qualities = list(QUALITY_HAMMERING = 20) @@ -214,7 +214,7 @@ tool_qualities = list(QUALITY_HAMMERING = 5) matter = list(MATERIAL_STEEL = 3) max_upgrades = 3 - armor_divisor = ARMOR_PEN_GRAZING + armor_penetration = ARMOR_PEN_GRAZING force = WEAPON_FORCE_PAINFUL w_class = ITEM_SIZE_HUGE @@ -235,7 +235,7 @@ item_state = "chargehammer0" w_class = ITEM_SIZE_HUGE switched_on_forcemult = 2.2 - armor_divisor = ARMOR_PEN_EXTREME // Retains AP when turned off - it's a hammer. + armor_penetration = ARMOR_PEN_EXTREME // Retains AP when turned off - it's a hammer. structure_damage_factor = STRUCTURE_DAMAGE_BREACHING switched_on_qualities = list(QUALITY_HAMMERING = 60) switched_off_qualities = list(QUALITY_HAMMERING = 35) diff --git a/code/game/objects/items/weapons/tools/karl.dm b/code/game/objects/items/weapons/tools/karl.dm index 6de31d6eb41..652d5e05bc7 100644 --- a/code/game/objects/items/weapons/tools/karl.dm +++ b/code/game/objects/items/weapons/tools/karl.dm @@ -17,7 +17,7 @@ // Damage related force = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_EXTREME + armor_penetration = ARMOR_PEN_EXTREME throwforce = WEAPON_FORCE_NORMAL sharp = TRUE structure_damage_factor = STRUCTURE_DAMAGE_DESTRUCTIVE // Drills and picks are made for getting through hard materials diff --git a/code/game/objects/items/weapons/tools/knifes_daggers.dm b/code/game/objects/items/weapons/tools/knifes_daggers.dm index 0b09c61e99a..e8edf9270fd 100644 --- a/code/game/objects/items/weapons/tools/knifes_daggers.dm +++ b/code/game/objects/items/weapons/tools/knifes_daggers.dm @@ -13,7 +13,7 @@ w_class = ITEM_SIZE_SMALL force = WEAPON_FORCE_NORMAL throwforce = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW clickdelay_offset = FAST_WEAPON_COOLDOWN //small, but quicker to use. max_upgrades = 2 tool_qualities = list(QUALITY_CUTTING = 20, QUALITY_WIRE_CUTTING = 10, QUALITY_SCREW_DRIVING = 5) @@ -74,7 +74,7 @@ matter = list(MATERIAL_PLASTEEL = 3, MATERIAL_PLASTIC = 2) tool_qualities = list(QUALITY_CUTTING = 20, QUALITY_WIRE_CUTTING = 10, QUALITY_SCREW_DRIVING = 5, QUALITY_SAWING = 1) force = WEAPON_FORCE_DANGEROUS // Serrated teeth - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE throwforce = WEAPON_FORCE_LETHAL price_tag = 35 @@ -86,7 +86,7 @@ matter = list(MATERIAL_PLASTEEL = 5, MATERIAL_PLASTIC = 2) force = WEAPON_FORCE_DANGEROUS backstab_damage = 8 - armor_divisor = ARMOR_PEN_EXTREME //Should be countered be embedding + armor_penetration = ARMOR_PEN_EXTREME //Should be countered be embedding embed_mult = 1.5 //This is designed for embedding /obj/item/tool/knife/ritual @@ -95,7 +95,7 @@ icon = 'icons/obj/wizard.dmi' icon_state = "render" force = WEAPON_FORCE_PAINFUL - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE max_upgrades = 3 backstab_damage = 14 price_tag = 7 @@ -107,7 +107,7 @@ icon_state = "render_awakened" hitsound = 'sound/weapons/renderslash.ogg' force = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP max_upgrades = 2 hitsound = 'sound/weapons/renderslash.ogg' backstab_damage = 8 // Not so much for stabbing as it is for cutting. @@ -122,7 +122,7 @@ force = WEAPON_FORCE_DANGEROUS throwforce = WEAPON_FORCE_DANGEROUS+2 backstab_damage = 8 - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") matter = list(MATERIAL_STEEL = 5, MATERIAL_PLASTIC = 1) tool_qualities = list(QUALITY_CUTTING = 20, QUALITY_WIRE_CUTTING = 15) @@ -158,7 +158,7 @@ matter = list(MATERIAL_PLASTEEL = 3, MATERIAL_PLASTIC = 2) force = WEAPON_FORCE_DANGEROUS // Serrated combat knife tool_qualities = list(QUALITY_CUTTING = 20, QUALITY_WIRE_CUTTING = 10, QUALITY_SCREW_DRIVING = 5, QUALITY_SAWING = 5) - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE throwforce = WEAPON_FORCE_LETHAL max_upgrades = 3 embed_mult = 0.6 @@ -176,7 +176,7 @@ matter = list(MATERIAL_PLASTEEL = 3, MATERIAL_PLASTIC = 2) force = 13 backstab_damage = 15 - armor_divisor = ARMOR_PEN_HALF + armor_penetration = ARMOR_PEN_HALF throwforce = WEAPON_FORCE_ROBUST price_tag = 21 @@ -187,7 +187,7 @@ icon = 'icons/obj/weapons.dmi' icon_state = "skinning" item_state = "skinning" - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP tool_qualities = list(QUALITY_CUTTING = 50) matter = list(MATERIAL_PLASTEEL = 8, MATERIAL_WOOD = 2, MATERIAL_DIAMOND = 3) // 5 plasteel + 2 wood, then +3 plasteel +3 diamond from whetstone. price_tag = 500 // Takes diamond to make and very rare. @@ -213,7 +213,7 @@ price_tag = 50 // Fancy expensive heirloom.... it is not exactly meant to be upgradable nor sold but the value that it holds is somehow more symbolic than material. force = WEAPON_FORCE_WEAK throwforce = WEAPON_FORCE_ROBUST - armor_divisor = ARMOR_PEN_GRAZING + armor_penetration = ARMOR_PEN_GRAZING tool_qualities = list(QUALITY_CUTTING = 35) //Can't be upgraded. Round start knife. Damage is bad not really good to selling either. Only fair give a good status to cutting things. backstab_damage = 9 diff --git a/code/game/objects/items/weapons/tools/mods/armor_mods.dm b/code/game/objects/items/weapons/tools/mods/armor_mods.dm index c89c0265889..6692dde848c 100644 --- a/code/game/objects/items/weapons/tools/mods/armor_mods.dm +++ b/code/game/objects/items/weapons/tools/mods/armor_mods.dm @@ -11,7 +11,7 @@ ..() var/datum/component/item_upgrade/I = AddComponent(/datum/component/item_upgrade) I.tool_upgrades = list( - UPGRADE_MELEE_ARMOR = 5 + UPGRADE_MELEE_ARMOR = 20 ) I.prefix = "reinforced" I.required_qualities = list(QUALITY_ARMOR) @@ -27,7 +27,7 @@ ..() var/datum/component/item_upgrade/I = AddComponent(/datum/component/item_upgrade) I.tool_upgrades = list( - UPGRADE_BALLISTIC_ARMOR = 5 + UPGRADE_BALLISTIC_ARMOR = 20 ) I.prefix = "kevlar-plated" I.required_qualities = list(QUALITY_ARMOR) @@ -43,7 +43,7 @@ ..() var/datum/component/item_upgrade/I = AddComponent(/datum/component/item_upgrade) I.tool_upgrades = list( - UPGRADE_ENERGY_ARMOR = 5 + UPGRADE_ENERGY_ARMOR = 20 ) I.prefix = "ablative-plated" I.required_qualities = list(QUALITY_ARMOR) @@ -59,7 +59,7 @@ ..() var/datum/component/item_upgrade/I = AddComponent(/datum/component/item_upgrade) I.tool_upgrades = list( - UPGRADE_BOMB_ARMOR = 10 + UPGRADE_BOMB_ARMOR = 40 ) I.prefix = "bomb-proofed" I.required_qualities = list(QUALITY_ARMOR) diff --git a/code/game/objects/items/weapons/tools/mods/mod_types.dm b/code/game/objects/items/weapons/tools/mods/mod_types.dm index c10e835bbe4..ae862e18585 100644 --- a/code/game/objects/items/weapons/tools/mods/mod_types.dm +++ b/code/game/objects/items/weapons/tools/mods/mod_types.dm @@ -726,7 +726,7 @@ var/datum/component/item_upgrade/I = AddComponent(/datum/component/item_upgrade) I.tool_upgrades = list( UPGRADE_SANCTIFY = TRUE, - UPGRADE_FORCE_MULT = 1.25, + UPGRADE_FORCE_MULT = 8, UPGRADE_PRECISION = 10, UPGRADE_DEGRADATION_MULT = 0.8, UPGRADE_WORKSPEED = -0.5 @@ -783,7 +783,7 @@ var/datum/component/item_upgrade/I = AddComponent(/datum/component/item_upgrade) I.tool_upgrades = list( UPGRADE_SANCTIFY = TRUE, - UPGRADE_FORCE_MULT = 1.3, + UPGRADE_FORCE_MULT = 8, UPGRADE_PRECISION = 10, UPGRADE_DEGRADATION_MULT = 0.8, UPGRADE_WORKSPEED = -0.5 diff --git a/code/game/objects/items/weapons/tools/pickaxe.dm b/code/game/objects/items/weapons/tools/pickaxe.dm index 4f89b97c386..e57b807a42f 100644 --- a/code/game/objects/items/weapons/tools/pickaxe.dm +++ b/code/game/objects/items/weapons/tools/pickaxe.dm @@ -4,7 +4,7 @@ flags = CONDUCT slot_flags = SLOT_BELT force = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_EXTREME // It's a pickaxe. It's destined to poke holes in things, even armor. + armor_penetration = ARMOR_PEN_EXTREME // It's a pickaxe. It's destined to poke holes in things, even armor. throwforce = WEAPON_FORCE_NORMAL worksound = WORKSOUND_PICKAXE icon_state = "pickaxe" diff --git a/code/game/objects/items/weapons/tools/saws.dm b/code/game/objects/items/weapons/tools/saws.dm index 5de29ca6038..46b44629d66 100644 --- a/code/game/objects/items/weapons/tools/saws.dm +++ b/code/game/objects/items/weapons/tools/saws.dm @@ -51,7 +51,7 @@ hitsound = WORKSOUND_CIRCULAR_SAW worksound = WORKSOUND_CIRCULAR_SAW force = WEAPON_FORCE_ROBUST - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE matter = list(MATERIAL_STEEL = 5, MATERIAL_PLASTIC = 2) tool_qualities = list(QUALITY_SAWING = 45, QUALITY_CUTTING = 30, QUALITY_WIRE_CUTTING = 30) price_tag = 240 @@ -78,7 +78,7 @@ name = "advanced circular saw" desc = "You think you can cut anything with it. More power efficient than a regular circular saw." icon_state = "advanced_saw" - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP matter = list(MATERIAL_STEEL = 6, MATERIAL_PLASTEEL = 1, MATERIAL_PLASTIC = 2) tool_qualities = list(QUALITY_SAWING = 50, QUALITY_CUTTING = 40, QUALITY_WIRE_CUTTING = 40) degradation = 0.7 @@ -92,10 +92,10 @@ icon_state = "chainsaw" hitsound = WORKSOUND_CHAINSAW worksound = WORKSOUND_CHAINSAW - force = WEAPON_FORCE_PAINFUL - switched_on_forcemult = 2 //30 total + force = WEAPON_FORCE_WEAK + switched_on_forcemult = 4 //28 total w_class = ITEM_SIZE_NORMAL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW matter = list(MATERIAL_STEEL = 3, MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 2) tool_qualities = list(QUALITY_SAWING = 5, QUALITY_CUTTING = 5, QUALITY_WIRE_CUTTING = 5) //barely usable when off, but allows mods to be applied switched_off_qualities = list(QUALITY_CUTTING = 5) @@ -127,10 +127,10 @@ wielded_icon = "hypersaw_on" hitsound = WORKSOUND_CHAINSAW worksound = WORKSOUND_CHAINSAW - force = 14 - switched_on_forcemult = 2 //30 total + force = WEAPON_FORCE_WEAK + switched_on_forcemult = 4 //28 total w_class = ITEM_SIZE_NORMAL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW matter = list(MATERIAL_SILVER = 2, MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 3) tool_qualities = list(QUALITY_SAWING = 5, QUALITY_CUTTING = 5, QUALITY_WIRE_CUTTING = 5) //barely usable when off, but allows mods to be applied switched_off_qualities = list(QUALITY_CUTTING = 5) diff --git a/code/game/objects/items/weapons/tools/scalpels.dm b/code/game/objects/items/weapons/tools/scalpels.dm index efeb3cd8561..bd33d7af0f7 100644 --- a/code/game/objects/items/weapons/tools/scalpels.dm +++ b/code/game/objects/items/weapons/tools/scalpels.dm @@ -4,7 +4,7 @@ icon_state = "scalpel_t3" flags = CONDUCT force = WEAPON_FORCE_PAINFUL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW sharp = TRUE edge = TRUE w_class = ITEM_SIZE_TINY @@ -37,7 +37,7 @@ icon_state = "scalpel_t5" damtype = BURN force = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE matter = list(MATERIAL_PLASTEEL = 1, MATERIAL_PLASTIC = 2, MATERIAL_SILVER = 1) tool_qualities = list(QUALITY_CUTTING = 60, QUALITY_WIRE_CUTTING = 20, QUALITY_LASER_CUTTING = 60, QUALITY_CAUTERIZING = 20) degradation = 0.11 diff --git a/code/game/objects/items/weapons/tools/shovel.dm b/code/game/objects/items/weapons/tools/shovel.dm index 5854bdb5a53..328d7a29e4f 100644 --- a/code/game/objects/items/weapons/tools/shovel.dm +++ b/code/game/objects/items/weapons/tools/shovel.dm @@ -44,7 +44,7 @@ force = WEAPON_FORCE_DANGEROUS throwforce = WEAPON_FORCE_DANGEROUS w_class = ITEM_SIZE_SMALL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW matter = list(MATERIAL_STEEL = 6, MATERIAL_PLASTEEL = 6) tool_qualities = list(QUALITY_SHOVELING = 45, QUALITY_DIGGING = 45, QUALITY_PRYING = 30, QUALITY_CUTTING = 10, QUALITY_SAWING = 5) workspeed = 1.2 @@ -57,7 +57,7 @@ force = WEAPON_FORCE_DANGEROUS throwforce = WEAPON_FORCE_DANGEROUS w_class = ITEM_SIZE_SMALL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW matter = list(MATERIAL_STEEL = 6, MATERIAL_PLASTEEL = 6) tool_qualities = list(QUALITY_SHOVELING = 85, QUALITY_DIGGING = 85, QUALITY_PRYING = 70, QUALITY_CUTTING = 30, QUALITY_SAWING = 45) workspeed = 1.5 diff --git a/code/game/objects/items/weapons/tools/simple_weapons.dm b/code/game/objects/items/weapons/tools/simple_weapons.dm index 053d855a411..92d2bfcea5e 100644 --- a/code/game/objects/items/weapons/tools/simple_weapons.dm +++ b/code/game/objects/items/weapons/tools/simple_weapons.dm @@ -46,7 +46,7 @@ w_class = ITEM_SIZE_SMALL sharp = TRUE edge = TRUE - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 1) attack_verb = list("chopped", "torn", "cut") tool_qualities = list(QUALITY_CUTTING = 20, QUALITY_SAWING = 15) @@ -64,7 +64,7 @@ wielded_icon = "fireaxe1" sharp = TRUE edge = TRUE - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP tool_qualities = list(QUALITY_CUTTING = 10, QUALITY_PRYING = 20, QUALITY_SAWING = 15) w_class = ITEM_SIZE_HUGE slot_flags = SLOT_BACK @@ -127,7 +127,7 @@ matter = list(MATERIAL_STEEL = 3, MATERIAL_PLASTEEL = 3) force = WEAPON_FORCE_DANGEROUS throwforce = WEAPON_FORCE_NORMAL - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE w_class = ITEM_SIZE_NORMAL attack_verb = list("chopped", "torn", "cut", "cleaved", "slashed") tool_qualities = list(QUALITY_CUTTING = 10) @@ -240,11 +240,11 @@ matter = list(MATERIAL_PLASTEEL = 15, MATERIAL_PLASTIC = 5) sharp = TRUE edge = TRUE - w_class = ITEM_SIZE_BULKY + w_class = ITEM_SIZE_NORMAL slot_flags = SLOT_BELT worksound = WORKSOUND_HARD_SLASH force = WEAPON_FORCE_ROBUST - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP throwforce = WEAPON_FORCE_NORMAL attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -270,7 +270,7 @@ matter = list(MATERIAL_PLASTEEL = 10, MATERIAL_STEEL = 5, MATERIAL_DIAMOND = 1) //sharpened using diamond dust or whatever slot_flags = SLOT_BELT | SLOT_BACK force = WEAPON_FORCE_BRUTAL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW item_icons = list( slot_back_str = 'icons/inventory/back/mob.dmi') item_state_slots = list( @@ -285,7 +285,7 @@ matter = list(MATERIAL_STEEL = 6, MATERIAL_PLASTIC = 2) //twice the value of a kitche knife slot_flags = SLOT_BELT|SLOT_BACK force = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW price_tag = 40 /obj/item/tool/sword/katana/nano @@ -395,7 +395,7 @@ icon = 'icons/obj/weapons-blades.dmi' icon_state = "saber" item_state = "saber" - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW price_tag = 400 has_alt_mode = TRUE alt_mode_damagetype = HALLOSS @@ -419,7 +419,7 @@ icon = 'icons/obj/weapons-blades.dmi' icon_state = "saber" item_state = "saber" - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW price_tag = 350 /obj/item/tool/sword/saber/militiasergeant @@ -427,7 +427,7 @@ desc = "An Saber made for the Senior Enlisted of Blackshield, Usually used for Ceremonial usage but can also be used in combat, Preferably used by a maniac who likes to charge into battle without helmet or armour." icon_state = "cutlass" item_state = "cutlass" - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW price_tag = 325 /obj/item/tool/sword/saber/deconstuctive_rapier @@ -437,7 +437,7 @@ icon_state = "rapier_cro" //Sprite by Gidgit item_state = "rapiersci" force = WEAPON_FORCE_PAINFUL - 5 //10 base - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE price_tag = 1600 has_alt_mode = TRUE attack_verb = list("stabbed", "slashed", "pierces") @@ -487,7 +487,7 @@ icon_state = "rapier_cbo" item_state = "rapiermed" force = WEAPON_FORCE_PAINFUL - 5 //10 base - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE price_tag = 1600 has_alt_mode = TRUE attack_verb = list("stabbed", "slashed", "pierces") @@ -530,7 +530,7 @@ modifier += min(30,H.stats.getStat(STAT_ROB)) reagent_modifier = CLAMP(round(H.stats.getStat(STAT_BIO)/10), 1, 5) var/mob/living/L = target - if(prob(min(100,((100 / armor_divisor)-L.getarmor(user.targeted_organ, ARMOR_MELEE))+modifier))) + if(prob(min(100,((100+armor_penetration)-L.getarmor(user.targeted_organ, ARMOR_MELEE))+modifier))) var/trans = reagents.trans_to_mob(target, rand(1,3)*reagent_modifier, CHEM_BLOOD) admin_inject_log(user, target, src, reagents.log_list(), trans) to_chat(user, SPAN_NOTICE("You inject [trans] units of the solution. [src] now contains [src.reagents.total_volume] units.")) @@ -542,7 +542,7 @@ item_state = "msword" slot_flags = SLOT_BELT|SLOT_BACK matter = list(MATERIAL_PLASTEEL = 5, MATERIAL_STEEL = 2) // 2 rods, 5 plasteel - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE tool_qualities = list(QUALITY_CUTTING = 15, QUALITY_SAWING = 5) degradation = 1.5 // Crappily made max_upgrades = 5 // Handmade nature @@ -559,7 +559,7 @@ item_state = "renderslayer" force = WEAPON_FORCE_BRUTAL + 2 // 35 damage slot_flags = SLOT_BELT|SLOT_BACK - armor_divisor = ARMOR_PEN_MASSIVE // Sharp edge + armor_penetration = ARMOR_PEN_MASSIVE // Sharp edge effective_faction = list("deathclaw") // Called like this for a reason damage_mult = 2 matter = list(MATERIAL_PLASTEEL = 30, MATERIAL_STEEL = 5) @@ -580,7 +580,7 @@ icon_state = "crayon_blade" matter = list(MATERIAL_PLASTEEL = 15, MATERIAL_STEEL = 2, MATERIAL_DIAMOND = 1) force = WEAPON_FORCE_ROBUST + 4 // 30 damage - armor_divisor = ARMOR_PEN_MASSIVE // More balanced than psi weapons with psi mania perk. + armor_penetration = ARMOR_PEN_MASSIVE // More balanced than psi weapons with psi mania perk. w_class = ITEM_SIZE_BULKY max_upgrades = 2 slot_flags = SLOT_BELT|SLOT_BACK @@ -611,7 +611,7 @@ item_state = "cleaver_back" tool_qualities = list(QUALITY_CUTTING = 30) force = WEAPON_FORCE_BRUTAL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW w_class = ITEM_SIZE_BULKY effective_faction = list("tengo", "tengolo_berserker", "xenomorph") // Which faction the cleaver is effective against. damage_mult = 2.5 // The damage multiplier the cleaver get when attacking that faction. @@ -633,7 +633,7 @@ slot_flags = SLOT_BELT | SLOT_BACK tool_qualities = list(QUALITY_CUTTING = 20, QUALITY_SAWING = 20) //Very sharp blade, serrated back force = WEAPON_FORCE_ROBUST - armor_divisor = ARMOR_PEN_DEEP // same as other, cheaper swords. + armor_penetration = ARMOR_PEN_DEEP // same as other, cheaper swords. effective_faction = list("wurm", "roach", "spider", "vox_tribe", "russian", "tengo", "tengolo_berserker", "xenomorph", "stalker") // This is the janky solution but works. damage_mult = 2 //We are better for hunting, worse for "real fights" w_class = ITEM_SIZE_NORMAL @@ -646,7 +646,7 @@ icon_state = "gauntlet" tool_qualities = list(QUALITY_CUTTING = 20, QUALITY_SAWING = 20) //Cuts people down just like trees. force = WEAPON_FORCE_BRUTAL - armor_divisor = ARMOR_PEN_HALF //same pen as a dagger. This is a fairly rare weapon that require fighting on of the more dangerous mobs. + armor_penetration = ARMOR_PEN_HALF //same pen as a dagger. This is a fairly rare weapon that require fighting on of the more dangerous mobs. w_class = ITEM_SIZE_NORMAL origin_tech = list(TECH_COMBAT = 5) attack_verb = list("clawed", "scratched", "lacerated", "slashed") @@ -661,7 +661,7 @@ toggleable = TRUE worksound = WORKSOUND_HAMMER switched_on_forcemult = 3.3 //33 - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE w_class = ITEM_SIZE_NORMAL origin_tech = list(TECH_COMBAT = 7) attack_verb = list("punched", "decked", "haymakered", "uppercut") @@ -721,7 +721,7 @@ force = WEAPON_FORCE_PAINFUL throwforce = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE throw_speed = 3 max_upgrades = 5 @@ -748,7 +748,7 @@ wielded_icon = "spear_steel_wielded" force = WEAPON_FORCE_DANGEROUS throwforce = WEAPON_FORCE_ROBUST - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP tool_qualities = list(QUALITY_CUTTING = 10, QUALITY_WIRE_CUTTING = 5, QUALITY_SCREW_DRIVING = 5) matter = list(MATERIAL_STEEL = 3) structure_damage_factor = STRUCTURE_DAMAGE_WEAK @@ -761,7 +761,7 @@ wielded_icon = "spear_plasteel_wielded" force = WEAPON_FORCE_ROBUST throwforce = WEAPON_FORCE_BRUTAL - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP tool_qualities = list(QUALITY_CUTTING = 15, QUALITY_WIRE_CUTTING = 10, QUALITY_SCREW_DRIVING = 10) matter = list(MATERIAL_STEEL = 1, MATERIAL_PLASTEEL = 2) structure_damage_factor = STRUCTURE_DAMAGE_NORMAL @@ -774,7 +774,7 @@ wielded_icon = "spear_uranium_wielded" force = WEAPON_FORCE_DANGEROUS throwforce = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP tool_qualities = list(QUALITY_CUTTING = 10, QUALITY_WIRE_CUTTING = 5, QUALITY_SCREW_DRIVING = 5) matter = list(MATERIAL_STEEL = 3, MATERIAL_URANIUM = 1) @@ -791,7 +791,7 @@ wielded_icon = "makeshift_halberd_wielded" force = WEAPON_FORCE_ROBUST throwforce = WEAPON_FORCE_NORMAL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW tool_qualities = list(QUALITY_CUTTING = 10) matter = list(MATERIAL_STEEL = 5) @@ -803,7 +803,7 @@ item_state = "hunter_halberd" wielded_icon = "hunter_halberd_wielded" force = WEAPON_FORCE_BRUTAL - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP effective_faction = list("wurm", "roach", "spider", "vox_tribe", "russian", "tengo", "tengolo_berserker", "xenomorph", "stalker") // This is the janky solution but works. damage_mult = 2 //We are better for hunting, worse for "real fights" price_tag = 500 @@ -823,7 +823,7 @@ slot_flags = SLOT_BELT worksound = WORKSOUND_HARD_SLASH force = WEAPON_FORCE_ROBUST - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP throwforce = WEAPON_FORCE_NORMAL attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -854,7 +854,7 @@ icon_state = "katana_old" item_state = "katana" force = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_EXTREME + armor_penetration = ARMOR_PEN_EXTREME /obj/item/tool/cheap/spear name = "cheap spear" diff --git a/code/game/objects/items/weapons/tools/surgicaldrills.dm b/code/game/objects/items/weapons/tools/surgicaldrills.dm index c8f830ac192..42efd3ed6cd 100644 --- a/code/game/objects/items/weapons/tools/surgicaldrills.dm +++ b/code/game/objects/items/weapons/tools/surgicaldrills.dm @@ -7,7 +7,7 @@ matter = list(MATERIAL_STEEL = 4, MATERIAL_PLASTIC = 2) flags = CONDUCT force = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE w_class = ITEM_SIZE_NORMAL origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) attack_verb = list("drilled") @@ -22,7 +22,7 @@ desc = "A handheld drill with a longer and more durable drill, for precision drilling." icon_state = "longdrill" force = WEAPON_FORCE_ROBUST - armor_divisor = ARMOR_PEN_DEEP //Diamond tip! + armor_penetration = ARMOR_PEN_DEEP //Diamond tip! matter = list(MATERIAL_STEEL = 6, MATERIAL_PLASTIC = 2, MATERIAL_DIAMOND = 1) tool_qualities = list(QUALITY_DRILLING = 60) use_power_cost = 0.60 @@ -31,5 +31,5 @@ /obj/item/tool/surgicaldrill/adv/si icon_state = "drill_SI" matter = list(MATERIAL_STEEL = 8, MATERIAL_PLASTIC = 4, MATERIAL_PLASTEEL = 1) //we use a plasteel tip rather then diamond, thus less AP - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE price_tag = 450 diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index ec041559553..39895f6a6ec 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -10,7 +10,7 @@ var/edge = 0 // whether this object is more likely to dismember 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 - var/armor_divisor = 1 + var/armor_penetration = 1 var/corporation = null var/heat = 0 //soj edit @@ -256,8 +256,8 @@ throwforce = initial(throwforce) * newmult //Same for AP -/obj/proc/add_projectile_penetration(newmult) - armor_divisor = initial(armor_divisor) + newmult +/obj/proc/multiply_projectile_penetration(newmult) + armor_penetration = initial(armor_penetration) * newmult /obj/proc/multiply_pierce_penetration(newmult) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 0c005d4357f..c375b20d358 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -210,7 +210,7 @@ return PROJECTILE_CONTINUE src.ricochet_id = 0 var/proj_damage = Proj.get_structure_damage() -// var/ricochet_mult = Proj.get_//ricochet_modifier() + var/ricochet_mult = Proj.get_ricochet_modifier() if(istype(Proj,/obj/item/projectile/beam)) if (!(Proj.testing)) burn(500)//TODO : fucking write these two procs not only for plasma (see plasma in materials.dm:283) ~ @@ -222,7 +222,7 @@ var/ricochetchance = 1 if(proj_damage <= 60) ricochetchance = 2 + round((60 - proj_damage) / 5) -// ricochetchance = min(ricochetchance * ricochetchance * ricochet_mult, 100) + ricochetchance = min(ricochetchance * ricochetchance * ricochet_mult, 100) // here it is multiplied by 1/2 temporally, changes will be required when new wall system gets implemented ricochetchance = round(ricochetchance * projectile_reflection(Proj, TRUE) / 2) ricochetchance = min(max(ricochetchance, 0), 100) diff --git a/code/modules/clothing/accessories/holster.dm b/code/modules/clothing/accessories/holster.dm index 900b8c930cb..9a77e1505df 100644 --- a/code/modules/clothing/accessories/holster.dm +++ b/code/modules/clothing/accessories/holster.dm @@ -463,7 +463,7 @@ Sword holsters I.no_swing = TRUE I.embed_mult = 0 I.force *= damage_mult - I.armor_divisor -= ad_loss + I.armor_penetration -= ad_loss //This is a uniquic attack proc that has smaller checks, this is to I.fancy_ranged_melee_attack(A, user) I.refresh_upgrades() diff --git a/code/modules/clothing/cloak/hooded.dm b/code/modules/clothing/cloak/hooded.dm index d65ddff2296..bae55b79abb 100644 --- a/code/modules/clothing/cloak/hooded.dm +++ b/code/modules/clothing/cloak/hooded.dm @@ -128,7 +128,7 @@ desc = "A heavy premier's jacket designed for cold environments. Hidden armor plating is sewn into it." icon_state = "coatcaptain" item_state_slots = list(slot_r_hand_str = "coatcaptain", slot_l_hand_str = "coatcaptain") - armor_list = list(melee = 5, bullet = 3, energy = 2, bomb = 15, bio = 0, rad = 0) + armor_list = list(melee = 20, bullet = 15, energy = 10, bomb = 15, bio = 0, rad = 0) //hoodtype = /obj/item/clothing/head/hood/winter/captain /obj/item/clothing/suit/hooded/wintercoat/security @@ -136,7 +136,7 @@ desc = "A heavy security jacket designed for cold environments. Armor plating has been sewn into it." icon_state = "coatsecurity" item_state_slots = list(slot_r_hand_str = "coatsecurity", slot_l_hand_str = "coatsecurity") - armor_list = list(melee = 6, bullet = 5, energy = 3, bomb = 20, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 20, energy = 15, bomb = 20, bio = 0, rad = 0) //hoodtype = /obj/item/clothing/head/hood/winter/security /obj/item/clothing/suit/hooded/wintercoat/medical @@ -189,7 +189,7 @@ desc = "A heavy mining jacket designed for cold environments. The leather is quite tough and provides a small amount of protection." icon_state = "coatminer" item_state_slots = list(slot_r_hand_str = "coatminer", slot_l_hand_str = "coatminer") - armor_list = list(melee = 2, bullet = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //hoodtype = /obj/item/clothing/head/hood/winter/cargo/miner /obj/item/clothing/suit/hooded/costume/techpriest @@ -204,7 +204,7 @@ desc = "For larping as the other techno cult. This time with armor, the metal platings provided decent protection, roughly on par with a hand made vest." icon_state = "explorator" item_state = "explorator" - armor_list = list(melee = 7, bullet = 5, energy = 3, bomb = 10, bio = 15, rad = 5) + armor_list = list(melee = 30, bullet = 20, energy = 15, bomb = 10, bio = 15, rad = 5) hoodtype = /obj/item/clothing/head/hood/techpriest /obj/item/clothing/suit/hooded/absolutecloak diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 2cddc12eadc..8886ee81baf 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -144,9 +144,9 @@ "type" = "ProgressBar", "name" = capitalize(i) + " armor", "value" = armorlist[i], - "max" = 25, + "max" = 100, "color" = armorlist[i] > 25 ? (armorlist[i] > 50 ? "good" : "average") : "bad", - "unit" = "" + "unit" = "%" )) stats["Armor Stats"] = armor_stats @@ -358,7 +358,7 @@ BLIND // can't see anything var/wired = 0 var/clipped = 0 body_parts_covered = ARMS - armor_list = list(melee = 2, bullet = 0, energy = 3, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 0, energy = 15, bomb = 0, bio = 0, rad = 0) slot_flags = SLOT_GLOVES attack_verb = list("challenged") @@ -509,7 +509,7 @@ BLIND // can't see anything var/noslip = 0 var/module_inside = 0 - armor_list = list(melee = 2, bullet = 0, energy = 2, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 0, energy = 10, bomb = 0, bio = 0, rad = 0) permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN force = 2 diff --git a/code/modules/clothing/gloves/boxing.dm b/code/modules/clothing/gloves/boxing.dm index 13d677d550a..0dec0972891 100644 --- a/code/modules/clothing/gloves/boxing.dm +++ b/code/modules/clothing/gloves/boxing.dm @@ -3,7 +3,7 @@ desc = "Because you really needed another excuse to punch your crewmates." icon_state = "boxing" item_state = "boxing" - armor_list = list(melee = 6, bullet = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/gloves/boxing/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/tool/wirecutters) || istype(W, /obj/item/tool/scalpel)) diff --git a/code/modules/clothing/gloves/knuckledusters.dm b/code/modules/clothing/gloves/knuckledusters.dm index b0816267678..28b9ea6a835 100644 --- a/code/modules/clothing/gloves/knuckledusters.dm +++ b/code/modules/clothing/gloves/knuckledusters.dm @@ -25,8 +25,8 @@ item_state = "dusters_plasteel" punch_increase = 10 armor = list( - melee = 3, //Just a litttttle bit of armor so your not defenceless - bullet = 1, + melee = 15, //Just a litttttle bit of armor so your not defenceless + bullet = 5, energy = 0, bomb = 0, bio = 0, @@ -43,9 +43,9 @@ item_state = "scav_gloves" punch_increase = 8 //Armored so this should be weaker then the plasteel dust armor_list = list( - melee = 8, // 10 more than combat, Plasteel reinforced - bullet = 3, - energy = 5, // No ablative materials means energy protection stays the same + melee = 35, // 10 more than combat, Plasteel reinforced + bullet = 15, + energy = 20, // No ablative materials means energy protection stays the same bomb = 10, // Plasteel protects a little bit against bombs bio = 0, rad = 0 @@ -100,8 +100,8 @@ item_state = "knuckles" punch_increase = 10 armor = list( - melee = 2, //Just a litttttle bit of armor so your not defenceless - bullet = 1, + melee = 10, //Just a litttttle bit of armor so your not defenceless + bullet = 5, energy = 0, bomb = 0, bio = 0, diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index fb3d98e0692..6d1d955707f 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -3,7 +3,7 @@ name = "premier's gloves" //Sprites from Eris icon_state = "captain" item_state = "captain" - armor_list = list(melee = 6, bullet = 2, energy = 6, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 10, energy = 25, bomb = 0, bio = 0, rad = 0) price_tag = 250 /obj/item/clothing/gloves/runed @@ -25,7 +25,7 @@ name = "insulated gloves" icon_state = "yellow" item_state = "yellow" - armor_list = list(melee = 0, bullet = 0, energy = 3, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 0, bullet = 0, energy = 15, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0 permeability_coefficient = 0.05 price_tag = 200 @@ -35,7 +35,7 @@ desc = "A pare of insulated gloves woven into a thicker fire restant pare." icon_state = "guild_yellow" item_state = "guild_yellow" - armor_list = list(melee = 5, bullet = 3, energy = 3, bomb = 10, bio = 100, rad = 100) + armor_list = list(melee = 20, bullet = 15, energy = 15, bomb = 10, bio = 100, rad = 100) siemens_coefficient = 0 permeability_coefficient = 0.05 price_tag = 500 @@ -62,7 +62,7 @@ name = "thick gloves" icon_state = "black" item_state = "black" - armor_list = list(melee = 5, bullet = 0, energy = 5, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 20, bullet = 0, energy = 20, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.5 permeability_coefficient = 0.05 price_tag = 100 @@ -83,7 +83,7 @@ desc = "A pair of modified work gloves with some steel." icon_state = "hm_combat" item_state = "hm_combat" - armor_list = list(melee = 6, bullet = 1, energy = 5, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 5, energy = 20, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.6 price_tag = 150 @@ -92,7 +92,7 @@ name = "combat gloves" icon_state = "ihscombat" item_state = "ihscombat" - armor_list = list(melee = 6, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 20, energy = 20, bomb = 0, bio = 0, rad = 0) price_tag = 150 /obj/item/clothing/gloves/thick/swat/insulated @@ -101,7 +101,7 @@ These have added insulated gloves sacerficing some of its protection to be better suited to deal with eletrical work under less then ideal cases." icon_state = "combat_yellow" item_state = "combat_yellow" - armor_list = list(melee = 3, bullet = 3, energy = 2, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 15, bullet = 15, energy = 10, bomb = 0, bio = 0, rad = 0) price_tag = 350 siemens_coefficient = 0 @@ -109,7 +109,7 @@ /obj/item/clothing/gloves/thick/ablasive name = "ablative gloves" desc = "A thick pair of gloves that excel at protecting the wearer against energy projectiles." - armor_list = list(melee = 2, bullet = 2, energy = 17, bomb = 30, bio = 10, rad = 0) + armor_list = list(melee = 10, bullet = 10, energy = 70, bomb = 30, bio = 10, rad = 0) icon_state = "ihscombat" item_state = "ihscombat" price_tag = 150 @@ -118,7 +118,7 @@ /obj/item/clothing/gloves/thick/ablasive/militia name = "militia ablative gloves" desc = "A thick pair of gloves that excel at protecting the wearer against energy projectiles." - armor_list = list(melee = 2, bullet = 2, energy = 3, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 10, energy = 60, bomb = 10, bio = 0, rad = 0) icon_state = "bs_ablative" item_state = "ihscombat" @@ -131,14 +131,14 @@ desc = "A pair of heavy duty gauntlets designed with high-grade bulletproof materials." icon_state = "bs_bulletproof" item_state = "ihscombat" - armor_list = list(melee = 2, bullet = 15, energy = 2, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 60, energy = 10, bomb = 10, bio = 0, rad = 0) /obj/item/clothing/gloves/thick/swat/blackshield_corpsman name = "corpsman combat gloves" desc = "A pair of fire and impact-resistant corpsman combat gloves." // No lying, it's not anti-germs. icon_state = "corpsman_base_gloves" item_state = "corpsman_base_gloves" - armor_list = list(melee = 6, bullet = 5, energy = 5, bomb = 0, bio = 15, rad = 0) + armor_list = list(melee = 25, bullet = 20, energy = 20, bomb = 0, bio = 15, rad = 0) siemens_coefficient = 0 price_tag = 250 @@ -174,7 +174,7 @@ name = "blackshield combat gloves" icon_state = "bs_base_gloves" item_state = "bs_base_gloves" - armor_list = list(melee = 6, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 20, energy = 20, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0 price_tag = 250 @@ -211,7 +211,7 @@ name = "combat gloves" icon_state = "black" item_state = "black" - armor_list = list(melee = 6, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 20, energy = 20, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0 price_tag = 250 @@ -221,7 +221,7 @@ name = "hunter gloves" icon_state = "huntergloves" item_state = "huntergloves" - armor_list = list(melee = 7, bullet = 2, energy = 5, bomb = 10, bio = 5, rad = 0) + armor_list = list(melee = 30, bullet = 10, energy = 20, bomb = 10, bio = 5, rad = 0) siemens_coefficient = 0.5 price_tag = 200 @@ -230,7 +230,7 @@ desc = "Gloves with additional reinforcment on the knuckles." icon_state = "knuckles" item_state = "knuckles" - armor_list = list(melee = 5, bullet = 1, energy = 0, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 20, bullet = 5, energy = 0, bomb = 0, bio = 0, rad = 0) price_tag = 50 /obj/item/clothing/gloves/evening @@ -328,7 +328,7 @@ desc = "Heavy gloves to keep your hands intact for future experiments." icon_state = "science" item_state = "science" - armor_list = list(melee = 6, bullet = 1, energy = 5, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 5, energy = 20, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.5 permeability_coefficient = 0.05 price_tag = 50 diff --git a/code/modules/clothing/gloves/stungloves.dm b/code/modules/clothing/gloves/stungloves.dm index a169fe3c2c3..b7c9c24acf1 100755 --- a/code/modules/clothing/gloves/stungloves.dm +++ b/code/modules/clothing/gloves/stungloves.dm @@ -3,7 +3,7 @@ desc = "Seinemetall Defense GmbH solution for police operations. Punch criminals right in the face instead of prodding them with some feeble rod." icon_state = "powerglove" item_state = "powerglove" - armor_list = list(melee = 6, bullet = 2, energy = 5, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 10, energy = 20, bomb = 0, bio = 0, rad = 0) action_button_name = "Toggle Power Glove" price_tag = 250 var/stunforce = 0 @@ -123,7 +123,7 @@ icon_state = "sipowerglove" item_state = "sipowerglove" permeability_coefficient = 0.01 - armor_list = list(melee = 3, bullet = 0, energy = 2, bomb = 0, bio = 100, rad = 0) //same armor values as jackboots + bio protection. + armor_list = list(melee = 15, bullet = 0, energy = 10, bomb = 0, bio = 100, rad = 0) //same armor values as jackboots + bio protection. action_button_name = "Toggle placeholder Glove" price_tag = 500 //rarer and harder to find. agonyforce = 40 //same as the stun baton, these are slightly better than the Marshal version thusly. diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 026f5462666..6140b1bab8e 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -7,9 +7,9 @@ brightness_on = 4 //luminosity when on light_overlay = "hardhat_light" armor_list = list( - melee = 2, - bullet = 2, - energy = 2, + melee = 10, + bullet = 10, + energy = 10, bomb = 10, bio = 10, rad = 25 @@ -56,9 +56,9 @@ brightness_on = 6 //luminosity when on light_overlay = "hardhat_light" armor_list = list( - melee = 7, - bullet = 5, - energy = 5, + melee = 30, + bullet = 20, + energy = 20, bomb = 35, bio = 10, rad = 25 @@ -78,9 +78,9 @@ brightness_on = 8 //luminosity when on light_overlay = "hardhat_light" armor_list = list( - melee = 10, - bullet = 15, - energy = 12, + melee = 40, + bullet = 60, + energy = 50, bomb = 75, bio = 80, rad = 100 diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index c527a07c9c9..7d5d12ca022 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -14,9 +14,9 @@ item_flags = THICKMATERIAL body_parts_covered = HEAD | EARS armor_list = list( - melee = 8, - bullet = 6, - energy = 5, + melee = 35, + bullet = 25, + energy = 20, bomb = 25, bio = 0, rad = 0 @@ -41,8 +41,8 @@ siemens_coefficient = 1 price_tag = 160 armor_list = list( - melee = 3, - bullet = 3, + melee = 15, + bullet = 15, energy = 0, bomb = 0, bio = 0, @@ -83,9 +83,9 @@ flags_inv = HIDEEARS|BLOCKHAIR|HIDEEYES|BLOCKFACEHAIR|HIDEFACE //Speaking with one on should be muffled price_tag = 150 armor_list = list( - melee = 5, - bullet = 2, - energy = 1, + melee = 20, + bullet = 10, + energy = 5, bomb = 15, // Shock-absorbent bio = 0, rad = 0 @@ -126,9 +126,9 @@ desc = "It looks like it was made from a bucket and some steel. Uncomfortable and heavy but better than nothing." icon_state = "hm_helmet" armor_list = list( - melee = 6, - bullet = 2, - energy = 5, + melee = 25, + bullet = 10, + energy = 20, bomb = 10, bio = 0, rad = 0 @@ -140,7 +140,7 @@ name = "bucket-helm" desc = "A bucket with two holes for eyes and some smaller ones for ventilation, with steel added to gain some protection. One may say, 'Situla Vult!'." icon_state = "hm_greathelm" - armor_list = list(melee = 6, bullet = 3,energy = 6, bomb = 12, bio = 1, rad = 0) // Only difference with handmade combat helmet is 2 sheets of metal, shouldn't be that far superior. + armor_list = list(melee = 27, bullet = 15,energy = 25, bomb = 12, bio = 1, rad = 0) // Only difference with handmade combat helmet is 2 sheets of metal, shouldn't be that far superior. flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS|EYES siemens_coefficient = 0.6 @@ -152,9 +152,9 @@ desc = "Ave, Imperator, morituri te salutant." icon_state = "gladiator" armor_list = list( - melee = 5, - bullet = 2, - energy = 2, + melee = 20, + bullet = 10, + energy = 10, bomb = 10, bio = 0, rad = 0 @@ -167,7 +167,7 @@ name = "steelpot helmet" desc = "A titanium helmet of serbian origin. Still widely used despite being discontinued." icon_state = "steelpot" - armor_list = list(melee = 8, bullet = 7, energy = 0, bomb = 30, bio = 0, rad = 0) // slightly buffed IHS helmet minus energy resistance + armor_list = list(melee = 35, bullet = 30, energy = 0, bomb = 30, bio = 0, rad = 0) // slightly buffed IHS helmet minus energy resistance flags_inv = BLOCKHEADHAIR|HIDEEARS body_parts_covered = HEAD|EARS siemens_coefficient = 1 @@ -180,9 +180,9 @@ flags_inv = HIDEEARS|HIDEEYES|BLOCKHAIR siemens_coefficient = 0.9 //More conductive than most helmets armor_list = list( - melee = 1, - bullet = 5, - energy = 2, + melee = 5, + bullet = 20, + energy = 10, bomb = 0, bio = 0, rad = 0 @@ -192,9 +192,9 @@ name = "\improper Type-34 Semi-Enclosed Headwear" desc = "Armored helmet used by certain law enforcement agencies. It's hard to believe there's someone somewhere behind that." armor_list = list( - melee = 7, - bullet = 7, - energy = 7, + melee = 30, + bullet = 30, + energy = 30, bomb = 20, bio = 0, rad = 0 @@ -204,14 +204,14 @@ name = "mercenary helmet" desc = "What happens when someone combines ablative, melee, and bullet plating in the form of a fetching tan and visor. Not as singularly powerful as each individually but the best all round protection one can get." icon_state = "merchelm" - armor_list = list(melee = 13, bullet = 13, energy = 13, bomb = 45, bio = 0, rad = 0) // best what you can get + armor_list = list(melee = 55, bullet = 55, energy = 55, bomb = 45, bio = 0, rad = 0) // best what you can get obscuration = LIGHT_OBSCURATION /obj/item/clothing/head/helmet/generic_full name = "full helmet" desc = "A generic non-branded full cover helmet with decent all round protection." icon_state = "helmet_full" - armor_list = list(melee = 7, bullet = 7, energy = 7, bomb = 25, bio = 10, rad = 10) + armor_list = list(melee = 30, bullet = 30, energy = 30, bomb = 25, bio = 10, rad = 10) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS obscuration = LIGHT_OBSCURATION @@ -220,7 +220,7 @@ name = "\improper SWAT helmet" desc = "An oldie but a goodie. This helmet was often the last thing seen by those so foolish as to draw the attention of the Solarian Frontier enforcement corps. Judging by the dents, it didn't save its last wearer, but perhaps you'll fare better?" icon_state = "swathelm" - armor_list = list(melee = 13, bullet = 13, energy = 13, bomb = 55, bio = 0, rad = 0) + armor_list = list(melee = 55, bullet = 55, energy = 55, bomb = 55, bio = 0, rad = 0) flags_inv = HIDEEARS|HIDEEYES cold_protection = HEAD min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE @@ -231,7 +231,7 @@ name = "ballistic helmet" desc = "Standard military gear. Protects the head from impacts and shrapnel." icon_state = "helmet_mil" - armor_list = list(melee = 7, bullet = 10, energy = 5, bomb = 30, bio = 0, rad = 0) + armor_list = list(melee = 30, bullet = 40, energy = 20, bomb = 30, bio = 0, rad = 0) /obj/item/clothing/head/helmet/ballistic/verb/toggle_style() set name = "Adjust Style" @@ -379,7 +379,7 @@ name = "corpsman full helm" desc = "Standard military gear. A full-faced variant of the common ballistic helmet. This one bears a few\ key upgrades, including sterile materials and contaminant resistant sealing." - armor_list = list(melee = 7, bullet = 10, energy = 5, bomb = 30, bio = 75, rad = 0) + armor_list = list(melee = 30, bullet = 40, energy = 20, bomb = 30, bio = 75, rad = 0) action_button_name = "Toggle Headlamp" brightness_on = 4 light_overlay = "corpsmanfullhelm_light" @@ -396,7 +396,7 @@ action_button_name = "Toggle Headlamp" brightness_on = 5 light_overlay = "bsfullhelm_light" - armor_list = list(melee = 9, bullet = 12, energy = 10, bomb = 50, bio = 0, rad = 0) + armor_list = list(melee = 35, bullet = 50, energy = 40, bomb = 50, bio = 0, rad = 0) /obj/item/clothing/head/helmet/ballistic/militia/full/co/toggle_style() set name = "Adjust Style" @@ -435,7 +435,7 @@ desc = "Standard operator gear. Protects the head from impacts. Painted in marshal colors." icon_state = "helmet" icon_state = "helmet" - armor_list = list(melee =7, bullet = 7, energy = 6, bomb = 25, bio = 70, rad = 0) + armor_list = list(melee = 30, bullet = 30,energy = 25, bomb = 25, bio = 70, rad = 0) body_parts_covered = HEAD|EARS /obj/item/clothing/head/helmet/marshal/verb/toggle_style() @@ -468,7 +468,7 @@ desc = "A full helmet with a built in glow visor. While a weak light its better than nothing and the full cover design makes it ideal for general protection." icon_state = "ironhammer_full" item_state = "ironhammer_full" - armor_list = list(melee =7, bullet = 7,energy = 6, bomb = 25, bio = 70, rad = 0) + armor_list = list(melee = 30, bullet = 30,energy = 25, bomb = 25, bio = 70, rad = 0) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS action_button_name = "Toggle Headlamp" @@ -523,7 +523,7 @@ action_button_name = "Toggle Headlamp" //Excellent job forgetting the verb, Friend. brightness_on = 6 light_overlay = "m_fullhelm" - armor_list = list(melee = 12, bullet = 12, energy = 7, bomb = 10, bio = 100, rad = 0) + armor_list = list(melee = 50, bullet = 50, energy = 30, bomb = 10, bio = 100, rad = 0) /obj/item/clothing/head/helmet/warrant_officer/update_icon() if(on) @@ -543,7 +543,7 @@ action_button_name = "Toggle Helmet Light" light_overlay = "helmet_light" brightness_on = 4 - armor_list = list(melee =7, bullet = 5, energy = 5, bomb = 25, bio = 100, rad = 80) + armor_list = list(melee = 30, bullet = 20, energy = 20, bomb = 25, bio = 100, rad = 80) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS obscuration = LIGHT_OBSCURATION @@ -580,7 +580,7 @@ action_button_name = "Toggle Helmet Light" light_overlay = "helmet_light" brightness_on = 4 - armor_list = list(melee =7, bullet = 5, energy = 5, bomb = 25, bio = 100, rad = 80) + armor_list = list(melee = 30, bullet = 20, energy = 20, bomb = 25, bio = 100, rad = 80) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS obscuration = LIGHT_OBSCURATION @@ -620,7 +620,7 @@ action_button_name = "Toggle Helmet Light" light_overlay = "helmet_light" brightness_on = 4 - armor_list = list(melee =7, bullet = 5, energy = 5, bomb = 25, bio = 100, rad = 80) + armor_list = list(melee = 30, bullet = 20, energy = 20, bomb = 25, bio = 100, rad = 80) body_parts_covered = HEAD|EARS obscuration = LIGHT_OBSCURATION @@ -777,7 +777,7 @@ action_button_name = "Toggle Helmet Light" light_overlay = "helmet_light" brightness_on = 4 - armor_list = list(melee =7, bullet = 7, energy = 7, bomb = 50, bio = 100, rad = 100) + armor_list = list(melee = 30, bullet = 30, energy = 30, bomb = 50, bio = 100, rad = 100) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS matter = list(MATERIAL_PLASTEEL = 5, MATERIAL_PLASTIC = 2, MATERIAL_GLASS = 3, MATERIAL_GOLD = 2) @@ -812,7 +812,7 @@ action_button_name = "Toggle Helmet Light" light_overlay = "helmet_light" brightness_on = 4 - armor_list = list(melee =7, bullet = 7, energy = 7, bomb = 50, bio = 100, rad = 100) + armor_list = list(melee = 30, bullet = 30, energy = 30, bomb = 50, bio = 100, rad = 100) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS matter = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 4, MATERIAL_GLASS = 5, MATERIAL_GOLD = 5) @@ -855,7 +855,7 @@ action_button_name = "Toggle Helmet Light" light_overlay = "helmet_light" brightness_on = 4 - armor_list = list(melee =7, bullet = 5, energy = 5, bomb = 25, bio = 100, rad = 80) + armor_list = list(melee = 30, bullet = 20, energy = 20, bomb = 25, bio = 100, rad = 80) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS obscuration = LIGHT_OBSCURATION @@ -893,9 +893,9 @@ item_state = "huntmaster_helmet" icon_state = "huntmaster_helmet" armor_list = list( - melee = 15, - bullet = 5, - energy = 3, + melee = 60, + bullet = 20, + energy = 15, bomb = 15, bio = 15, rad = 0 @@ -934,9 +934,9 @@ item_state = "hunter_helmet" icon_state = "hunter_helmet" armor_list = list( - melee = 15, - bullet = 2, - energy = 1, + melee = 60, + bullet = 10, + energy = 5, bomb = 0, bio = 10, rad = 0 @@ -979,7 +979,7 @@ name = "'Mark V' environmental protection helmet" desc = "You feel like this helmet is rare, for some reason." icon_state = "technohelmet" - armor_list = list(melee = 10, bullet = 10, energy = 10, bomb = 60, bio = 100, rad = 100) + armor_list = list(melee = 40, bullet = 40, energy = 40, bomb = 60, bio = 100, rad = 100) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS flash_protection = FLASH_PROTECTION_MODERATE @@ -1018,7 +1018,7 @@ name = "'Mark II' environmental protection helmet" desc = "You feel like this helmet is cheap, for some reason." icon_state = "armor_engineering" - armor_list = list(melee = 3, bullet = 3, energy = 6, bomb = 35, bio = 50, rad = 50) + armor_list = list(melee = 15, bullet = 15, energy = 25, bomb = 35, bio = 50, rad = 50) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS matter = list(MATERIAL_STEEL = 20) @@ -1036,9 +1036,9 @@ matter = list(MATERIAL_PLASTEEL = 12, MATERIAL_PLASTIC = 10, MATERIAL_STEEL = 30, MATERIAL_SILVER = 12) //worth stealing price_tag = 1200 armor_list = list( - melee = 10, - bullet = 7, - energy = 7, + melee = 40, + bullet = 30, + energy = 30, bomb = 65, bio = 100, rad = 0 @@ -1080,7 +1080,7 @@ name = "scavenger helmet" desc = "A sturdy, handcrafted helmet. It's well balanced and sits low on your head, with padding on the inside." icon_state = "scav_helmet" - armor_list = list(melee =8, bullet = 5, energy = 6, bomb = 25, bio = 0, rad = 0) + armor_list = list(melee = 35, bullet = 20, energy = 25, bomb = 25, bio = 0, rad = 0) price_tag = 200 max_upgrades = 1 // Good baseline already @@ -1111,7 +1111,7 @@ name = "scavenger plate helmet" desc = "A heavy helmet equipped with layers of metal and a reinforced glass visor, ideal for protection and headbutts. It even protects your eyes from welding flares!" icon_state = "scav_heavy" - armor_list = list(melee = 10, bullet = 5, energy = 3, bomb = 35, bio = 0, rad = 0) + armor_list = list(melee = 40, bullet = 20, energy = 15, bomb = 35, bio = 0, rad = 0) item_flags = THICKMATERIAL | COVER_PREVENT_MANIPULATION flash_protection = FLASH_PROTECTION_MODERATE price_tag = 150 @@ -1151,8 +1151,8 @@ icon_state = "helmet_kriosanpenace" flags_inv = BLOCKHAIR armor_list = list( - melee = 3, - bullet = 3, + melee = 15, + bullet = 15, energy = 0, bomb = 10, bio = 0, @@ -1165,9 +1165,9 @@ icon_state = "helmet_frog" flags_inv = BLOCKHAIR armor_list = list( - melee = 5, - bullet = 5, - energy = 1, + melee = 20, + bullet = 20, + energy = 5, bomb = 10, bio = 0, rad = 0 @@ -1208,9 +1208,9 @@ body_parts_covered = HEAD | EARS | FACE flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR armor_list = list( - melee = 6, - bullet = 15, - energy = 6, + melee = 25, + bullet = 60, + energy = 25, bomb = 10, bio = 0, rad = 0 @@ -1224,7 +1224,7 @@ This one bears the IFF stripes of the Blackshield." flags_inv = HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS - armor_list = list(melee = 6, bullet = 15, energy = 6, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 60, energy = 25, bomb = 10, bio = 0, rad = 0) action_button_name = "Toggle Headlamp" brightness_on = 4 light_overlay = "bs_bulletproof" @@ -1234,7 +1234,7 @@ name = "ablative helmet" desc = "A helmet that excels in protecting the wearer against energy projectiles." icon_state = "ablative" - armor_list = list(melee =7, bullet = 7, energy = 18, bomb = 50, bio = 10, rad = 0) + armor_list = list(melee = 30, bullet = 30, energy = 75, bomb = 50, bio = 10, rad = 0) flags_inv = HIDEEARS|HIDEEYES body_parts_covered = HEAD|EYES|EARS cold_protection = HEAD @@ -1254,7 +1254,7 @@ local forces so often outfitted with it." flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS - armor_list = list(melee = 6, bullet = 6, energy = 15, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 25, energy = 60, bomb = 10, bio = 0, rad = 0) action_button_name = "Toggle Headlamp" brightness_on = 4 light_overlay = "bs_ablative" @@ -1263,7 +1263,7 @@ name = "outdated ablative helmet" desc = "A \"Iron Lock Security\" helmet that excels in protecting the wearer against energy projectiles this even after all these years still is the base of ablative helmet design. Produced by Greyson Positronic" icon_state = "ablative" - armor_list = list(melee = 5, bullet = 5, energy = 17, bomb = 50, bio = 10, rad = 0) + armor_list = list(melee = 20, bullet = 20, energy = 70, bomb = 50, bio = 10, rad = 0) flags_inv = HIDEEARS|HIDEEYES cold_protection = HEAD matter = list(MATERIAL_STEEL = 5, MATERIAL_PLASTIC = 10, MATERIAL_PLATINUM = 2) //cheaper @@ -1292,9 +1292,9 @@ flags_inv = HIDEEARS|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS armor_list = list( - melee = 15, - bullet = 6, - energy = 6, + melee = 60, + bullet = 25, + energy = 25, bomb = 25, bio = 0, rad = 0 @@ -1545,8 +1545,8 @@ name = "riot helmet" desc = "It's a outdated helmet specifically designed to protect against close range attacks." icon_state = "riot" - armor_up = list(melee =8, bullet = 6, energy = 6, bomb = 20, bio = 0, rad = 0) - armor_list = list(melee = 10, bullet = 10, energy = 7, bomb = 35, bio = 0, rad = 0) + armor_up = list(melee = 35, bullet = 25, energy = 25, bomb = 20, bio = 0, rad = 0) + armor_list = list(melee = 40, bullet = 40, energy = 30, bomb = 35, bio = 0, rad = 0) item_flags = THICKMATERIAL | COVER_PREVENT_MANIPULATION price_tag = 150 @@ -1612,7 +1612,7 @@ name = "ballistic mask" desc = "An armored mask, Protects the head and face from impacts and shrapnel." icon_state = "bmask" - armor_up = list(melee = 4, bullet = 4, energy = 4, bomb = 10, bio = 0, rad = 0) + armor_up = list(melee = 40, bullet = 40, energy = 40, bomb = 10, bio = 0, rad = 0) armor_list = list(melee = 9, bullet = 9, energy = 9, bomb = 20, bio = 0, rad = 0) matter = list(MATERIAL_STEEL = 30, MATERIAL_PLASTIC = 10, MATERIAL_PLASTEEL = 10) flags_inv = null @@ -1659,8 +1659,8 @@ name = "altyn helmet" desc = "A titanium helmet of serbian origin. Still widely used despite being discontinued." icon_state = "altyn" - armor_up = list(melee = 2, bullet = 3, energy = 0, bomb = 15, bio = 0, rad = 0) - armor_list = list(melee = 5, bullet = 4, energy = 2, bomb = 35, bio = 0, rad = 0) + armor_up = list(melee = 20, bullet = 15, energy = 0, bomb = 15, bio = 0, rad = 0) + armor_list = list(melee = 40, bullet = 45, energy = 10, bomb = 35, bio = 0, rad = 0) siemens_coefficient = 1 up = TRUE @@ -1704,7 +1704,7 @@ name = "maska helmet" desc = "\"I do not know who I am, I don\'t know why I\'m here. All I know is that I must kill.\"" icon_state = "maska" - armor_list = list(melee = 13, bullet = 13, energy = 0, bomb = 45, bio = 0, rad = 0) // best what you can get, unless you face lasers + armor_list = list(melee = 55, bullet = 55, energy = 0, bomb = 45, bio = 0, rad = 0) // best what you can get, unless you face lasers /obj/item/clothing/head/helmet/faceshield/altyn/mardinat_yunan desc = "\"Human rights are not only violated by terrorism, repression or assassination, but also by unfair economic structures that create huge inequalities.\" An Altyn-pattern helmet commonly found throughout the frontier. This example has been painted up in the national colours of Mardinat-Yunan and comes with a copy of the tenets of a galaxy's economic manifesto held against the helmet by a strap." @@ -1794,8 +1794,8 @@ MATERIAL_PLASTIC = 5, MATERIAL_PLATINUM = 2 ) - armor_up = list(melee = 1, bullet = 5, energy = 2, bomb = 10, bio = 100, rad = 50) - armor_list = list(melee = 6, bullet = 6, energy = 6, bomb = 20, bio = 100, rad = 50) + armor_up = list(melee = 5, bullet = 20, energy = 10, bomb = 10, bio = 100, rad = 50) + armor_list = list(melee = 25, bullet = 25, energy = 25, bomb = 20, bio = 100, rad = 50) up = TRUE var/speaker_enabled = TRUE var/scan_scheduled = FALSE diff --git a/code/modules/clothing/head/hood.dm b/code/modules/clothing/head/hood.dm index 8b94fa4ec9f..7b578ba7645 100644 --- a/code/modules/clothing/head/hood.dm +++ b/code/modules/clothing/head/hood.dm @@ -20,7 +20,7 @@ /obj/item/clothing/head/hood/winter/security name = "security winter hood" - armor_list = list(melee = 6, bullet = 20, energy = 3, bomb = 20, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 20, energy = 15, bomb = 20, bio = 0, rad = 0) /obj/item/clothing/head/hood/winter/medical name = "medical winter hood" @@ -45,7 +45,7 @@ /obj/item/clothing/head/hood/winter/cargo/miner name = "mining winter hood" - armor_list = list(melee = 10, bullet = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 20, bullet = 20, energy = 20, bomb = 35, bio = 75, rad = 35) */ // Explorer gear /obj/item/clothing/head/hood/explorer diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 2e0856bbb5d..cbd1854940f 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -524,13 +524,13 @@ obj/item/clothing/head/beret/syndicate/verb/toggle_style() /obj/item/clothing/head/rank/solfedmed name = "Solarian beret" desc = "an old grey-green beret bearing the markings of the Solar Federations fleet, you can almost make out a caduceus against a near worn-off badge." - armor_list = list(melee = 2, bullet = 0, energy = 2, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 0, energy = 10, bomb = 0, bio = 0, rad = 0) icon_state = "beret-grey" item_state = "beret-grey" /obj/item/clothing/head/rank/solfedrecon name = "green utility cover" desc = "A green camo cover, fit for a soldier. This one appears particularly worn down and bears an illegible patch of what seemed to be the Solar Federations armed forces." - armor_list = list(melee = 2, bullet = 0, energy = 2, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 0, energy = 10, bomb = 0, bio = 0, rad = 0) icon_state = "greenutility" item_state = "greenutility" diff --git a/code/modules/clothing/head/mindreader.dm b/code/modules/clothing/head/mindreader.dm index b75edaec675..6cf161e9fe3 100644 --- a/code/modules/clothing/head/mindreader.dm +++ b/code/modules/clothing/head/mindreader.dm @@ -9,9 +9,9 @@ var/last_use = 0 w_class = ITEM_SIZE_NORMAL armor = list( - melee = 2, - bullet = 2, - energy = 2, + melee = 10, + bullet = 10, + energy = 10, bomb = 0, bio = 0, rad = 0 diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index edacf335e32..a6a30b5dab3 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -320,9 +320,9 @@ obj/item/clothing/head/ribbon/red icon_state = "field_numerical_hat" desc = "A tall hat for followers of the faith. Can be turned inside out to turn from red to purple or vice versa" armor_list = list( //same as the garb - melee = 2, + melee = 10, bullet = 0, - energy = 2, + energy = 10, bomb = 5, bio = 100, rad = 0 @@ -384,7 +384,7 @@ obj/item/clothing/head/ribbon/red name = "jingasa" desc = "A sturdy metal cap designed to protect the head from weather and falling objects." icon_state = "jingasa" - armor_list = list(melee = 1, bullet = 1, energy = 1, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 5, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/head/headband name = "headband" @@ -456,7 +456,7 @@ obj/item/clothing/head/sunhat/verb/toggle_style() name = "kin voidhelm" desc = "An old, battered voidhelmet. Its original source unknown and its seals long since worn out - still, it makes for a decent helmet, if nothing else is available." icon_state = "kin_voidhelm" - armor_list = list(melee = 3, bullet = 3, energy = 3, bomb = 0, bio = 0, rad = 0) //if the absolute greatcoat can have these stats, so can this. + armor_list = list(melee = 15, bullet = 15, energy = 15, bomb = 0, bio = 0, rad = 0) //if the absolute greatcoat can have these stats, so can this. item_flags = THICKMATERIAL flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|BLOCKHAIR body_parts_covered = HEAD|FACE|EARS @@ -495,9 +495,9 @@ obj/item/clothing/head/sunhat/verb/toggle_style() siemens_coefficient = 1 price_tag = 600 armor_list = list( - melee = 5, - bullet = 3, - energy = 2, + melee = 20, + bullet = 15, + energy = 10, bomb = 0, bio = 20, rad = 25 @@ -509,7 +509,7 @@ obj/item/clothing/head/sunhat/verb/toggle_style() icon_state = "os_cap" item_state = "os_cap" armor_list = list( - melee = 1, + melee = 5, bullet = 0, energy = 0, bomb = 0, @@ -525,7 +525,7 @@ obj/item/clothing/head/sunhat/verb/toggle_style() armor_list = list( melee = 0, bullet = 0, - energy = 1, + energy = 5, bomb = 0, bio = 5, rad = 5 @@ -560,7 +560,7 @@ obj/item/clothing/head/sunhat/verb/toggle_style() icon_state = "ragged_hood" item_state = "ragged_hood" flags_inv = HIDEEARS|BLOCKHAIR - armor_list = list(melee = 1, bullet = 0, energy = 2, bomb = 0, bio = 5, rad = 5) + armor_list = list(melee = 5, bullet = 0, energy = 10, bomb = 0, bio = 5, rad = 5) // hoods for the tacticool ponchos. diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 16e2399cf13..fc4cb2abeed 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -12,9 +12,9 @@ matter = list(MATERIAL_STEEL = 4, MATERIAL_GLASS = 2) var/up = 0 armor_list = list( - melee = 5, - bullet = 1, - energy = 2, + melee = 20, + bullet = 5, + energy = 10, bomb = 5, bio = 0, rad = 0 @@ -178,4 +178,4 @@ is none other than the Matriarch of the Hunting Lodge." icon_state = "matriarch_cape" item_state = "matriarch_cape" - armor_list = list(melee = 11, bullet = 6, energy = 6, bomb = 25, bio = 20, rad = 15) + armor_list = list(melee = 45, bullet = 25, energy = 25, bomb = 25, bio = 20, rad = 15) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 7f5c407204d..bbb7ef8c6cc 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -338,7 +338,7 @@ desc = "A newly advanced gas synthesizer is used commonly by opifex to filter oxygen from their lungs, being able to feed and eat any moment they wish with their beak exposed. They'll slowly die without wearing this, as will any other race that uses this device." icon_state = "gas_mask_free_beak" item_state = "gas_mask_free_beak" - armor_list = list(melee = 0, bullet = 0, energy = 1, bomb = 5, bio = 0, rad = 15) + armor_list = list(melee = 2, bullet = 2, energy = 7, bomb = 5, bio = 0, rad = 15) var/list/filtered_gases = list("plasma", "sleeping_agent", "oxygen") var/gas_filter_strength = 1 //For gas mask filters item_flags = AIRTIGHT diff --git a/code/modules/clothing/shoes/jobs.dm b/code/modules/clothing/shoes/jobs.dm index 89c5a1eb84d..649a081beb7 100644 --- a/code/modules/clothing/shoes/jobs.dm +++ b/code/modules/clothing/shoes/jobs.dm @@ -14,7 +14,7 @@ icon_state = "jackboots" item_state = "jackboots" force = WEAPON_FORCE_HARMLESS - armor_list = list(melee = 3, bullet = 0, energy = 2, bomb = 0, bio = 25, rad = 0) + armor_list = list(melee = 15, bullet = 0, energy = 10, bomb = 0, bio = 25, rad = 0) siemens_coefficient = 0.6 can_hold_knife = TRUE @@ -27,7 +27,7 @@ name = "duty jackboots" desc = "A pair of standard-issue police steel-toed boots. For when you really need to remind the criminals what the law is." icon_state = "duty" - armor_list = list(melee = 3, bullet = 2, energy = 2, bomb = 0, bio = 25, rad = 0) + armor_list = list(melee = 15, bullet = 10, energy = 10, bomb = 0, bio = 25, rad = 0) siemens_coefficient = 0.8 can_hold_knife = TRUE @@ -69,7 +69,7 @@ desc = "A pair of metallic boots designed for industrial environments." icon_state = "reinforced" item_state = "reinforced" - armor_list = list(melee = 3, bullet = 0, energy = 2, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 15, bullet = 0, energy = 10, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.5 /obj/item/clothing/shoes/reinforced/medical @@ -83,7 +83,7 @@ desc = "A pair of steel-toed utility workboots." icon_state = "workboots" item_state = "workboots" - armor_list = list(melee = 2, bullet = 0, energy = 2, bomb = 0, bio = 0, rad = 0) //Worse than jackboots and reinforced boots due to granting shock immunity to legs + armor_list = list(melee = 10, bullet = 0, energy = 10, bomb = 0, bio = 0, rad = 0) //Worse than jackboots and reinforced boots due to granting shock immunity to legs siemens_coefficient = 0 can_hold_knife = 1 @@ -133,7 +133,7 @@ icon_state = "hunterboots" item_state = "hunterboots" force = WEAPON_FORCE_HARMLESS - armor_list = list(melee = 5, bullet = 1, energy = 2, bomb = 5, bio = 25, rad = 5) + armor_list = list(melee = 20, bullet = 5, energy = 10, bomb = 5, bio = 25, rad = 5) siemens_coefficient = 0.6 price_tag = 200 can_hold_knife = 1 diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index edb5ce2da3b..90414b37102 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -10,9 +10,9 @@ var/icon_base = "magboots" action_button_name = "Toggle Magboots" armor_list = list( - melee = 5, - bullet = 2, - energy = 5, + melee = 20, + bullet = 10, + energy = 20, bomb = 25, bio = 100, rad = 90 diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index bb9f425170f..e1e4fc56c76 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -18,7 +18,7 @@ /obj/item/clothing/shoes/ablasive name = "ablative jackboots" desc = "A thick pair of boots that excels in protecting the wearer against energy projectiles." - armor_list = list(melee = 2, bullet = 2, energy = 3, bomb = 30, bio = 10, rad = 0) + armor_list = list(melee = 10, bullet = 10, energy = 70, bomb = 30, bio = 10, rad = 0) icon_state = "swat" force = WEAPON_FORCE_WEAK siemens_coefficient = 0.6 @@ -34,7 +34,7 @@ desc = "When you want to turn up the heat." icon_state = "swat" force = WEAPON_FORCE_WEAK - armor_list = list(melee = 5, bullet = 2, energy = 6, bomb = 10, bio = 10, rad = 0) + armor_list = list(melee = 20, bullet = 10, energy = 25, bomb = 10, bio = 10, rad = 0) item_flags = NOSLIP siemens_coefficient = 0.6 @@ -43,7 +43,7 @@ desc = "When you REALLY want to turn up the heat." icon_state = "swat" force = WEAPON_FORCE_WEAK - armor_list = list(melee = 5, bullet = 2, energy = 6, bomb = 10, bio = 10, rad = 0) + armor_list = list(melee = 20, bullet = 10, energy = 25, bomb = 10, bio = 10, rad = 0) item_flags = NOSLIP siemens_coefficient = 0.4 can_hold_knife = 1 @@ -159,7 +159,7 @@ name = "lizardskin shoes" desc = "A green pair of shoes made of lizardskin, likely a young render..." icon_state = "lizardskin_shoes" - armor_list = list(melee = 5, bullet = 3, energy = 2, bomb = 10, bio = 10, rad = 0) + armor_list = list(melee = 20, bullet = 15, energy = 10, bomb = 10, bio = 10, rad = 0) /obj/item/clothing/shoes/church_blacksilk_boots name = "blacksilk boots" @@ -383,7 +383,7 @@ desc = "A pair of reinforced winter boots with a security design." icon_state = "winterboots_sec" can_hold_knife = TRUE - armor_list = list(melee = 2, bullet = 0, energy = 3, bomb = 20, bio = 0, rad = 0) //Laser? + armor_list = list(melee = 10, bullet = 0, energy = 15, bomb = 20, bio = 0, rad = 0) //Laser? /obj/item/clothing/shoes/winter/science name = "science winter boots" @@ -438,4 +438,5 @@ desc = "A pair of rugged boots designed for hazardous environment exploration." icon_state = "explorer" can_hold_knife = TRUE - armor_list = list(melee = 2, bullet = 0, energy = 3, bomb = 20, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 0, energy = 15, bomb = 20, bio = 0, rad = 0) + \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/bomb.dm b/code/modules/clothing/spacesuits/bomb.dm index a383a9ef9a2..f27dec0cbcc 100644 --- a/code/modules/clothing/spacesuits/bomb.dm +++ b/code/modules/clothing/spacesuits/bomb.dm @@ -6,9 +6,9 @@ desc = "A protective helmet designed for safety when handling explosives, biological problems, and radiation." icon_state = "bombsuit" armor_list = list( - melee = 5, - bullet = 5, - energy = 7, + melee = 20, + bullet = 20, + energy = 30, bomb = 100, bio = 100, rad = 90 @@ -28,9 +28,9 @@ permeability_coefficient = 0.01 slowdown = 1 armor_list = list( - melee = 5, - bullet = 5, - energy = 7, + melee = 20, + bullet = 20, + energy = 30, bomb = 100, bio = 100, rad = 90 @@ -49,9 +49,9 @@ equip_delay = 16 SECONDS slowdown = 1.25 //so with full suit is 3.5 or 4.5 armor_list = list( - melee = 15, - bullet = 15, - energy = 15, + melee = 60, + bullet = 60, + energy = 60, bomb = 100, bio = 100, rad = 90 @@ -64,9 +64,9 @@ slowdown = 2.25 equip_delay = 16 SECONDS armor_list = list( - melee = 15, - bullet = 15, - energy = 15, + melee = 60, + bullet = 60, + energy = 60, bomb = 100, bio = 100, rad = 90 diff --git a/code/modules/clothing/spacesuits/captain.dm b/code/modules/clothing/spacesuits/captain.dm index 1476871d350..a69e82f9352 100644 --- a/code/modules/clothing/spacesuits/captain.dm +++ b/code/modules/clothing/spacesuits/captain.dm @@ -5,9 +5,9 @@ item_state = "capspace" desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of figureheads." armor_list = list( - melee = 10, - bullet = 7, - energy = 10, + melee = 40, + bullet = 30, + energy = 40, bomb = 50, bio = 100, rad = 50 @@ -20,9 +20,9 @@ icon_state = "caparmor" item_state = "capspacesuit" armor_list = list( - melee = 10, - bullet = 7, - energy = 12, + melee = 40, + bullet = 30, + energy = 50, bomb = 50, bio = 100, rad = 50 @@ -37,9 +37,9 @@ item_state = "skrell_helmet_white" desc = "A well padded helmet, fitted with a heads up display on its visor, keeping its occupant well aware of the surroundings with a small built in light." armor_list = list( - melee = 10, - bullet = 7, - energy = 10, + melee = 40, + bullet = 30, + energy = 40, bomb = 50, bio = 100, rad = 50 @@ -53,9 +53,9 @@ icon_state = "skrell_suit_white" item_state = "skrell_suit_white" armor_list = list( - melee = 10, - bullet = 7, - energy = 12, + melee = 40, + bullet = 30, + energy = 50, bomb = 50, bio = 100, rad = 50 diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 433118b37ca..1b0b44ebd26 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -7,7 +7,7 @@ slot_l_hand_str = "syndicate-helm-black-red", slot_r_hand_str = "syndicate-helm-black-red", ) - armor_list = list(melee = 16, bullet = 13, energy = 11, bomb = 30, bio = 100, rad = 60) + armor_list = list(melee = 65, bullet = 55, energy = 45, bomb = 30, bio = 100, rad = 60) item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL flags_inv = BLOCKHAIR siemens_coefficient = 0.6 diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 59868fd4b5f..59bf5740810 100755 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -25,9 +25,9 @@ // These values are passed on to all component pieces. armor = list( - melee = 7, - bullet = 5, - energy = 5, + melee = 30, + bullet = 20, + energy = 20, bomb = 25, bio = 100, rad = 50 @@ -779,11 +779,11 @@ for(var/damage_type in P.damage_types) if(damage_type in list(BRUTE, BURN)) // Ablative armor affects both brute and burn damage var/damage = P.damage_types[damage_type] - P.damage_types[damage_type] -= ablative_stack / armor_divisor + P.damage_types[damage_type] -= ablative_stack * (100 - armor_penetration) / 100 ablative_stack = max(ablative_stack - damage, 0) else if(damage_type == HALLOSS) - P.damage_types[damage_type] -= ablative_stack / armor_divisor + P.damage_types[damage_type] -= ablative_stack * (100 - armor_penetration) / 100 if(P.damage_types[damage_type] <= 0) P.damage_types -= damage_type diff --git a/code/modules/clothing/spacesuits/rig/suits/ameridian_knight.dm b/code/modules/clothing/spacesuits/rig/suits/ameridian_knight.dm index a3714653785..e257d03f754 100644 --- a/code/modules/clothing/spacesuits/rig/suits/ameridian_knight.dm +++ b/code/modules/clothing/spacesuits/rig/suits/ameridian_knight.dm @@ -4,7 +4,7 @@ suit_type = "ameridian knight" desc = "An armored, knight-like suit designed by Soteria's best roboticists and powered by an ameridian core." icon_state = "ameridian_knight_rig" - armor_list = list(melee = 20, bullet = 20, energy = 20, bomb = 70, bio = 100, rad = 100) + armor_list = list(melee = 80, bullet = 80, energy = 80, bomb = 70, bio = 100, rad = 100) slowdown = 0 // Lot of stuff used in its construction that justify not having any slowdown while active offline_slowdown = 5 // Very heavy and the suit isn't helping while offline offline_vision_restriction = 2 diff --git a/code/modules/clothing/spacesuits/rig/suits/combat.dm b/code/modules/clothing/spacesuits/rig/suits/combat.dm index 4ab7fa0400b..e07b8053631 100644 --- a/code/modules/clothing/spacesuits/rig/suits/combat.dm +++ b/code/modules/clothing/spacesuits/rig/suits/combat.dm @@ -7,9 +7,9 @@ icon_state = "security_rig" suit_type = "combat hardsuit" armor_list = list( - melee = 12, - bullet = 11, - energy = 7, + melee = 50, + bullet = 45, + energy = 30, bomb = 50, bio = 100, rad = 100 @@ -66,9 +66,9 @@ icon_state = "blackshield_rig" suit_type = "blackshield hardsuit" armor_list = list( - melee = 15, - bullet = 13, - energy = 10, + melee = 60, + bullet = 55, + energy = 40, bomb = 50, bio = 100, rad = 100 @@ -110,9 +110,9 @@ icon_state = "hussar_rig" //Rig modula by Gundam Tanaka#9565 suit_type = "hussar hardsuit" armor_list = list( - melee = 12, - bullet = 11, - energy = 7, + melee = 50, + bullet = 45, + energy = 30, bomb = 50, bio = 100, rad = 100 @@ -147,9 +147,9 @@ desc = "One's spirit is generally the greatest shield." light_overlay = "helmet_light_dual" armor_list = list( - melee = 12, - bullet = 10, - energy = 7, + melee = 50, + bullet = 40, + energy = 30, bomb = 50, bio = 100, rad = 100 @@ -163,9 +163,9 @@ suit_type = "tactical armored hardsuit" req_access = list(access_hos) armor_list = list( - melee = 12, - bullet = 16, - energy = 16, + melee = 50, + bullet = 65, + energy = 65, bomb = 50, bio = 100, rad = 100 @@ -211,9 +211,9 @@ icon_state = "ert_rig" suit_type = "blackshield tactical hardsuit" armor_list = list( - melee = 15, - bullet = 13, - energy = 10, + melee = 60, + bullet = 55, + energy = 40, bomb = 50, bio = 100, rad = 100 @@ -249,9 +249,9 @@ suit_type = "marshal tactical" req_access = list(access_hos) armor_list = list( - melee = 12, - bullet = 11, - energy = 7, + melee = 50, + bullet = 45, + energy = 30, bomb = 50, bio = 100, rad = 100 @@ -288,9 +288,9 @@ icon_state = "military_rig" suit_type = "Pathfinder hardsuit advanced armored" armor_list = list( - melee = 15, - bullet = 17, - energy = 17, + melee = 60, + bullet = 70, + energy = 70, bomb = 60, bio = 100, rad = 100 diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index 1e221572f37..d8d980ebd43 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -5,9 +5,9 @@ icon_state = "ninja_rig" suit_type = "light suit" armor_list = list( - melee = 6, - bullet = 5, - energy = 5, + melee = 25, + bullet = 20, + energy = 20, bomb = 25, bio = 100, rad = 100 @@ -45,8 +45,8 @@ icon_state = "hacker_rig" suit_type = "SI 'Spacer" armor_list = list( - melee = 2, - bullet = 1, + melee = 10, + bullet = 5, energy = 0, bomb = 25, bio = 100, @@ -79,9 +79,9 @@ desc = "A Soteria Institute modification of the traditional light rig built for equal parts utility and defense." suit_type = "SI 'retainer" armor_list = list( - melee = 7, - bullet = 6, - energy = 7, + melee = 30, + bullet = 25, + energy = 30, bomb = 30, bio = 100, rad = 80 @@ -113,9 +113,9 @@ desc = "An advanced powered armour suit with many cyberwarfare enhancements. Comes with built-in insulated gloves for safely tampering with electronics." icon_state = "hacker_rig" armor_list = list( - melee = 6, - bullet = 5, - energy = 5, + melee = 25, + bullet = 20, + energy = 20, bomb = 25, bio = 100, rad = 80 @@ -169,8 +169,8 @@ desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for assassins." icon_state = "ninja_rig" armor_list = list( - melee = 7, - bullet = 7, + melee = 30, + bullet = 30, energy = 20, bomb = 25, bio = 100, diff --git a/code/modules/clothing/spacesuits/rig/suits/merc.dm b/code/modules/clothing/spacesuits/rig/suits/merc.dm index c12aed1a14c..cec786cccfa 100644 --- a/code/modules/clothing/spacesuits/rig/suits/merc.dm +++ b/code/modules/clothing/spacesuits/rig/suits/merc.dm @@ -9,9 +9,9 @@ icon_state = "merc_rig" suit_type = "crimson hardsuit" armor_list = list( - melee = 10, - bullet = 10, - energy = 7, + melee = 40, + bullet = 40, + energy = 30, bomb = 75, bio = 100, rad = 50 diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index 7c82c913373..78a145352dd 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -35,9 +35,9 @@ desc = "A heavy, powerful rig used by construction crews and mining corporations. The soft plating can protect the wearer from unexpected hazards, but is not reliable in prolonged combat." icon_state = "engineering_rig" armor_list = list( - melee = 10, - bullet = 7, - energy = 2, + melee = 40, + bullet = 30, + energy = 10, bomb = 25, bio = 100, rad = 100 @@ -84,9 +84,9 @@ desc = "A light RIG for performing minute repairs and maintenance on low-pressure environments." icon_state = "eva_rig" armor_list = list( - melee = 5, - bullet = 2, - energy = 2, + melee = 20, + bullet = 10, + energy = 10, bomb = 10, bio = 100, rad = 100 @@ -129,9 +129,9 @@ Advanced Voidsuit: Guild Master desc = "An advanced hardsuit that protects against hazardous, low pressure environments. Shines with a high polish." icon_state = "ce_rig" armor_list = list( - melee = 10, - bullet = 10, - energy = 10, + melee = 40, + bullet = 40, + energy = 40, bomb = 50, bio = 100, rad = 100 @@ -192,9 +192,9 @@ Technomancer RIG desc = "An advanced RIG suit that protects against hazardous, low pressure and high temperature environments." icon_state = "techno_rig" armor_list = list( - melee = 7, - bullet = 7, - energy = 7, + melee = 30, + bullet = 30, + energy = 30, bomb = 50, bio = 100, rad = 100 @@ -245,9 +245,9 @@ Technomancer RIG desc = "An Anomalous Material Interaction hardsuit that protects against the strangest energies the universe can throw at it." icon_state = "science_rig" armor_list = list( - melee = 7, - bullet = 5, - energy = 10, + melee = 30, + bullet = 20, + energy = 40, bomb = 90, bio = 100, rad = 100 @@ -299,9 +299,9 @@ Technomancer RIG This advanced verson is made with speed in mind as well better armor plates at the cost of power." icon_state = "science_ami_rig" armor_list = list( - melee = 8, - bullet = 7, - energy = 10, + melee = 35, + bullet = 30, + energy = 40, bomb = 90, bio = 100, rad = 100 @@ -351,9 +351,9 @@ Technomancer RIG desc = "A relatively lightweight and ceramic RIG suit designed for medical rescue in hazardous locations." icon_state = "medical_rig" armor_list = list( - melee = 5, - bullet = 2, - energy = 2, + melee = 20, + bullet = 10, + energy = 10, bomb = 50, bio = 100, rad = 100 @@ -391,10 +391,10 @@ Technomancer RIG It is best suited for surviving and combating wild life, but has reasonably decent kevlar plating and impact pads to absorb bullets and energy blasts." icon_state = "response_team" armor_list = list( - melee = 15, - bullet = 4, - energy = 2, - bomb = 7, + melee = 60, + bullet = 15, + energy = 10, + bomb = 30, bio = 100, rad = 100 ) @@ -462,9 +462,9 @@ Technomancer RIG desc = "A security hardsuit designed for prolonged EVA in dangerous environments." icon_state = "hazard_rig" armor_list = list( - melee = 10, - bullet = 10, - energy = 10, + melee = 40, + bullet = 40, + energy = 40, bomb = 90, bio = 100, rad = 100 @@ -496,9 +496,9 @@ Technomancer RIG icon_state = "security_rig" suit_type = "stewards hardsuit" armor_list = list( - melee = 10, - bullet = 10, - energy = 10, + melee = 40, + bullet = 40, + energy = 40, bomb = 90, bio = 100, rad = 100 @@ -534,9 +534,9 @@ Technomancer RIG desc = "A light RIG for performing minute repairs and maintenance in atypical atmospheres." icon_state = "sea_rig" armor_list = list( - melee = 6, - bullet = 7, - energy = 5, + melee = 25, + bullet = 30, + energy = 20, bomb = 10, bio = 100, rad = 100 diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index cf821a5c102..051852df589 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -5,9 +5,9 @@ item_state = "syndicate" desc = "A crimson helmet sporting clean lines and durable plating. Engineered to look menacing." armor_list = list( - melee =7, - bullet = 7, - energy = 7, + melee = 30, + bullet = 30, + energy = 30, bomb = 25, bio = 100, rad = 25 @@ -22,9 +22,9 @@ w_class = ITEM_SIZE_NORMAL slowdown = 1 armor_list = list( - melee =7, - bullet = 7, - energy = 7, + melee = 30, + bullet = 30, + energy = 30, bomb = 25, bio = 100, rad = 25 diff --git a/code/modules/clothing/spacesuits/void/excelsior.dm b/code/modules/clothing/spacesuits/void/excelsior.dm index 19fa4d6a50b..05882ac4f61 100644 --- a/code/modules/clothing/spacesuits/void/excelsior.dm +++ b/code/modules/clothing/spacesuits/void/excelsior.dm @@ -17,9 +17,9 @@ ) armor_list = list( - melee = 11, // Excel Not made for Close range combat, Melee armor reflects this - bullet = 13, - energy = 17, + melee = 45, // Excel Not made for Close range combat, Melee armor reflects this + bullet = 55, + energy = 70, bomb = 80, bio = 90, rad = 25 @@ -41,9 +41,9 @@ //Decent all around, but less ballistic resistance stiffness = MEDIUM_STIFFNESS armor_list = list( - melee = 11, // Excel Not made for Close range combat, Melee armor reflects this - bullet = 13, - energy = 17, + melee = 45, // Excel Not made for Close range combat, Melee armor reflects this + bullet = 55, + energy = 70, bomb = 80, bio = 90, rad = 25 @@ -64,9 +64,9 @@ desc = "An ancient space suit design. Provides good protection, especially against energy discharges. This one appears to be an older, less advanced model that is notably free of techno-communist corruption." slowdown = 0.6 //slightly less slowdown, slightly less armor. armor_list = list( - melee = 10, - bullet = 12, - energy = 15, + melee = 40, + bullet = 50, + energy = 60, bomb = 70, bio = 90, rad = 25 @@ -92,9 +92,9 @@ ) armor_list = list( - melee = 10, - bullet = 12, - energy = 15, + melee = 40, + bullet = 50, + energy = 60, bomb = 70, bio = 90, rad = 25 diff --git a/code/modules/clothing/spacesuits/void/merc.dm b/code/modules/clothing/spacesuits/void/merc.dm index 9362aee5823..100d3419b53 100644 --- a/code/modules/clothing/spacesuits/void/merc.dm +++ b/code/modules/clothing/spacesuits/void/merc.dm @@ -4,9 +4,9 @@ icon_state = "scaf" item_state = "scaf" armor_list = list( - melee = 15, - bullet = 13, - energy = 12, + melee = 60, + bullet = 55, + energy = 50, bomb = 75, bio = 100, rad = 25 @@ -51,9 +51,9 @@ slowdown = 1.3 flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL armor_list = list( - melee = 15, - bullet = 13, - energy = 12, + melee = 60, + bullet = 66, + energy = 60, bomb = 75, bio = 100, rad = 25 @@ -147,9 +147,9 @@ icon_state = "syndiehelm" item_state = "syndiehelm" armor_list = list( - melee = 12, - bullet = 10, - energy = 7, + melee = 50, + bullet = 40, + energy = 30, bomb = 50, bio = 100, rad = 75 @@ -175,9 +175,9 @@ item_state = "syndie_voidsuit" slowdown = 0.5 //decent armor, decent slowdown armor_list = list( - melee = 12, - bullet = 10, - energy = 7, + melee = 50, + bullet = 40, + energy = 30, bomb = 50, bio = 100, rad = 75 @@ -211,9 +211,9 @@ icon_state = "peking" item_state = "peking" armor_list = list( - melee = 11, - bullet = 10, - energy = 10, + melee = 45, + bullet = 40, + energy = 40, bomb = 25, bio = 100, rad = 50 @@ -232,9 +232,9 @@ slowdown = 0.35 flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL armor_list = list( - melee = 13, - bullet = 11, - energy = 10, + melee = 55, + bullet = 45, + energy = 40, bomb = 50, bio = 100, rad = 50 @@ -249,9 +249,9 @@ icon_state = "ronin" item_state = "ronin" armor_list = list( - melee = 16, - bullet = 15, - energy = 11, + melee = 66, + bullet = 60, + energy = 45, bomb = 45, bio = 100, rad = 75 @@ -272,9 +272,9 @@ slowdown = 0.45 flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDESHOES armor_list = list( - melee = 16, - bullet = 15, - energy = 11, + melee = 66, + bullet = 60, + energy = 45, bomb = 45, bio = 100, rad = 75 @@ -300,9 +300,9 @@ flash_protection = FLASH_PROTECTION_MODERATE tint = TINT_NONE armor_list = list( - melee =7, - bullet = 7, - energy = 7, + melee = 30, + bullet = 30, + energy = 30, bomb = 25, bio = 100, rad = 100 @@ -317,9 +317,9 @@ w_class = ITEM_SIZE_NORMAL slowdown = 0 armor_list = list( - melee =7, - bullet = 7, - energy = 7, + melee = 30, + bullet = 30, + energy = 30, bomb = 25, bio = 100, rad = 100 @@ -335,9 +335,9 @@ flash_protection = FLASH_PROTECTION_MINOR tint = TINT_NONE armor_list = list( // nerf the value compared to the original - melee = 2, - bullet = 1, - energy = 3, + melee = 10, + bullet = 5, + energy = 15, bomb = 5, bio = 100, rad = 50 @@ -352,9 +352,9 @@ w_class = ITEM_SIZE_NORMAL slowdown = 0 armor_list = list( - melee = 1, - bullet = 1, - energy = 3, + melee = 5, + bullet = 5, + energy = 15, bomb = 0, bio = 100, rad = 50 @@ -371,9 +371,9 @@ flash_protection = FLASH_PROTECTION_MODERATE tint = TINT_NONE armor_list = list( - melee = 10, - bullet = 11, - energy = 11, + melee = 40, + bullet = 45, + energy = 45, bomb = 45, bio = 100, rad = 25 @@ -389,9 +389,9 @@ slowdown = 0 helmet = /obj/item/clothing/head/helmet/space/void/greyson armor_list = list( - melee = 10, - bullet = 12, - energy = 12, + melee = 40, + bullet = 50, + energy = 50, bomb = 45, bio = 100, rad = 25 diff --git a/code/modules/clothing/spacesuits/void/neotheology.dm b/code/modules/clothing/spacesuits/void/neotheology.dm index a9b302b2542..e647fda38c7 100644 --- a/code/modules/clothing/spacesuits/void/neotheology.dm +++ b/code/modules/clothing/spacesuits/void/neotheology.dm @@ -4,9 +4,9 @@ icon_state = "acolyte" item_state = "acolyte" armor_list = list( - melee = 6, - bullet = 6, - energy = 6, + melee = 25, + bullet = 25, + energy = 25, bomb = 25, bio = 100, rad = 75 @@ -20,9 +20,9 @@ slowdown = 0.15 matter = list(MATERIAL_PLASTIC = 15, MATERIAL_STEEL = 15, MATERIAL_BIOMATTER = 20) armor_list = list( - melee = 6, - bullet = 6, - energy = 6, + melee = 25, + bullet = 25, + energy = 25, bomb = 25, bio = 100, rad = 75 @@ -35,9 +35,9 @@ icon_state = "botanist" item_state = "botanist" armor_list = list( - melee = 6, - bullet = 6, - energy = 6, + melee = 25, + bullet = 25, + energy = 25, bomb = 25, bio = 100, rad = 75 @@ -51,9 +51,9 @@ slowdown = 0 matter = list(MATERIAL_PLASTIC = 30, MATERIAL_STEEL = 15, MATERIAL_BIOMATTER = 30) armor_list = list( - melee = 6, - bullet = 6, - energy = 6, + melee = 25, + bullet = 25, + energy = 25, bomb = 25, bio = 100, rad = 75 @@ -66,9 +66,9 @@ icon_state = "custodian" item_state = "custodian" armor_list = list( - melee = 6, - bullet = 6, - energy = 6, + melee = 25, + bullet = 25, + energy = 25, bomb = 25, bio = 100, rad = 90 @@ -83,9 +83,9 @@ slowdown = 0.05 matter = list(MATERIAL_PLASTIC = 15, MATERIAL_STEEL = 10, MATERIAL_BIOMATTER = 30) armor_list = list( - melee = 6, - bullet = 6, - energy = 6, + melee = 25, + bullet = 25, + energy = 25, bomb = 25, bio = 100, rad = 90 @@ -102,9 +102,9 @@ brightness_on = 4 //luminosity when on light_color = COLOR_LIGHTING_NEOTHEOLOGY_BRIGHT //Holyer then thou! armor_list = list( - melee = 10, - bullet = 7, - energy = 7, + melee = 40, + bullet = 30, + energy = 30, bomb = 30, bio = 100, rad = 50 @@ -120,9 +120,9 @@ matter = list(MATERIAL_PLASTEEL = 5, MATERIAL_STEEL = 10, MATERIAL_BIOMATTER = 25) slowdown = 0.15 armor_list = list( - melee = 10, - bullet = 7, - energy = 7, + melee = 40, + bullet = 30, + energy = 30, bomb = 30, bio = 100, rad = 50 @@ -149,9 +149,9 @@ icon_state = "inqarmor_hood" item_state = "inqarmor_hood" armor_list = list( - melee = 16, - bullet = 16, - energy = 16, + melee = 65, + bullet = 65, + energy = 65, bomb = 70, bio = 100, rad = 100 @@ -197,9 +197,9 @@ slowdown = 0 flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL armor_list = list( - melee = 16, - bullet = 16, - energy = 16, + melee = 65, + bullet = 65, + energy = 65, bomb = 70, bio = 100, rad = 100 diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index 4580bc8b737..7d0e0f771e7 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -16,9 +16,9 @@ slot_r_hand_str = "eng_helm", ) armor_list = list( - melee = 8, - bullet = 7, - energy =30, + melee = 35, + bullet = 30, + energy = 30, bomb = 40, bio = 100, rad = 100 @@ -56,9 +56,9 @@ icon_state = "technosuit_void" item_state = "technosuit_void" armor_list = list( - melee = 8, - bullet = 7, - energy = 7, + melee = 35, + bullet = 30, + energy = 30, bomb = 40, bio = 100, rad = 100 @@ -89,9 +89,9 @@ matter = list(MATERIAL_STEEL = 6, MATERIAL_GLASS = 4, MATERIAL_PLASTIC = 3) armor_list = list( - melee = 6, - bullet = 5, - energy = 5, + melee = 25, + bullet = 20, + energy = 20, bomb = 25, bio = 100, rad = 0 @@ -131,9 +131,9 @@ item_state = "makeshift_void" siemens_coefficient = 0.4 armor_list = list( - melee = 7, - bullet = 5, - energy = 5, + melee = 30, + bullet = 20, + energy = 20, bomb = 25, bio = 100, rad = 0 @@ -164,9 +164,9 @@ slot_r_hand_str = "mining_helm", ) armor_list = list( - melee = 12, - bullet = 6, - energy = 6, + melee = 50, + bullet = 25, + energy = 25, bomb = 25, bio = 100, rad = 75 @@ -180,9 +180,9 @@ icon_state = "miner_suit" slowdown = 0.35 armor_list = list( - melee = 12, - bullet = 6, - energy = 6, + melee = 50, + bullet = 25, + energy = 25, bomb = 25, bio = 100, rad = 75 @@ -202,9 +202,9 @@ slot_r_hand_str = "goldilocks_helm", ) armor_list = list( - melee = 12, - bullet = 6, - energy = 6, + melee = 35, + bullet = 10, + energy = 35, bomb = 25, bio = 100, rad = 75 @@ -219,9 +219,9 @@ icon_state = "goldilocks_suit" slowdown = 0 armor_list = list( - melee = 12, - bullet = 6, - energy = 6, + melee = 50, + bullet = 25, + energy = 25, bomb = 25, bio = 100, rad = 75 @@ -242,9 +242,9 @@ slot_r_hand_str = "medical_helm", ) armor_list = list( - melee = 5, // It's a literal glass cube - bullet = 2, - energy = 8, + melee = 20, // It's a literal glass cube + bullet = 10, + energy = 35, bomb = 25, bio = 100, rad = 75 @@ -264,9 +264,9 @@ /obj/item/roller ) armor_list = list( - melee = 8, - bullet = 2, - energy = 8, + melee = 35, + bullet = 20, + energy = 35, bomb = 25, bio = 100, rad = 75 @@ -289,9 +289,9 @@ obscuration = MEDIUM_OBSCURATION armor_list = list( - melee = 12, - bullet = 10, - energy = 10, + melee = 50, + bullet = 40, + energy = 40, bomb = 40, bio = 100, rad = 75 @@ -307,9 +307,9 @@ item_state = "ihvoidsuit" slowdown = 1 armor_list = list( - melee = 12, - bullet = 10, - energy = 10, + melee = 50, + bullet = 40, + energy = 40, bomb = 40, bio = 100, rad = 75 @@ -337,9 +337,9 @@ ) armor_list = list( - melee = 12, - bullet = 10, - energy = 10, + melee = 50, + bullet = 40, + energy = 40, bomb = 40, bio = 100, rad = 75 @@ -355,9 +355,9 @@ item_state = "odst" slowdown = 1 armor_list = list( - melee = 12, - bullet = 10, - energy = 10, + melee = 50, + bullet = 40, + energy = 40, bomb = 40, bio = 100, rad = 75 @@ -453,9 +453,9 @@ slot_r_hand_str = "atmos_helm", ) armor_list = list( - melee = 7, - bullet = 2, - energy = 2, + melee = 30, + bullet = 10, + energy = 10, bomb = 25, bio = 100, rad = 75 @@ -470,9 +470,9 @@ name = "atmos voidsuit" item_state = "atmos_voidsuit" armor_list = list( - melee = 7, - bullet = 2, - energy = 2, + melee = 30, + bullet = 10, + energy = 10, bomb = 25, bio = 100, rad = 75 @@ -502,9 +502,9 @@ obscuration = MEDIUM_OBSCURATION armor_list = list( - melee = 10, - bullet = 16, - energy = 12, + melee = 40, + bullet = 65, + energy = 50, bomb = 70, bio = 75, rad = 50 @@ -559,7 +559,7 @@ obscuration = MEDIUM_OBSCURATION armor_list = list( - melee = 10, + melee = 40, bullet = 65, energy = 50, bomb = 70, @@ -576,9 +576,9 @@ desc = "Void Wolves prey on Kriosan trade ships and frontier colonies all the time, in rare circumstances they engage military ships, with skilled and ballsy Void Wolf Reavers succeeding \ and making off with expensive loot, such as this assault armor given a Void Wolf paint job." armor_list = list( - melee = 12, - bullet = 18, - energy = 15, + melee = 50, + bullet = 75, + energy = 60, bomb = 80, bio = 100, rad = 50 @@ -595,9 +595,9 @@ given its sturdy craftmenship and reinforced armor layers." item_state = "assaultsuit" armor_list = list( - melee = 12, - bullet = 18, - energy = 15, + melee = 50, + bullet = 75, + energy = 60, bomb = 80, bio = 100, rad = 50 @@ -627,9 +627,9 @@ ) armor_list = list( - melee = 6, - bullet = 7, - energy = 10, + melee = 25, + bullet = 30, + energy = 40, bomb = 35, bio = 100, rad = 90 @@ -645,9 +645,9 @@ desc = "A suit of all purpose soteria medical void armor. Used for operations where oxygen is a rarity and protection is needed." item_state = "armor_medical" armor_list = list( - melee = 8, - bullet = 8, - energy = 13, + melee = 35, + bullet = 35, + energy = 55, bomb = 40, bio = 100, rad = 90 @@ -685,9 +685,9 @@ desc = "A standard issue helmet of Mar'Qua make, relatively lightly armored compared to other issue gear but made of advanced materials." icon_state = "marquahelm" armor_list = list( - melee = 6, - bullet = 10, - energy = 10, + melee = 25, + bullet = 40, + energy = 40, bomb = 20, bio = 100, rad = 75 @@ -706,9 +706,9 @@ slowdown = 0 stiffness = LIGHT_STIFFNESS armor_list = list( - melee = 6, - bullet = 10, - energy = 10, + melee = 25, + bullet = 50, + energy = 50, bomb = 20, bio = 100, rad = 75 diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index 1eb1ad61b56..0f54e0125a3 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -6,9 +6,9 @@ heat_protection = HEAD armor_list = list( - melee = 7, - bullet = 5, - energy = 2, + melee = 30, + bullet = 20, + energy = 10, bomb = 25, bio = 100, rad = 75 @@ -24,9 +24,9 @@ desc = "A high-tech dark red space suit." //not that high tech apparently. This is legacy stuff so should be avoided being messed with too slowdown = 1 armor_list = list( - melee = 7, - bullet = 5, - energy = 2, + melee = 30, + bullet = 20, + energy = 10, bomb = 25, bio = 100, rad = 75 diff --git a/code/modules/clothing/spacesuits/void/wizard.dm b/code/modules/clothing/spacesuits/void/wizard.dm index c6d9a5fbfaf..05366533199 100644 --- a/code/modules/clothing/spacesuits/void/wizard.dm +++ b/code/modules/clothing/spacesuits/void/wizard.dm @@ -9,9 +9,9 @@ ) unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles! armor_list = list( - melee = 10, - bullet = 10, - energy = 5, + melee = 40, + bullet = 40, + energy = 20, bomb = 25, bio = 100, rad = 90 @@ -27,9 +27,9 @@ slowdown = 1 unacidable = 1 armor_list = list( - melee = 10, - bullet = 10, - energy = 5, + melee = 40, + bullet = 40, + energy = 20, bomb = 25, bio = 100, rad = 90 diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index d823ff2bc52..23f06b5372f 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -33,9 +33,9 @@ item_state = "armor" blood_overlay_type = "armor" armor_list = list( - melee = 8, - bullet = 8, - energy = 8, + melee = 35, + bullet = 35, + energy = 35, bomb = 10, bio = 0, rad = 0 @@ -85,9 +85,9 @@ price_tag = 900 max_upgrades = 1 armor_list = list( - melee = 10, - bullet = 11, - energy = 10, + melee = 40, + bullet = 44, + energy = 40, bomb = 25, bio = 100, rad = 70 @@ -166,9 +166,9 @@ desc = "An armored vest of dubious quality. Provides decent protection against physical damage, for a piece of crap." icon_state = "armor_handmade" armor_list = list( - melee = 7, - bullet = 5, - energy = 4, + melee = 30, + bullet = 20, + energy = 15, bomb = 10, bio = 0, rad = 0 @@ -206,9 +206,9 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS stiffness = LIGHT_STIFFNESS armor_list = list( - melee =7, - bullet = 4, - energy = 3, + melee = 30, + bullet = 20, + energy = 15, bomb = 10, bio = 0, rad = 0 @@ -274,7 +274,7 @@ icon_state = "botanist" item_flags = THICKMATERIAL | COVER_PREVENT_MANIPULATION body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - armor_list = list(melee =7, bullet = 7, energy = 6, bomb = 20, bio = 100, rad = 80) + armor_list = list(melee = 30, bullet = 30, energy = 25, bomb = 20, bio = 100, rad = 80) flags_inv = HIDEJUMPSUIT /obj/item/clothing/suit/armor/vest/botanist/verb/toggle_style() @@ -306,7 +306,7 @@ icon_state = "acolyte" item_flags = THICKMATERIAL | COVER_PREVENT_MANIPULATION body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - armor_list = list(melee =7, bullet = 7, energy = 6, bomb = 25, bio = 100, rad = 80) + armor_list = list(melee = 30, bullet = 30, energy = 25, bomb = 25, bio = 100, rad = 80) flags_inv = HIDEJUMPSUIT /obj/item/clothing/suit/armor/vest/acolyte/verb/toggle_style() @@ -348,7 +348,7 @@ icon_state = "vinculum_cassock" item_flags = THICKMATERIAL | COVER_PREVENT_MANIPULATION body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - armor_list = list(melee =7, bullet = 7, energy = 6, bomb = 25, bio = 100, rad = 80) + armor_list = list(melee = 30, bullet = 30, energy = 25, bomb = 25, bio = 100, rad = 80) flags_inv = HIDEJUMPSUIT /obj/item/clothing/suit/armor/vest/path/divisor @@ -497,7 +497,7 @@ icon_state = "rosaria_armor" item_flags = THICKMATERIAL | COVER_PREVENT_MANIPULATION body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - armor_list = list(melee = 10, bullet = 10, energy = 10, bomb = 50, bio = 100, rad = 100) + armor_list = list(melee = 40, bullet = 40, energy = 40, bomb = 50, bio = 100, rad = 100) flags_inv = HIDEJUMPSUIT matter = list(MATERIAL_PLASTEEL = 40, MATERIAL_PLASTIC = 5, MATERIAL_SILVER = 5, MATERIAL_GOLD = 5) @@ -531,7 +531,7 @@ icon_state = "custodian" item_flags = THICKMATERIAL | COVER_PREVENT_MANIPULATION body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - armor_list = list(melee =7, bullet = 7, energy = 6, bomb = 25, bio = 100, rad = 80) + armor_list = list(melee = 30, bullet = 30, energy = 25, bomb = 25, bio = 100, rad = 80) flags_inv = HIDEJUMPSUIT /obj/item/clothing/suit/armor/vest/custodian/verb/toggle_style() @@ -563,7 +563,7 @@ icon_state = "prime" item_flags = THICKMATERIAL | COVER_PREVENT_MANIPULATION body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - armor_list = list(melee = 10, bullet = 10, energy = 10, bomb = 50, bio = 100, rad = 100) + armor_list = list(melee = 40, bullet = 40, energy = 40, bomb = 50, bio = 100, rad = 100) flags_inv = HIDEJUMPSUIT matter = list(MATERIAL_PLASTEEL = 40, MATERIAL_PLASTIC = 5, MATERIAL_SILVER = 5, MATERIAL_GOLD = 5) @@ -600,7 +600,7 @@ icon_state = "technosuit" item_flags = THICKMATERIAL | COVER_PREVENT_MANIPULATION body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - armor_list = list(melee = 10, bullet = 10, energy = 10, bomb = 50, bio = 100, rad = 100) + armor_list = list(melee = 40, bullet = 40, energy = 40, bomb = 50, bio = 100, rad = 100) max_upgrades = 2 extra_allowed = list(/obj/item/extinguisher, /obj/item/tool, @@ -621,7 +621,7 @@ item_flags = THICKMATERIAL | COVER_PREVENT_MANIPULATION body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS max_upgrades = 2 - armor_list = list(melee =8, bullet = 6, energy = 6, bomb = 30, bio = 50, rad = 50) + armor_list = list(melee = 35, bullet = 25, energy = 25, bomb = 30, bio = 50, rad = 50) extra_allowed = list(/obj/item/extinguisher, /obj/item/tool, /obj/item/tool_upgrade, @@ -646,9 +646,9 @@ blood_overlay_type = "armor" slowdown = 0.15 armor_list = list( - melee = 6, - bullet = 15, - energy = 6, + melee = 25, + bullet = 60, + energy = 25, bomb = 10, bio = 0, rad = 0 @@ -689,9 +689,9 @@ icon_state = "northtech" matter = list(MATERIAL_STEEL = 10, MATERIAL_PLASTIC = 20, MATERIAL_PLATINUM = 5) armor_list = list( - melee = 3, - bullet = 3, - energy = 12, + melee = 15, + bullet = 15, + energy = 50, bomb = 0, bio = 0, rad = 0 @@ -703,9 +703,9 @@ icon_state = "northtech" matter = list(MATERIAL_STEEL = 10, MATERIAL_PLASTIC = 20, MATERIAL_PLATINUM = 10) armor_list = list( - melee = 3, - bullet = 3, - energy = 15, + melee = 15, + bullet = 15, + energy = 60, bomb = 0, bio = 0, rad = 0 @@ -724,9 +724,9 @@ blood_overlay_type = "armor" slowdown = 0.2 //it's reflective gear...there's no reason for it to be so heavy. armor_list = list( - melee = 6, - bullet = 6, - energy = 15, + melee = 25, + bullet = 25, + energy = 60, bomb = 0, bio = 0, rad = 0 @@ -760,9 +760,9 @@ icon_state = "ablative_ironhammer" matter = list(MATERIAL_STEEL = 20, MATERIAL_PLASTIC = 20, MATERIAL_PLATINUM = 15) armor_list = list( - melee = 5, - bullet = 5, - energy = 16, + melee = 20, + bullet = 20, + energy = 65, bomb = 0, bio = 0, rad = 0 @@ -779,7 +779,7 @@ icon_state = "ablative_bs" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS slowdown = 0.2 - armor_list = list(melee = 6, bullet = 6, energy = 15, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 25, energy = 60, bomb = 10, bio = 0, rad = 0) //Flak Vests /obj/item/clothing/suit/armor/flakvest @@ -790,7 +790,7 @@ blood_overlay_type = "armor" price_tag = 250 slowdown = 0.2 - armor_list = list(melee = 10, bullet = 10, energy = 5, bomb = 50, bio = 0, rad = 0) + armor_list = list(melee = 40, bullet = 40, energy = 20, bomb = 50, bio = 0, rad = 0) /obj/item/clothing/suit/armor/flakvest/verb/toggle_style() set name = "Adjust Style" @@ -824,7 +824,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS stiffness = LIGHT_STIFFNESS slowdown = 0.3 // Bulkier due to protecting more - armor_list = list(melee = 10, bullet = 10, energy = 5, bomb = 50, bio = 0, rad = 0) // Again, in case it doesn't inherit + armor_list = list(melee = 40, bullet = 40, energy = 20, bomb = 50, bio = 0, rad = 0) // Again, in case it doesn't inherit /obj/item/clothing/suit/armor/flakvest/full/toggle_style() set name = "Adjust Style" @@ -923,7 +923,7 @@ item_state = "flakvest_mil" blood_overlay_type = "armor" slowdown = 0.1 //faster than standard due to being fancier. - armor_list = list(melee = 9, bullet = 12, energy = 10, bomb = 50, bio = 0, rad = 0) + armor_list = list(melee = 35, bullet = 50, energy = 40, bomb = 50, bio = 0, rad = 0) /obj/item/clothing/suit/armor/flakvest/commander/toggle_style() @@ -959,9 +959,9 @@ slowdown = 0.2 // Bulkier due to protecting more stiffness = LIGHT_STIFFNESS armor_list = list( - melee = 11, - bullet = 12, - energy = 7, + melee = 45, + bullet = 50, + energy = 30, bomb = 50, bio = 0, rad = 0 @@ -988,9 +988,9 @@ max_upgrades = 2 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT armor_list = list( - melee = 12, - bullet = 11, - energy = 12, + melee = 50, + bullet = 45, + energy = 50, bomb = 40, bio = 0, rad = 0 @@ -1020,9 +1020,9 @@ item_state = "swat_suit" flags_inv = HIDEJUMPSUIT armor_list = list( - melee = 15, - bullet = 6, - energy = 6, + melee = 60, + bullet = 25, + energy = 25, bomb = 25, bio = 0, rad = 0 @@ -1046,9 +1046,9 @@ price_tag = 250 //Normal vest is worth 200, this one is worth 250 because it also has storage space tool_qualities = list(QUALITY_ARMOR = 100) //every armor should have this. Just give it 'no upgrades' if it isnt supposed to have them lol armor_list = list( - melee = 5, - bullet = 7, - energy = 5, + melee = 20, + bullet = 30, + energy = 20, bomb = 25, bio = 0, rad = 0 @@ -1069,9 +1069,9 @@ icon_state = "webvest_ironhammer" slowdown = 0.1 armor_list = list( - melee =8, - bullet = 8, - energy = 8, + melee = 35, + bullet = 35, + energy = 35, bomb = 10, bio = 0, rad = 0 @@ -1087,9 +1087,9 @@ tool_qualities = list() price_tag = 300 armor_list = list( - melee = 13, - bullet = 13, - energy = 13, + melee = 55, + bullet = 55, + energy = 55, bomb = 45, bio = 0, rad = 0 @@ -1111,9 +1111,9 @@ body_parts_covered = UPPER_TORSO|LEGS|ARMS|LOWER_TORSO cold_protection = UPPER_TORSO|LEGS|ARMS|LOWER_TORSO armor_list = list( - melee = 10, - bullet = 10, - energy = 10, + melee = 40, + bullet = 35, + energy = 40, bomb = 35, bio = 0, rad = 0 @@ -1157,7 +1157,7 @@ icon_state = "platecarrier" item_state = "platecarrier" blood_overlay_type = "armor" - armor_list = list(melee =8, bullet = 11, energy = 5, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 35, bullet = 45, energy = 20, bomb = 10, bio = 0, rad = 0) /obj/item/clothing/suit/armor/platecarrier/verb/toggle_style() set name = "Adjust Style" @@ -1291,7 +1291,7 @@ desc = "An armored vest carrying trauma plates and light ballistic meshes, this one is marked with Corpsman livery and has a stain resistant coating." icon_state = "platecarrier_corpsman" item_state = "platecarrier_corpsman" - armor_list = list(melee =8, bullet = 11, energy = 5, bomb = 10, bio = 20, rad = 0) + armor_list = list(melee = 35, bullet = 45, energy = 20, bomb = 10, bio = 20, rad = 0) /obj/item/clothing/suit/armor/platecarrier/corpsman/toggle_style() set name = "Adjust Style" @@ -1323,7 +1323,7 @@ desc = "An armored vest carrying trauma plates and light ballistic meshes, this one is marked with corpsman livery and has a stain resistant coating as well as additional shoulderpads and kneepads for added protection." icon_state = "platecarrier_corpsman_fullbody" item_state = "platecarrier_corpsman_fullbody" - armor_list = list(melee = 8, bullet = 11, energy = 5, bomb = 10, bio = 20, rad = 0) // Just in case it doesn't inherit armor qualities + armor_list = list(melee = 35, bullet = 45, energy = 20, bomb = 10, bio = 20, rad = 0) // Just in case it doesn't inherit armor qualities body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS stiffness = LIGHT_STIFFNESS @@ -1359,7 +1359,7 @@ item_state = "platecarrier_ih" blood_overlay_type = "armor" slowdown = 0.10 - armor_list = list(melee = 12, bullet = 12, energy = 7, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 50, bullet = 50, energy = 30, bomb = 10, bio = 0, rad = 0) /obj/item/clothing/suit/armor/platecarrier/hos/toggle_style() set name = "Adjust Style" @@ -1434,9 +1434,9 @@ item_state = "hos" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS armor_list = list( - melee = 10, - bullet = 10, - energy = 7, + melee = 40, + bullet = 40, + energy = 30, bomb = 25, bio = 0, rad = 0 @@ -1479,7 +1479,7 @@ item_state = "commander" blood_overlay_type = "coat" permeability_coefficient = 0.50 - armor_list = list(melee = 10, bullet = 10, energy = 7, bomb = 25, bio = 0, rad = 0) + armor_list = list(melee = 40, bullet = 40, energy = 30, bomb = 25, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS min_cold_protection_temperature = T0C - 20 @@ -1524,14 +1524,14 @@ /obj/item/clothing/suit/storage/armor/militia_overcoat // Pockets for your hands on the cold. name = "blackshield armored overcoat" desc = "Blackshield greatcoat with kevlar weave and rank epaulettes. Worn in cold environments, guard duty or formal events." - armor_list = list(melee =7, bullet = 8, energy = 5, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 30, bullet = 35, energy = 20, bomb = 10, bio = 0, rad = 0) icon_state = "overcoat_bm" item_state = "overcoat_bm" /obj/item/clothing/suit/storage/armor/marshal_coat name = "marshal officers greatcoat" desc = "Marshal Officer greatcoat with armor weave. Part of the formal uniform of the security marshals." - armor_list = list(melee = 8, bullet = 7, energy = 5, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 35, bullet = 30, energy = 20, bomb = 10, bio = 0, rad = 0) icon_state = "marshal_coat" item_state = "marshal_coat" @@ -1563,7 +1563,7 @@ /obj/item/clothing/suit/storage/armor/marshal_coat_ss name = "supply specialist's jacket" desc = "Supply Specialist's jacket with an armored weave. For formality, protection and style." - armor_list = list(melee = 10, bullet = 10, energy = 5, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 40, bullet = 40, energy = 20, bomb = 10, bio = 0, rad = 0) icon_state = "marshal_coat_ss" item_state = "marshal_coat_ss" @@ -1579,9 +1579,9 @@ item_state = "reactiveoff" blood_overlay_type = "armor" armor_list = list( - melee = 5, - bullet = 5, - energy = 5, + melee = 20, + bullet = 20, + energy = 20, bomb = 0, bio = 0, rad = 0 @@ -1630,9 +1630,9 @@ item_state = "hunter_armor" blood_overlay_type = "armor" armor_list = list( - melee =7, - bullet = 5, - energy = 5, + melee = 30, + bullet = 20, + energy = 20, bomb = 10, bio = 0, rad = 0 ) @@ -1647,9 +1647,9 @@ item_state = "hunter_armor_bone" blood_overlay_type = "armor" armor_list = list( - melee = 11, - bullet = 6, - energy = 6, + melee = 45, + bullet = 25, + energy = 25, bomb = 10, bio = 0, rad = 0) @@ -1661,9 +1661,9 @@ item_state = "hunter_armor_reinforced" blood_overlay_type = "armor" armor_list = list( - melee = 7, - bullet = 11, - energy = 6, + melee = 30, + bullet = 45, + energy = 25, bomb = 10, bio = 0, rad = 0) @@ -1676,9 +1676,9 @@ item_state = "hunter_armor_leather" blood_overlay_type = "armor" armor_list = list( - melee = 7, - bullet = 6, - energy = 11, + melee = 30, + bullet = 25, + energy = 45, bomb = 10, bio = 0, rad = 0) @@ -1689,9 +1689,9 @@ icon_state = "hm_woodvest" item_state = "hm_woodvest" armor_list = list( - melee = 6, //It's made of mostly wood and cloth, shittiest armor in the game easily, but does have bio and rad, giving it a rare but still possible boost over handmade. -Kaz - bullet = 3, // Justifying keeping somewhat decent values on bullet just because I changed the recipe to include steel. - Seb - energy = 2, // It's mostly made of wood, it will char easily. + melee = 25, //It's made of mostly wood and cloth, shittiest armor in the game easily, but does have bio and rad, giving it a rare but still possible boost over handmade. -Kaz + bullet = 15, // Justifying keeping somewhat decent values on bullet just because I changed the recipe to include steel. - Seb + energy = 10, // It's mostly made of wood, it will char easily. bomb = 10, bio = 25, rad = 25 @@ -1713,9 +1713,9 @@ MATERIAL_SILVER = 2 ) armor_list = list( - melee = 7, - bullet = 7, - energy = 7, + melee = 30, + bullet = 30, + energy = 30, bomb = 10, bio = 100, rad = 50 @@ -1779,9 +1779,9 @@ max_upgrades = 0 //No upgrading this one tool_qualities = list() armor_list = list( - melee = 13, - bullet = 13, - energy = 13, + melee = 55, + bullet = 55, + energy = 55, bomb = 60, bio = 0, rad = 0 @@ -1798,7 +1798,7 @@ item_state = "platecarrier_sfa" blood_overlay_type = "armor" slowdown = 0.05 - armor_list = list(melee = 12, bullet = 12, energy = 7, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 50, bullet = 50, energy = 30, bomb = 10, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS /obj/item/clothing/suit/armor/platecarrier/solfed/corpsman @@ -1808,5 +1808,5 @@ item_state = "platecarrier_sfc" blood_overlay_type = "armor" slowdown = 0.05 - armor_list = list(melee = 12, bullet = 12, energy = 7, bomb = 10, bio = 40, rad = 0) + armor_list = list(melee = 50, bullet = 50, energy = 30, bomb = 10, bio = 40, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS diff --git a/code/modules/clothing/suits/gorka.dm b/code/modules/clothing/suits/gorka.dm index 3904e8a1f0a..b87df3c9a98 100644 --- a/code/modules/clothing/suits/gorka.dm +++ b/code/modules/clothing/suits/gorka.dm @@ -356,7 +356,7 @@ icon_open = "gorka_jacket_ih_open" icon_closed = "gorka_jacket_ih" blood_overlay_type = "coat" - armor_list = list(melee = 6, bullet = 6, energy = 3, bomb = 15, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 25, energy = 15, bomb = 15, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|ARMS cold_protection = UPPER_TORSO|ARMS min_cold_protection_temperature = T0C - 20 @@ -367,7 +367,7 @@ name = "security gorka hood" desc = "A hood from a gorka jacket, oddly robust." icon_state = "gorka_jacket_ih_hood" - armor_list = list(melee = 5, bullet = 3, energy = 2, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 20, bullet = 15, energy = 10, bomb = 10, bio = 0, rad = 0) flags_inv = HIDEEARS|BLOCKHEADHAIR body_parts_covered = HEAD|EARS diff --git a/code/modules/clothing/suits/greatcoat.dm b/code/modules/clothing/suits/greatcoat.dm index 0472dc354bf..944675d5555 100644 --- a/code/modules/clothing/suits/greatcoat.dm +++ b/code/modules/clothing/suits/greatcoat.dm @@ -6,7 +6,7 @@ item_state = "cap_coat" blood_overlay_type = "coat" permeability_coefficient = 0.50 - armor_list = list(melee =8, bullet = 8, energy = 3, bomb = 5, bio = 0, rad = 0) + armor_list = list(melee = 35, bullet = 35, energy = 15, bomb = 5, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS cold_protection = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS min_cold_protection_temperature = T0C - 20 @@ -45,9 +45,9 @@ blood_overlay_type = "coat" permeability_coefficient = 0.50 armor_list = list( - melee = 7, - bullet = 7, - energy = 2, + melee = 30, + bullet = 30, + energy = 10, bomb = 30, bio = 100, rad = 100 @@ -66,9 +66,9 @@ blood_overlay_type = "coat" permeability_coefficient = 0.50 armor_list = list( - melee = 2, - bullet = 2, - energy = 2, + melee = 10, + bullet = 10, + energy = 10, bomb = 10, bio = 100, rad = 100 @@ -87,9 +87,9 @@ permeability_coefficient = 0.50 stiffness = LIGHT_STIFFNESS armor_list = list( //thicker material so +5 boost (from base 10) to armor values, but lower rad/same bomb since not metal lined. Maybe add in minor slowdown if needed -Dongels - melee = 3, - bullet = 3, - energy = 3, + melee = 15, + bullet = 15, + energy = 15, bomb = 10, bio = 100, rad = 50 @@ -208,8 +208,8 @@ blood_overlay_type = "coat" permeability_coefficient = 0.50 armor_list = list( - melee = 2, - bullet = 2, + melee = 10, + bullet = 10, energy = 0, bomb = 10, bio = 0, @@ -222,7 +222,7 @@ icon_state = "os_overcoat" item_state = "os_overcoat" blood_overlay_type = "coat" - armor_list = list(melee = 7, bullet = 2, energy = 6, bomb = 25, bio = 0, rad = 40) + armor_list = list(melee = 30, bullet = 10, energy = 25, bomb = 25, bio = 0, rad = 40) body_parts_covered = UPPER_TORSO|ARMS cold_protection = UPPER_TORSO|ARMS min_cold_protection_temperature = T0C - 20 @@ -235,7 +235,7 @@ icon_state = "os_overcoat" item_state = "os_overcoat" blood_overlay_type = "coat" - armor_list = list(melee = 1, bullet = 1, energy = 3, bomb = 0, bio = 0, rad = 25) + armor_list = list(melee = 5, bullet = 5, energy = 15, bomb = 0, bio = 0, rad = 25) body_parts_covered = UPPER_TORSO|ARMS cold_protection = UPPER_TORSO|ARMS min_cold_protection_temperature = T0C - 20 diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 2720b0eb13b..e3e7333c178 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -11,9 +11,9 @@ blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|ARMS armor_list = list( - melee = 1, - bullet = 1, - energy = 1, + melee = 5, + bullet = 5, + energy = 5, bomb = 0, bio = 0, rad = 0 @@ -28,9 +28,9 @@ blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS armor_list = list( - melee = 1, - bullet = 1, - energy = 1, + melee = 5, + bullet = 5, + energy = 5, bomb = 0, bio = 0, rad = 0 @@ -44,9 +44,9 @@ blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|ARMS armor_list = list( - melee = 1, - bullet = 1, - energy = 1, + melee = 5, + bullet = 5, + energy = 5, bomb = 0, bio = 0, rad = 0 @@ -61,9 +61,9 @@ extra_allowed = list(/obj/item/tool) body_parts_covered = UPPER_TORSO armor_list = list( - melee = 2, - bullet = 2, - energy = 1, + melee = 10, + bullet = 10, + energy = 5, bomb = 0, bio = 0, rad = 0 @@ -105,9 +105,9 @@ blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS armor_list = list( - melee = 5, - bullet = 2, - energy = 1, + melee = 20, + bullet = 10, + energy = 5, bomb = 0, bio = 0, rad = 0 @@ -150,8 +150,8 @@ blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO|LOWER_TORSO armor_list = list( - melee = 2, - bullet = 1, + melee = 10, + bullet = 5, energy = 0, bomb = 0, bio = 0, @@ -170,9 +170,9 @@ siemens_coefficient = 0.7 matter = list(MATERIAL_BIOMATTER = 20, MATERIAL_GOLD = 2) armor_list = list( - melee = 5, - bullet = 5, - energy = 2, + melee = 20, + bullet = 20, + energy = 10, bomb = 30, bio = 100, rad = 100 @@ -185,9 +185,9 @@ item_state = "nt_sportsjacket" body_parts_covered = UPPER_TORSO|ARMS armor_list = list( - melee = 3, - bullet = 2, - energy = 1, + melee = 15, + bullet = 10, + energy = 5, bomb = 0, bio = 100, rad = 75 @@ -257,7 +257,7 @@ item_state = "rangercoat" blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|ARMS - armor_list = list(melee =7, bullet = 6, energy = 6, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 30, bullet = 25, energy = 25, bomb = 0, bio = 0, rad = 0) price_tag = 250 /obj/item/clothing/suit/storage/rank/insp_trench/verb/toggle_style() @@ -330,7 +330,7 @@ body_parts_covered = UPPER_TORSO|ARMS price_tag = 50 armor_list = list( - melee = 2, + melee = 10, bullet = 0, energy = 0, bomb = 0, diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 207014fe956..240a3fbcb97 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -121,9 +121,9 @@ matter = list(MATERIAL_STEEL = 5, MATERIAL_GLASS = 5, MATERIAL_PLASTIC = 20) max_upgrades = 1 armor_list = list( - melee = 6, - bullet = 5, - energy = 6, + melee = 25, + bullet = 20, + energy = 25, bomb = 15, bio = 50, rad = 25 diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 3b856566581..cb5cc6c9222 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -203,9 +203,9 @@ obj/item/clothing/suit/gownrisque/alt icon_state = "punk_vest" item_state = "punk_vest" armor_list = list( - melee = 1, - bullet = 1, - energy = 1, + melee = 5, + bullet = 5, + energy = 5, bomb = 0, bio = 0, rad = 0 @@ -231,8 +231,8 @@ obj/item/clothing/suit/gownrisque/alt icon_state = "punkvest" item_state = "punkvest" armor_list = list( - melee = 1, - bullet = 1, + melee = 5, + bullet = 5, energy = 0, bomb = 0, bio = 0, @@ -250,7 +250,7 @@ obj/item/clothing/suit/gownrisque/alt armor_list = list( melee = 0, bullet = 0, - energy = 1, + energy = 5, bomb = 0, bio = 30, rad = 10 @@ -263,9 +263,9 @@ obj/item/clothing/suit/gownrisque/alt icon_state = "cyberpunk" item_state = "cyberpunk" armor_list = list( - melee = 2, - bullet = 2, - energy = 2, + melee = 10, + bullet = 10, + energy = 10, bomb = 0, bio = 0, rad = 0 @@ -281,9 +281,9 @@ obj/item/clothing/suit/gownrisque/alt stiffness = MEDIUM_STIFFNESS equip_delay = 2 SECONDS armor_list = list( - melee = 7, //Not the best armor, but easily crafted and adds some utility with decent protection all round. - bullet = 5, - energy = 6, + melee = 30, //Not the best armor, but easily crafted and adds some utility with decent protection all round. + bullet = 20, + energy = 25, bomb = 25, bio = 0, rad = 0 @@ -321,9 +321,9 @@ obj/item/clothing/suit/gownrisque/alt icon_state = "scav_heavy" item_state = "scav_heavy" armor_list = list( - melee = 12, //A bit worse than riot armour - bullet = 6, - energy = 6, + melee = 50, //A bit worse than riot armour + bullet = 25, + energy = 25, bomb = 25, bio = 0, rad = 0 @@ -359,9 +359,9 @@ obj/item/clothing/suit/gownrisque/alt icon_state = "triadkillers" item_state = "triadkillers" armor_list = list( - melee = 2, - bullet = 1, - energy = 1, + melee = 10, + bullet = 5, + energy = 5, bomb = 0, bio = 0, rad = 0 @@ -376,9 +376,9 @@ obj/item/clothing/suit/gownrisque/alt icon_state = "akira" item_state = "akira" armor_list = list( - melee = 2, - bullet = 2, - energy = 2, + melee = 10, + bullet = 10, + energy = 10, bomb = 0, bio = 0, rad = 0 @@ -392,9 +392,9 @@ obj/item/clothing/suit/gownrisque/alt icon_state = "outcast_cloak" item_state = "outcast_cloak" armor_list = list( - melee = 5, - bullet = 2, - energy = 5, + melee = 20, + bullet = 10, + energy = 20, bomb = 10, bio = 5, rad = 5 @@ -410,9 +410,9 @@ obj/item/clothing/suit/gownrisque/alt icon_state = "field_numerical" item_state = "field_numerical" armor_list = list( - melee = 2, + melee = 10, bullet = 0, //well armored its not going to help a bullet - energy = 2, + energy = 10, bomb = 5, bio = 100, rad = 0 @@ -452,8 +452,8 @@ obj/item/clothing/suit/gownrisque/alt icon_state = "general_priest_cloth" item_state = "general_priest_cloth" armor_list = list( - melee = 2, - bullet = 1, + melee = 10, + bullet = 5, energy = 0, bomb = 0, bio = 0, @@ -477,9 +477,9 @@ obj/item/clothing/suit/gownrisque/alt siemens_coefficient = 0.4 body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS armor_list = list( - melee = 16, - bullet = 15, - energy = 13, + melee = 70, + bullet = 65, + energy = 55, bomb = 75, bio = 100, rad = 100 diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm index bc0691dbdae..e52d7ba84db 100644 --- a/code/modules/clothing/suits/storage.dm +++ b/code/modules/clothing/suits/storage.dm @@ -302,7 +302,7 @@ /obj/item/clothing/suit/storage/toggle/miljacket_marshal name = "Marshal jacket" desc = "A Resistant Marshal Coloured jacket with reflective yellow patches on it." - armor_list = list(melee = 3, bullet = 3, energy = 3, bomb = 10, bio = 0, rad = 0) + armor_list = list(melee = 15, bullet = 15, energy = 15, bomb = 10, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS icon_state = "marshal_jacket" item_state = "marshal_jacket" @@ -538,7 +538,7 @@ desc = "A sturdy grey jacket made out of synthetic leather." icon_state = "leather_jacket" item_state = "leather_jacket" - armor_list = list(melee = 1, bullet = 1, energy = 1, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 5, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS siemens_coefficient = 0.7 @@ -551,7 +551,7 @@ item_state = "midriff_leather" icon_open = "midriff_leather_open" icon_closed = "midriff_leather" - armor_list = list(melee = 1, bullet = 1, energy = 1, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 5, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/suit/storage/toggle/leather/bikermidriff @@ -559,7 +559,7 @@ desc = "A stylish, midriff jacket made of synthetic leather. Red inner padding and thick layers, it'd be a great jacket for cruising down the road; If not for the length" icon_state = "bikermidriff" item_state = "bikermidriff" - armor_list = list(melee = 1, bullet = 1, energy = 1, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 5, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/suit/storage/toggle/leather/bikermidriff/verb/toggle_style() @@ -703,9 +703,9 @@ icon_state = "absolutehoodie" item_state = "absolutehoodie" armor_list = list( - melee = 1, - bullet = 1, - energy = 1, + melee = 5, + bullet = 5, + energy = 5, bomb = 0, bio = 100, rad = 0) @@ -804,8 +804,8 @@ obj/item/clothing/suit/storage/toggle/peacoat icon_state = "aerostatic_bomber_jacket" item_state = "aerostatic_bomber_jacket" armor_list = list( - melee = 1, - bullet = 1, + melee = 5, + bullet = 5, energy = 0, bomb = 5, bio = 30, @@ -820,8 +820,8 @@ obj/item/clothing/suit/storage/toggle/peacoat icon_state = "jamrock_blazer" item_state = "jamrock_blazer" armor_list = list( - melee = 1, - bullet = 1, + melee = 5, + bullet = 5, energy = 0, bomb = 5, bio = 30, @@ -836,9 +836,9 @@ obj/item/clothing/suit/storage/toggle/peacoat icon_state = "tojojacket" item_state = "tojojacket" armor_list = list( - melee = 1, - bullet = 1, - energy = 1, + melee = 5, + bullet = 5, + energy = 5, bomb = 0, bio = 0, rad = 0) @@ -922,9 +922,9 @@ obj/item/clothing/suit/sweater/blue icon_state = "mchestrig" item_state = "mchestrig" armor_list = list( - melee = 2, - bullet = 1, - energy = 1, + melee = 10, + bullet = 5, + energy = 5, bomb = 5, bio = 5, rad = 0 @@ -1202,7 +1202,7 @@ obj/item/clothing/suit/sweater/blue desc = "A long and rugged black trenchcoat, the perfect complement for your film noir ensemble. \n All you need now is a smoke, a whiskey, unlimited ammo and a license to kill." // Max Payne reference. icon_state = "black_trench" item_state = "black_trench" - armor_list = list(melee = 1, bullet = 1, energy = 1, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 5, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/suit/storage/suitjacket/livesey // The word Rum and the word Death should mean the same to you. - Seb @@ -1211,9 +1211,9 @@ obj/item/clothing/suit/sweater/blue icon_state = "livesey" item_state = "livesey" armor_list = list( - melee = 2, - bullet = 1, - energy = 1, + melee = 10, + bullet = 5, + energy = 5, bomb = 0, bio = 10, rad = 0 diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index a01bc0386db..7cdbc09f107 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -20,9 +20,9 @@ extra_allowed = list(/obj/item/extinguisher, /obj/item/storage/toolbox) armor_list = list( - melee = 2, + melee = 10, bullet = 0, - energy = 1, + energy = 30, bomb = 10, bio = 10, rad = 0 @@ -62,7 +62,7 @@ armor_list = list( melee = 0, bullet = 0, - energy = 6, + energy = 25, bomb = 0, bio = 90, rad = 100 @@ -84,7 +84,7 @@ armor_list = list( melee = 0, bullet = 0, - energy = 6, + energy = 25, bomb = 0, bio = 90, rad = 100 diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 9a473d36e79..359dfe5ed67 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -300,7 +300,7 @@ desc = "A jury rugged set of baggy pants with leather reinforcement paddings and other fibers, as comfortable as clothes can get when made by whatever you scavenged off the land." icon_state = "tactical_rags" item_state = "tactical_rags" - armor_list = list(melee = 1, bullet = 0, energy = 2, bomb = 0, bio = 0, rad = 5) + armor_list = list(melee = 5, bullet = 0, energy = 10, bomb = 0, bio = 0, rad = 5) /obj/item/clothing/under/rank/lonestar_gorka name = "lonestar gorka jumpsuit" diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 27fcc76d478..08b45fad9f5 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -96,10 +96,10 @@ icon_state = "engineadv" item_state = "engineadv" armor_list = list( - melee = 5, //if they are not waring any armor over this then we give *something* - bullet = 5, - energy = 6, - bomb = 10, + melee = 20, //if they are not waring any armor over this then we give *something* + bullet = 20, + energy = 25, + bomb = 40, bio = 50, rad = 100 //Rad proof ) @@ -110,9 +110,9 @@ icon_state = "chiefengineeradv" item_state = "chiefengineeradv" armor_list = list( - melee = 7, //if they are not waring any armor over this then we give *something* - bullet = 7, - energy = 11, + melee = 30, //if they are not waring any armor over this then we give *something* + bullet = 30, + energy = 45, bomb = 80, bio = 70, rad = 100 //Rad proof diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index 415ccdfd9f3..31b688aeb96 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -141,9 +141,9 @@ item_state = "paramedic" permeability_coefficient = 0.50 armor_list = list( - melee = 2, - bullet = 1, - energy = 1, + melee = 10, + bullet = 5, + energy = 5, bomb = 0, bio = 30, rad = 0 diff --git a/code/modules/clothing/under/jobs/militia.dm b/code/modules/clothing/under/jobs/militia.dm index 8efd70a9bfe..8fb0d4b3cd6 100644 --- a/code/modules/clothing/under/jobs/militia.dm +++ b/code/modules/clothing/under/jobs/militia.dm @@ -428,7 +428,7 @@ name = "tactical turtleneck" desc = "A reinforced military turtleneck, designed to provide moderate combat protection." icon_state = "syndicate" - armor_list = list(melee = 1, bullet = 1, energy = 1, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 5, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 /obj/item/clothing/under/rank/armorer/service @@ -542,4 +542,4 @@ /obj/item/clothing/under/rank/fatigues/camo/solfed name = "camo utility uniform" desc = "A camo utility uniform, bearing worn patches of the Solar armed forces.." - armor_list = list(melee = 2, bullet = 0, energy = 2, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 0, energy = 10, bomb = 0, bio = 0, rad = 0) diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 82079ca5379..47c5ad1facd 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -170,7 +170,7 @@ ) allowed = list(/obj/item/reagent_containers/food/snacks/candy_corn, /obj/item/pen) armor_list = list( - melee = 2, + melee = 10, bullet = 0, energy = 0, bomb = 0, diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 7029051d0ca..b4af2633282 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -771,9 +771,9 @@ item_state = "johnny" price_tag = 60 armor_list = list( - melee = 2, - bullet = 1, - energy = 1, + melee = 10, + bullet = 5, + energy = 5, bomb = 0, bio = 0, rad = 0 @@ -786,9 +786,9 @@ item_state = "raider" price_tag = 60 armor_list = list( - melee = 2, - bullet = 1, - energy = 1, + melee = 10, + bullet = 5, + energy = 5, bomb = 0, bio = 0, rad = 0 @@ -800,9 +800,9 @@ item_state = "tribalm" price_tag = 50 armor_list = list( - melee = 2, - bullet = 1, - energy = 1, + melee = 10, + bullet = 5, + energy = 5, bomb = 0, bio = 0, rad = 0 @@ -835,7 +835,7 @@ name = "Ashigaru" desc = "A lightly armored apron designed as a homage to jana foot soldiers." icon_state = "ashigaru" - armor_list = list(melee = 1, bullet = 1, energy = 1, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 5, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) /*Swimsuit*/ diff --git a/code/modules/genetics/creatures/golden_roach.dm b/code/modules/genetics/creatures/golden_roach.dm index 10cbf724181..7e69c6bd82c 100644 --- a/code/modules/genetics/creatures/golden_roach.dm +++ b/code/modules/genetics/creatures/golden_roach.dm @@ -45,7 +45,7 @@ melee_damage_lower = 2 melee_damage_upper = 3 - armor = list(melee = 1, bullet = 0, energy = 0, bomb = 0, bio = 5, rad = 0, agony = 0) + armor = list(melee = 5, bullet = 0, energy = 0, bomb = 0, bio = 5, rad = 0, agony = 0) meat_type = /obj/item/reagent_containers/food/snacks/meat/roachmeat meat_amount = 1 diff --git a/code/modules/genetics/creatures/wasonce.dm b/code/modules/genetics/creatures/wasonce.dm index 6d96f747340..89105b9e7e2 100644 --- a/code/modules/genetics/creatures/wasonce.dm +++ b/code/modules/genetics/creatures/wasonce.dm @@ -38,7 +38,7 @@ Has ability of every roach. attacktext = "delivered a crushing blow to" - armor = list(melee = 15, bullet = 7, energy = 0, bomb = 20, bio = 50, rad = 100, agony = 100) + armor = list(melee = 60, bullet = 30, energy = 0, bomb = 20, bio = 50, rad = 100, agony = 100) var/knockdown_odds = 60 //Maybe stay away from it diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 7444c963a5d..37e44734cef 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -25,7 +25,7 @@ weapon_edge = 0 hit_impact(effective_force, get_step(user, src), hit_zone) - damage_through_armor(effective_force, I.damtype, hit_zone, ARMOR_MELEE, armor_divisor = I.armor_divisor, used_weapon = I, sharp = weapon_sharp, edge = weapon_edge) + damage_through_armor(effective_force, I.damtype, hit_zone, ARMOR_MELEE, armor_penetration = I.armor_penetration, used_weapon = I, sharp = weapon_sharp, edge = weapon_edge) /*Its entirely possible that we were gibbed or dusted by the above. Check if we still exist before continuing. Being gibbed or dusted has a 1.5 second delay, during which it sets the transforming var to diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 66cf80c4691..d740b8b7589 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -316,7 +316,7 @@ var/penetration = 1 if(istype(user, /mob/living)) var/mob/living/L = user - penetration = L.armor_divisor + penetration = L.armor_penetration user.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] was attacked by [user.name] ([user.ckey])") @@ -331,7 +331,7 @@ var/dam_zone = pick(organs_by_name) var/obj/item/organ/external/affecting = get_organ(ran_zone(dam_zone)) - var/dam = damage_through_armor(damage = damage, damagetype = damagetype, def_zone = affecting, attack_flag = ARMOR_MELEE, armor_divisor = penetration, sharp = sharp, edge = sharp) + var/dam = damage_through_armor(damage = damage, damagetype = damagetype, def_zone = affecting, attack_flag = ARMOR_MELEE, armor_penetration = penetration, sharp = sharp, edge = sharp) // ran_zone might pick a zone that we don't actually have an organ in if(dam > 0 && affecting) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 1b8962b2037..89bcf095f63 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -337,7 +337,7 @@ This function restores all organs. zone = BP_HEAD return organs_by_name[zone] -/mob/living/carbon/human/apply_damage(damage = 0, damagetype = BRUTE, def_zone, armor_divisor = 1, wounding_multiplier = 1, sharp = FALSE, edge = FALSE, obj/used_weapon, armor_divisor) +/mob/living/carbon/human/apply_damage(damage = 0, damagetype = BRUTE, def_zone, armor_penetration = 1, wounding_multiplier = 1, sharp = FALSE, edge = FALSE, obj/used_weapon, armor_penetration) //visible_message("Hit debug. [damage] | [damagetype] | [def_zone] | [blocked] | [sharp] | [used_weapon]") @@ -355,7 +355,7 @@ This function restores all organs. if(damagetype == PSY) sanity.onPsyDamage(damage) var/obj/item/organ/brain = random_organ_by_process(BP_BRAIN) - brain.take_damage(damage, PSY, (armor_divisor * 0.1), wounding_multiplier) + brain.take_damage(damage, PSY, (armor_penetration * 0.1), wounding_multiplier) return TRUE if(damagetype == TOX && stats.getPerk(PERK_BLOOD_OF_LEAD)) @@ -382,7 +382,7 @@ This function restores all organs. return FALSE damageoverlaytemp = 20 - if(organ.take_damage(damage, damagetype, armor_divisor, wounding_multiplier, sharp, edge, used_weapon)) + if(organ.take_damage(damage, damagetype, (armor_penetration * 0.1), wounding_multiplier, sharp, edge, used_weapon)) UpdateDamageIcon() sanity.onDamage(damage) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index fce83b3cd47..7d47d08d2d2 100755 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -618,7 +618,7 @@ uniquic_armor_act if(en_passant) // message_admins("unique_armor_check en_passant ranged") // message_admins("prj ranged [Proj.penetrating]") - Proj.armor_divisor *= 0.5 + Proj.armor_penetration *= 0.5 Proj.check_armour = ARMOR_MELEE //Foolishness Proj.fire_stacks = 0 //No witches here Proj.wounding_mult = 1 //Foolishness! @@ -635,7 +635,7 @@ uniquic_armor_act else // message_admins("unique_armor_check en_passant ranged") // message_admins("prj ranged [Proj.penetrating]") - Proj.armor_divisor *= 2 + Proj.armor_penetration *= 2 if(Proj.damage_types[BRUTE]) // message_admins("prj BRUTE [Proj.damage_types[BRUTE]] Pre") Proj.damage_types[BRUTE] *= 1.5 diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm index e34555907a6..2319befa8b0 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -53,7 +53,7 @@ attack_verb = list("stabbed", "jabbed", "shanked") attack_noun = list("stab", "jab", "shank") damage = 2 - armor_divisor = 1.2 + armor_penetration = 10 /datum/unarmed_attack/horns deal_halloss = 9 diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 0ca6c3a1f67..1e12dff8f1a 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -707,7 +707,6 @@ unarmed_types = list(/datum/unarmed_attack/punch, /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/bite) blurb = "no." reagent_tag = IS_SYNTHETIC - injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -758,7 +757,6 @@ unarmed_types = list(/datum/unarmed_attack/punch, /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/bite) blurb = "no" reagent_tag = IS_SYNTHETIC - injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -814,7 +812,6 @@ max_age = 110 siemens_coefficient = 2 reagent_tag = IS_SYNTHETIC - injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT slowdown = 0.3 @@ -879,7 +876,6 @@ max_age = 110 siemens_coefficient = 0 reagent_tag = IS_SYNTHETIC - injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -941,7 +937,6 @@ min_age = 18 max_age = 110 reagent_tag = IS_SYNTHETIC - injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -1002,7 +997,6 @@ min_age = 18 max_age = 110 reagent_tag = IS_SYNTHETIC - injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -1064,7 +1058,6 @@ min_age = 18 max_age = 110 reagent_tag = IS_SYNTHETIC - injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -1127,7 +1120,6 @@ spawn_flags = CAN_JOIN min_age = 18 max_age = 200 - injury_type = INJURY_TYPE_HOMOGENOUS taste_sensitivity = TASTE_SENSITIVE nutrition_mod = 150 //Important for some perks diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 0f6db1f9080..dc12e6306f7 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -4,13 +4,13 @@ var/global/list/sparring_attack_cache = list() /datum/unarmed_attack var/attack_verb = list("attack") // Empty hand hurt intent verb. var/attack_noun = list("fist") - var/damage = 0 // Extra empty hand attack damage. + var/damage = 0 // Extra empty hand attack damage.code/modules/mob/living/carbon/human/species/species_attack.dm var/attack_sound = "punch" var/miss_sound = 'sound/weapons/punchmiss.ogg' var/shredding = 0 // Calls the old attack_alien() behavior on objects/mobs when on harm intent. var/sharp = 0 var/edge = 0 - var/armor_divisor = 1 + var/armor_penetration = 1 var/deal_halloss var/sparring_variant_type = /datum/unarmed_attack/light_strike diff --git a/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_behemoth.dm b/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_behemoth.dm index c0fd94da649..f7f9fd52ce1 100644 --- a/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_behemoth.dm +++ b/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_behemoth.dm @@ -8,7 +8,7 @@ melee_damage_lower = 40 melee_damage_upper = 50 move_to_delay = 5 - armor = list(melee = 17, bullet = 15, energy = 20, bomb = 40, bio = 100, rad = 100) //We want to be gunned down, not lasered + armor = list(melee = 70, bullet = 60, energy = 80, bomb = 40, bio = 100, rad = 100) //We want to be gunned down, not lasered drop_amount = 3 size_factor = 1.25 // 25% bigger diff --git a/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_golem.dm b/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_golem.dm index 18e32101bbf..fd0ed2cfe9c 100644 --- a/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_golem.dm +++ b/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_golem.dm @@ -15,7 +15,7 @@ mob_classification = CLASSIFICATION_SYNTHETIC status_flags = CANPUSH // Cannot be stun, weakened or paralyzed - armor = list(melee = 7, bullet = 4, energy = 8, bomb = 30, bio = 100, rad = 100) //We want to be gunned down, not lasered + armor = list(melee = 30, bullet = 20, energy = 35, bomb = 30, bio = 100, rad = 100) //We want to be gunned down, not lasered do_gibs = FALSE diff --git a/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_runtling.dm b/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_runtling.dm index 5911b5a2b29..3512905f9ad 100644 --- a/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_runtling.dm +++ b/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_runtling.dm @@ -6,6 +6,6 @@ health = 30 * AMGOLEM_HEALTH_MOD maxHealth = 30 * AMGOLEM_HEALTH_MOD move_to_delay = 3 // Very fast - armor = list(melee = 4, bullet = 2, energy = 6, bomb = 15, bio = 100, rad = 100) //We want to be gunned down, not lasered + armor = list(melee = 20, bullet = 10, energy = 25, bomb = 15, bio = 100, rad = 100) //We want to be gunned down, not lasered drop_amount = 1 size_factor = 0.75 // 25% Smaller diff --git a/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_shooter.dm b/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_shooter.dm index 64b91b8cfaa..2c136f9f12e 100644 --- a/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_shooter.dm +++ b/code/modules/mob/living/carbon/superior_animal/ameridian/ameridian_shooter.dm @@ -4,7 +4,7 @@ desc = "A weird creature made of ameridian. It is quadruped and seems to shoot ameridian shards." health = 50 * AMGOLEM_HEALTH_MOD maxHealth = 50 * AMGOLEM_HEALTH_MOD - armor = list(melee = 2, bullet = 12, energy = 13, bomb = 30, bio = 100, rad = 100) //We want to be rushed in melee, not shot. + armor = list(melee = 10, bullet = 50, energy = 55, bomb = 30, bio = 100, rad = 100) //We want to be rushed in melee, not shot. ranged = TRUE rapid = TRUE projectiletype = /obj/item/projectile/ameridian_shard/golem diff --git a/code/modules/mob/living/carbon/superior_animal/defense.dm b/code/modules/mob/living/carbon/superior_animal/defense.dm index 50cba9117e4..f11d9e8a6c4 100644 --- a/code/modules/mob/living/carbon/superior_animal/defense.dm +++ b/code/modules/mob/living/carbon/superior_animal/defense.dm @@ -404,9 +404,12 @@ var/penetration = 1 if(istype(user, /mob/living)) var/mob/living/L = user - penetration = L.armor_divisor + penetration = L.armor_penetration + +// damage_through_armor(damage, BRUTE, attack_flag=ARMOR_MELEE, armor_penetration=penetration) + damage_through_armor(damage = damage, damagetype = damagetype, def_zone = null, attack_flag = ARMOR_MELEE, armour_pen = penetration, sharp = sharp, edge = sharp) +// damage_through_armor(damage = damage, damagetype = damagetype, attack_flag = ARMOR_MELEE, armour_pen = penetration, sharp = sharp, edge = sharp) - damage_through_armor(damage, BRUTE, attack_flag=ARMOR_MELEE, armor_divisor=penetration) user.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] was attacked by [user.name] ([user.ckey])") src.visible_message(SPAN_DANGER("[user] has [attack_message] [src]!")) diff --git a/code/modules/mob/living/carbon/superior_animal/drone/handmade_drone.dm b/code/modules/mob/living/carbon/superior_animal/drone/handmade_drone.dm index eab07bfbb11..89da7f4b861 100644 --- a/code/modules/mob/living/carbon/superior_animal/drone/handmade_drone.dm +++ b/code/modules/mob/living/carbon/superior_animal/drone/handmade_drone.dm @@ -8,7 +8,7 @@ see_in_dark = 10 wander = FALSE stop_automated_movement_when_pulled = TRUE - armor = list(melee = 7, bullet = 7, energy = 7, bomb = 50, bio = 100, rad = 100) + armor = list(melee = 30, bullet = 30, energy = 30, bomb = 50, bio = 100, rad = 100) mob_classification = CLASSIFICATION_SYNTHETIC breath_required_type = 0 // Doesn't need to breath breath_poison_type = 0 // Can't be poisoned diff --git a/code/modules/mob/living/carbon/superior_animal/drone/parts/parts.dm b/code/modules/mob/living/carbon/superior_animal/drone/parts/parts.dm index a9a2a699de8..da63ddcbeed 100644 --- a/code/modules/mob/living/carbon/superior_animal/drone/parts/parts.dm +++ b/code/modules/mob/living/carbon/superior_animal/drone/parts/parts.dm @@ -51,9 +51,9 @@ // The total armor it will give to the roomba. var/list/armor_stat = list( - melee = 6, - bullet = 6, - energy = 6, + melee = 25, + bullet = 25, + energy = 25, bomb = 25, bio = 100, // It's a robot, no pain or diseases for you buddy. agony = 100 @@ -65,9 +65,9 @@ icon_state = "roomba_armor_heavy" health_bonus = 200 armor_stat = list( - melee = 12, - bullet = 12, - energy = 12, + melee = 50, + bullet = 50, + energy = 50, bomb = 50, bio = 100, agony = 100 diff --git a/code/modules/mob/living/carbon/superior_animal/drone/types/hammer.dm b/code/modules/mob/living/carbon/superior_animal/drone/types/hammer.dm index efcc978ce19..97f13a6fbc7 100644 --- a/code/modules/mob/living/carbon/superior_animal/drone/types/hammer.dm +++ b/code/modules/mob/living/carbon/superior_animal/drone/types/hammer.dm @@ -8,7 +8,7 @@ maxHealth = 800 melee_damage_lower = 70 melee_damage_upper = 80 - armor = list(melee = 17, bullet = 17, energy = 17, bomb = 50, bio = 100, rad = 100) + armor = list(melee = 70, bullet = 70, energy = 70, bomb = 50, bio = 100, rad = 100) exam_message = "This one appears to wield a stellar-grade engine shaped into a hammer." /mob/living/carbon/superior_animal/handmade/hammer/UnarmedAttack() diff --git a/code/modules/mob/living/carbon/superior_animal/drone/types/roomba.dm b/code/modules/mob/living/carbon/superior_animal/drone/types/roomba.dm index c1648c1e694..32ebb17badf 100644 --- a/code/modules/mob/living/carbon/superior_animal/drone/types/roomba.dm +++ b/code/modules/mob/living/carbon/superior_animal/drone/types/roomba.dm @@ -16,10 +16,10 @@ // Default armor values so that we can reference them. var/default_armor = list( - melee = 3, - bullet = 3, - energy = 3, - bomb = 3, + melee = 15, + bullet = 15, + energy = 15, + bomb = 15, bio = 100, // It is a robot, shouldn't be affected by viruses or pain agony = 100 ) diff --git a/code/modules/mob/living/carbon/superior_animal/fungi/types/slime.dm b/code/modules/mob/living/carbon/superior_animal/fungi/types/slime.dm index ec8c79e4bf4..9f2044677d8 100644 --- a/code/modules/mob/living/carbon/superior_animal/fungi/types/slime.dm +++ b/code/modules/mob/living/carbon/superior_animal/fungi/types/slime.dm @@ -14,9 +14,9 @@ melee_damage_upper = 45 viewRange = 3 armor = list( - melee = 10, - bullet = 5, - energy = 5, + melee = 50, + bullet = 20, + energy = 20, bomb = 10, bio = 10, rad = 10, diff --git a/code/modules/mob/living/carbon/superior_animal/giant_spider/giant_spider.dm b/code/modules/mob/living/carbon/superior_animal/giant_spider/giant_spider.dm index f2b5994182f..6dba9da08fa 100644 --- a/code/modules/mob/living/carbon/superior_animal/giant_spider/giant_spider.dm +++ b/code/modules/mob/living/carbon/superior_animal/giant_spider/giant_spider.dm @@ -17,10 +17,10 @@ emote_see = list("chitters.", "rubs its legs.") speak_chance = 5 - get_stat_modifier = FALSE //We're too baby to get extra mods. - armor_divisor = 1 + get_stat_modifier = TRUE + armor_penetration = 5 - armor = list(melee = 1, bullet = 0, energy = 0, bomb = 1, bio = 10, rad = 25) + armor = list(melee = 5, bullet = 0, energy = 0, bomb = 5, bio = 10, rad = 25) allowed_stat_modifiers = list( /datum/stat_modifier/mob/living/carbon/superior_animal/lustrous = 33, diff --git a/code/modules/mob/living/carbon/superior_animal/giant_spider/types/hunter/hunter.dm b/code/modules/mob/living/carbon/superior_animal/giant_spider/types/hunter/hunter.dm index c938e362746..6674b41821a 100644 --- a/code/modules/mob/living/carbon/superior_animal/giant_spider/types/hunter/hunter.dm +++ b/code/modules/mob/living/carbon/superior_animal/giant_spider/types/hunter/hunter.dm @@ -18,7 +18,7 @@ name = "cloaker spider" desc = "Furry and black, it makes you shudder to look at it. This one has a weaker chameleonic chitin that makes it hard to see." alpha = 50 - armor = list(melee = 1, bullet = 0, energy = 0, bomb = 0, bio = 10, rad = 25, agony = 0) + armor = list(melee = 5, bullet = 0, energy = 5, bomb = 0, bio = 10, rad = 25, agony = 0) /mob/living/carbon/superior_animal/giant_spider/hunter/cloaker/death() //We are now unable to chameleonic chitin do to being dead @@ -51,7 +51,7 @@ meat_type = /obj/item/reagent_containers/food/snacks/meat/spider/plasma meat_amount = 4 emote_see = list("chitters.","rubs its legs.","vibrates.") - armor_divisor = 3 + armor_penetration = 50 /mob/living/carbon/superior_animal/giant_spider/plasma/UnarmedAttack(var/atom/A, var/proximity) . = ..() @@ -70,7 +70,7 @@ melee_damage_upper = 25 emote_see = list("chitters.","rubs its legs.","thumps its many legs on the ground.") mob_size = MOB_LARGE - armor = list(melee = 3, bullet = 1, energy = 0, bomb = 5, bio = 10, rad = 25, agony = 0) + armor = list(melee = 15, bullet = 10, energy = 5, bomb = 5, bio = 10, rad = 25, agony = 0) /mob/living/carbon/superior_animal/giant_spider/tarantula/UnarmedAttack(var/atom/A, var/proximity) @@ -204,10 +204,10 @@ flash_resistances = 3 //For balance against are speedy fello poison_type = "party drops" meat_type = /obj/item/reagent_containers/food/snacks/meat/spider/emperor - armor = list(melee = 6, bullet = 6, energy = 2, bomb = 25, bio = 10, rad = 25, agony = 0) - armor_divisor = 2 + armor = list(melee = 25, bullet = 10, energy = 5, bomb = 25, bio = 10, rad = 25, agony = 0) + armor_penetration = 25 - get_stat_modifier = TRUE //Were not getting armor //Yes we are. + get_stat_modifier = TRUE //Giving the emperor spider his own meat that has party drops. Reducing dropped meat to 3 from 4. meat_amount = 4 //So its more worth killing these @@ -238,7 +238,7 @@ poison_per_bite = 6 poison_type = "stoxin" meat_type = /obj/item/reagent_containers/food/snacks/meat/spider/reaper_spider - armor_divisor = 3 + armor_penetration = 30 get_stat_modifier = FALSE //Were not getting armor diff --git a/code/modules/mob/living/carbon/superior_animal/giant_spider/types/nurse.dm b/code/modules/mob/living/carbon/superior_animal/giant_spider/types/nurse.dm index db93540cba6..b4991ef60c2 100644 --- a/code/modules/mob/living/carbon/superior_animal/giant_spider/types/nurse.dm +++ b/code/modules/mob/living/carbon/superior_animal/giant_spider/types/nurse.dm @@ -22,7 +22,7 @@ emote_see = list("chitters.","rubs its legs.","trails webs through its hairs.","screeches.") var/web_activity = 30 move_to_delay = 4 //slightly faster than guardians but slower than hunters - armor = list(melee = 0, bullet = 0, energy = 0, bomb = 5, bio = 10, rad = 25, agony = 0) + armor = list(melee = 0, bullet = 0, energy = 5, bomb = 5, bio = 10, rad = 25, agony = 0) var/egg_inject_chance = 0 //AHAHAHAHAHAHAHAAHAHAH, no life_cycles_before_sleep = 3000 //We need more time to eat and web inherent_mutations = list(MUTATION_PROT_MILK, MUTATION_SPIDER_FRIEND, MUTATION_NERVOUSNESS, MUTATION_DEAF) @@ -88,7 +88,7 @@ icon_living = "webslinger" emote_see = list("chitters.","rubs its legs.","trails webs through its hairs.","screeches.","bounces happily in place!") web_activity = 70 - armor = list(melee = 3, bullet = 1, energy = 0, bomb = 5, bio = 10, rad = 25, agony = 0) + armor = list(melee = 15, bullet = 10, energy = 0, bomb = 5, bio = 10, rad = 25, agony = 0) /mob/living/carbon/superior_animal/giant_spider/nurse/recluse name = "recluse spider" @@ -106,7 +106,7 @@ move_to_delay = 5 // Very slow do to being 1 hit unfun //Giving the recluse its own special meat that has zombie powder. Reducing the amount of meat made since this is some hard stuff and the recluse is easy to kill. poison_type = "zombiepowder" - armor_divisor = 3 + armor_penetration = 70 /mob/living/carbon/superior_animal/giant_spider/nurse/queen name = "empress spider" @@ -127,9 +127,9 @@ //Giving the queen her own meat type which contains MENACE. mob_size = MOB_LARGE get_stat_modifier = TRUE - armor = list(melee = 3, bullet = 1, energy = 0, bomb = 5, bio = 10, rad = 25, agony = 0) + armor = list(melee = 15, bullet = 0, energy = 0, bomb = 5, bio = 10, rad = 25, agony = 0) inherent_mutations = list(MUTATION_GIGANTISM, MUTATION_SPIDER_FRIEND, MUTATION_RAND_UNSTABLE, MUTATION_RAND_UNSTABLE, MUTATION_RAND_UNSTABLE) - armor_divisor = 2 + armor_penetration = 35 /mob/living/carbon/superior_animal/giant_spider/nurse/queen/New() ..() diff --git a/code/modules/mob/living/carbon/superior_animal/human/stranger.dm b/code/modules/mob/living/carbon/superior_animal/human/stranger.dm index c75d3a84768..d1bb68519f8 100644 --- a/code/modules/mob/living/carbon/superior_animal/human/stranger.dm +++ b/code/modules/mob/living/carbon/superior_animal/human/stranger.dm @@ -20,7 +20,7 @@ status_flags = CANPUSH ranged = TRUE rapid = TRUE - armor = list(melee = 6, bullet = 3, energy = 5, bomb = 25, bio = 100, rad = 100) //Were in a space suit thing? + armor = list(melee = 10, bullet = 35, energy = 40, bomb = 25, bio = 100, rad = 100) //Were in a space suit thing? projectiletype = /obj/item/projectile/plasma/heavy projectilesound = 'sound/weapons/guns/unknown_spacegun_vaporize.ogg' faction = "bluespace" diff --git a/code/modules/mob/living/carbon/superior_animal/human/subtype/colony/colony.dm b/code/modules/mob/living/carbon/superior_animal/human/subtype/colony/colony.dm index 23f301b0f68..6af67ad2a6a 100644 --- a/code/modules/mob/living/carbon/superior_animal/human/subtype/colony/colony.dm +++ b/code/modules/mob/living/carbon/superior_animal/human/subtype/colony/colony.dm @@ -20,7 +20,7 @@ target_telegraph = "fumbles to ready their weapon, preparing to engage" rush_target_telegraph = "quickly snaps their aim toward" - armor = list(melee = 10, bullet = 10, energy = 7, bomb = 30, bio = 100, rad = 50) + armor = list(melee = 40, bullet = 40, energy = 30, bomb = 30, bio = 100, rad = 50) inherent_mutations = list(MUTATION_HEART, MUTATION_LUNG, MUTATION_LIVER, MUTATION_BLOOD_VESSEL, MUTATION_MUSCLES, MUTATION_NERVES) @@ -120,7 +120,7 @@ melee_damage_upper = 10 egun = TRUE suited_for_space = TRUE - armor = list(melee = 12, bullet = 12, energy = 10, bomb = 30, bio = 100, rad = 50) + armor = list(melee = 50, bullet = 50, energy = 40, bomb = 30, bio = 100, rad = 50) projectiletype = /obj/item/projectile/beam light_range = 5 light_color = COLOR_LIGHTING_BLUE_BRIGHT @@ -150,7 +150,7 @@ egun = TRUE suited_for_space = TRUE projectiletype = /obj/item/projectile/beam - armor = list(melee = 12, bullet = 12, energy = 10, bomb = 30, bio = 100, rad = 50) + armor = list(melee = 50, bullet = 50, energy = 40, bomb = 30, bio = 100, rad = 50) //They are all waring space suits breath_required_type = NONE diff --git a/code/modules/mob/living/carbon/superior_animal/human/subtype/eventwolf/eventwolf.dm b/code/modules/mob/living/carbon/superior_animal/human/subtype/eventwolf/eventwolf.dm index cb83be8d4ab..8c7460a3e23 100644 --- a/code/modules/mob/living/carbon/superior_animal/human/subtype/eventwolf/eventwolf.dm +++ b/code/modules/mob/living/carbon/superior_animal/human/subtype/eventwolf/eventwolf.dm @@ -9,7 +9,7 @@ maxHealth = 450 ranged = FALSE - armor = list(melee = 7, bullet = 17, energy = 7, bomb = 35, bio = 100, rad = 50) + armor = list(melee = 35, bullet = 70, energy = 35, bomb = 35, bio = 100, rad = 50) faction = "pirate" icon = 'icons/mob/mobs-humanoid.dmi' @@ -40,7 +40,7 @@ stop_automated_movement_when_pulled = 0 melee_damage_lower = 10 melee_damage_upper = 10 - armor = list(melee = 2, bullet = 2, energy = 2, bomb = 0, bio = 100, rad = 50) + armor = list(melee = 10, bullet = 10, energy = 10, bomb = 0, bio = 100, rad = 50) /mob/living/carbon/superior_animal/human/voidwolf/eventwolf/explosive/UnarmedAttack() diff --git a/code/modules/mob/living/carbon/superior_animal/human/subtype/excelsior/excelsior.dm b/code/modules/mob/living/carbon/superior_animal/human/subtype/excelsior/excelsior.dm index a935b6ed3ec..a755f37dcb7 100644 --- a/code/modules/mob/living/carbon/superior_animal/human/subtype/excelsior/excelsior.dm +++ b/code/modules/mob/living/carbon/superior_animal/human/subtype/excelsior/excelsior.dm @@ -9,7 +9,7 @@ maxHealth = 100 * EXCELSIOR_HEALTH_MOD health = 100 * EXCELSIOR_HEALTH_MOD - armor = list(melee = 13, bullet = 13, energy = 17, bomb = 80, bio = 90, rad = 25) //Legitmently their armor (melee is higher {45} to account for AI stupidness) + armor = list(melee = 55, bullet = 55, energy = 70, bomb = 80, bio = 90, rad = 25) //Legitmently their armor (melee is higher {45} to account for AI stupidness) //range/ammo stuff ranged = 1 @@ -115,7 +115,7 @@ melee_damage_lower = 33 melee_damage_upper = 40 - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP ranged = 0 rapid = 0 diff --git a/code/modules/mob/living/carbon/superior_animal/human/subtype/kriosan/kriosan.dm b/code/modules/mob/living/carbon/superior_animal/human/subtype/kriosan/kriosan.dm index e7bdbca6b91..b930586095e 100644 --- a/code/modules/mob/living/carbon/superior_animal/human/subtype/kriosan/kriosan.dm +++ b/code/modules/mob/living/carbon/superior_animal/human/subtype/kriosan/kriosan.dm @@ -9,7 +9,7 @@ maxHealth = 100 health = 100 - armor = list(melee = 12, bullet = 12, energy = 11, bomb = 50, bio = 100, rad = 100) + armor = list(melee = 50, bullet = 50, energy = 45, bomb = 50, bio = 100, rad = 100) //range/ammo stuff ranged = 1 @@ -54,7 +54,7 @@ icon_state = "kriosan_troop_riot" icon_dead = "kriosan_troop_riot_dead" - armor = list(melee = 15, bullet = 17, energy = 12, bomb = 40, bio = 100, rad = 100) + armor = list(melee = 60, bullet = 70, energy = 50, bomb = 40, bio = 100, rad = 100) //range/ammo stuff rapid = 1 @@ -78,7 +78,7 @@ icon_state = "kriosan_troop_chaingun" icon_dead = "kriosan_troop_chaingun_dead" - armor = list(melee = 17, bullet = 13, energy = 10, bomb = 70, bio = 100, rad = 100) + armor = list(melee = 70, bullet = 55, energy = 40, bomb = 70, bio = 100, rad = 100) rapid = 1 diff --git a/code/modules/mob/living/carbon/superior_animal/human/subtype/prisoners/prisoners.dm b/code/modules/mob/living/carbon/superior_animal/human/subtype/prisoners/prisoners.dm index 3696856789f..0e6f4393d08 100644 --- a/code/modules/mob/living/carbon/superior_animal/human/subtype/prisoners/prisoners.dm +++ b/code/modules/mob/living/carbon/superior_animal/human/subtype/prisoners/prisoners.dm @@ -10,7 +10,7 @@ maxHealth = 75 health = 75 - armor = list(melee = 7, bullet = 7, energy = 5, bomb = 30, bio = 100, rad = 100) + armor = list(melee = 30, bullet = 30, energy = 20, bomb = 30, bio = 100, rad = 100) //range/ammo stuff ranged = TRUE @@ -67,7 +67,7 @@ maxHealth = 100 health = 100 - armor = list(melee = 10, bullet = 10, energy = 6, bomb = 35, bio = 100, rad = 100) + armor = list(melee = 40, bullet = 40, energy = 25, bomb = 35, bio = 100, rad = 100) ranged = FALSE @@ -89,7 +89,7 @@ maxHealth = 125 health = 125 - armor = list(melee = 11, bullet = 11, energy = 7, bomb = 40, bio = 100, rad = 100) + armor = list(melee = 45, bullet = 45, energy = 30, bomb = 40, bio = 100, rad = 100) casingtype = /obj/item/ammo_casing/shotgun/spent diff --git a/code/modules/mob/living/carbon/superior_animal/human/subtype/solgov/marines.dm b/code/modules/mob/living/carbon/superior_animal/human/subtype/solgov/marines.dm index 270e6e46e87..bf5a6be0d47 100644 --- a/code/modules/mob/living/carbon/superior_animal/human/subtype/solgov/marines.dm +++ b/code/modules/mob/living/carbon/superior_animal/human/subtype/solgov/marines.dm @@ -9,7 +9,7 @@ maxHealth = 100 health = 100 - armor = list(melee = 12, bullet = 12, energy = 11, bomb = 50, bio = 100, rad = 100) + armor = list(melee = 50, bullet = 50, energy = 45, bomb = 50, bio = 100, rad = 100) casingtype = /obj/item/ammo_casing/heavy_rifle_408/spent @@ -75,7 +75,7 @@ icon_state = "solfed_trooper_shield" icon_dead = "solfed_trooper_shield_dead" - armor = list(melee = 15, bullet = 17, energy = 12, bomb = 40, bio = 100, rad = 100) + armor = list(melee = 60, bullet = 70, energy = 50, bomb = 40, bio = 100, rad = 100) casingtype = /obj/item/ammo_casing/magnum_40/spent @@ -106,7 +106,7 @@ icon_state = "solfed_trooper_shotgun" icon_dead = "solfed_trooper_shotgun_dead" - armor = list(melee = 17, bullet = 13, energy = 10, bomb = 70, bio = 100, rad = 100) + armor = list(melee = 70, bullet = 55, energy = 40, bomb = 70, bio = 100, rad = 100) casingtype = /obj/item/ammo_casing/shotgun/spent @@ -187,7 +187,7 @@ maxHealth = 75 //Less health than a noraml person. health = 75 - armor = list(melee = 6, bullet = 10, energy = 8, bomb = 20, bio = 100, rad = 100) + armor = list(melee = 25, bullet = 40, energy = 35, bomb = 20, bio = 100, rad = 100) casingtype = /obj/item/ammo_casing/heavy_rifle_408/hv/spent diff --git a/code/modules/mob/living/carbon/superior_animal/human/subtype/voidwolf/voidwolf.dm b/code/modules/mob/living/carbon/superior_animal/human/subtype/voidwolf/voidwolf.dm index 6ebab5fca4f..57191dbf6f8 100644 --- a/code/modules/mob/living/carbon/superior_animal/human/subtype/voidwolf/voidwolf.dm +++ b/code/modules/mob/living/carbon/superior_animal/human/subtype/voidwolf/voidwolf.dm @@ -14,7 +14,7 @@ melee_damage_upper = 30 melee_sharp = FALSE //Eswords - armor_divisor = 3 + armor_penetration = 30 breath_required_type = 0 // Doesn't need to breath, in a space suit breath_poison_type = 0 // Can't be poisoned @@ -31,7 +31,7 @@ target_telegraph = "fumbles to ready their weapon, preparing to engage" rush_target_telegraph = "quickly snaps their aim toward" - armor = list(melee = 2, bullet = 2, energy = 2, bomb = 0, bio = 100, rad = 50) //Legitmently their armor + armor = list(melee = 10, bullet = 10, energy = 10, bomb = 0, bio = 100, rad = 50) //Legitmently their armor inherent_mutations = list(MUTATION_HEART, MUTATION_LUNG, MUTATION_LIVER, MUTATION_BLOOD_VESSEL, MUTATION_MUSCLES, MUTATION_NERVES) @@ -105,7 +105,7 @@ attack_sound = 'sound/items/Welder.ogg' drop_items = list(/obj/item/tool/weldingtool/advanced) melee_sharp = FALSE - armor_divisor = 1 + armor_penetration = 1 melee_damage_type = BURN /*Ranged Void Wolfs*/ @@ -131,7 +131,7 @@ mag_type = /obj/item/cell/medium/high/depleted mags_left = 1 melee_sharp = FALSE - armor_divisor = 1 + armor_penetration = 1 /mob/living/carbon/superior_animal/human/voidwolf/ranged/New() ..() @@ -155,7 +155,7 @@ mag_type = /obj/item/cell/small/high/depleted mags_left = 2 melee_sharp = FALSE - armor_divisor = 1 + armor_penetration = 1 melee_damage_type = BURN /mob/living/carbon/superior_animal/human/voidwolf/fieldtech/ranged/New() @@ -175,7 +175,7 @@ projectiletype = /obj/item/projectile/beam drop_items = list(/obj/item/gun/energy/cog) melee_sharp = FALSE - armor_divisor = 1 + armor_penetration = 1 /mob/living/carbon/superior_animal/human/voidwolf/ranged/aerotrooper/New() ..() @@ -201,7 +201,7 @@ mag_type = /obj/item/cell/small/high/depleted mags_left = 1 melee_sharp = TRUE //Eswords - armor_divisor = 3 + armor_penetration = 30 times_to_get_stat_modifiers = 2 //two prefixes @@ -231,8 +231,8 @@ flash_resistances = 20 //no. melee_sharp = TRUE //Eswords - armor_divisor = 3 - armor = list(melee = 15, bullet = 13, energy = 12, bomb = 75, bio = 100, rad = 25) //Legitmently their armor + armor_penetration = 30 + armor = list(melee = 60, bullet = 55, energy = 50, bomb = 75, bio = 100, rad = 25) //Legitmently their armor /mob/living/carbon/superior_animal/human/voidwolf/elite/New() ..() @@ -254,7 +254,7 @@ rapid_fire_shooting_amount = 5 //we're using the burst 5 mode delay_for_rapid_range = 0.22 SECONDS melee_sharp = FALSE - armor_divisor = 1 + armor_penetration = 1 /obj/item/gun/energy/firestorm/reaver_modded @@ -279,7 +279,7 @@ casingtype = /obj/item/ammo_casing/pistol_35/spent melee_sharp = FALSE - armor_divisor = 1 + armor_penetration = 1 /obj/item/gun/projectile/automatic/c20r/reaver_modded @@ -311,7 +311,7 @@ casingtype = /obj/item/ammo_casing/a75/spent melee_sharp = FALSE - armor_divisor = 1 + armor_penetration = 1 /mob/living/carbon/superior_animal/human/voidwolf/elite/gyrojet/New() ..() @@ -330,7 +330,7 @@ casingtype = /obj/item/ammo_casing/a75/spent drop_items = list(/obj/item/tool/sword/saber/cutlass, /obj/item/shield/buckler/energy/reaver/damaged,/obj/random/cloth/assault/reaver) melee_sharp = TRUE //Eswords - armor_divisor = 3 + armor_penetration = 30 var/block_chance = 65 /mob/living/carbon/superior_animal/human/voidwolf/elite/myrmidon/New() diff --git a/code/modules/mob/living/carbon/superior_animal/human/subtype/xiang jiang/xiang.dm b/code/modules/mob/living/carbon/superior_animal/human/subtype/xiang jiang/xiang.dm index 3c0b012e4c1..6c4883a375c 100644 --- a/code/modules/mob/living/carbon/superior_animal/human/subtype/xiang jiang/xiang.dm +++ b/code/modules/mob/living/carbon/superior_animal/human/subtype/xiang jiang/xiang.dm @@ -10,7 +10,7 @@ maxHealth = 100 health = 100 - armor = list(melee = 7, bullet = 7, energy = 5, bomb = 30, bio = 100, rad = 100) + armor = list(melee = 30, bullet = 30, energy = 20, bomb = 30, bio = 100, rad = 100) //range/ammo stuff ranged = TRUE @@ -73,7 +73,7 @@ maxHealth = 150 health = 150 - armor = list(melee = 17, bullet = 12, energy = 12, bomb = 35, bio = 100, rad = 100) + armor = list(melee = 70, bullet = 50, energy = 50, bomb = 35, bio = 100, rad = 100) ranged = FALSE diff --git a/code/modules/mob/living/carbon/superior_animal/lodge/types/cerberus.dm b/code/modules/mob/living/carbon/superior_animal/lodge/types/cerberus.dm index ff30b171681..426ac1dee5e 100644 --- a/code/modules/mob/living/carbon/superior_animal/lodge/types/cerberus.dm +++ b/code/modules/mob/living/carbon/superior_animal/lodge/types/cerberus.dm @@ -84,7 +84,7 @@ health = 400 melee_damage_lower = 40 melee_damage_upper = 45 - armor = list(melee = 7, bullet = 7, energy = 5, bomb = 5, bio = 10, rad = 25) + armor = list(melee = 30, bullet = 30, energy = 20, bomb = 5, bio = 10, rad = 25) /mob/living/carbon/superior_animal/lodge/cerberus/chimera/sun name = "Solis" @@ -96,7 +96,7 @@ health = 500 melee_damage_lower = 50 melee_damage_upper = 55 - armor = list(melee = 10, bullet = 10, energy = 7, bomb = 10, bio = 15, rad = 25) + armor = list(melee = 40, bullet = 40, energy = 30, bomb = 10, bio = 15, rad = 25) //Baby cerberus //Grows into a cerberus or chimera. Credit to BigBimmer#2319 for the sprite. diff --git a/code/modules/mob/living/carbon/superior_animal/nanobot/nanobot.dm b/code/modules/mob/living/carbon/superior_animal/nanobot/nanobot.dm index 1b64f65ca67..8f615adc2d7 100644 --- a/code/modules/mob/living/carbon/superior_animal/nanobot/nanobot.dm +++ b/code/modules/mob/living/carbon/superior_animal/nanobot/nanobot.dm @@ -15,7 +15,7 @@ see_in_dark = 10 wander = FALSE stop_automated_movement_when_pulled = TRUE - armor = list(melee = 7, bullet = 7, energy = 7, bomb = 50, bio = 100, rad = 100) + armor = list(melee = 30, bullet = 30, energy = 30, bomb = 50, bio = 100, rad = 100) mob_classification = CLASSIFICATION_SYNTHETIC breath_required_type = 0 // Doesn't need to breath breath_poison_type = 0 // Can't be poisoned diff --git a/code/modules/mob/living/carbon/superior_animal/psi_monsters/psi_monster.dm b/code/modules/mob/living/carbon/superior_animal/psi_monsters/psi_monster.dm index 3eccae94098..89803cd9b04 100644 --- a/code/modules/mob/living/carbon/superior_animal/psi_monsters/psi_monster.dm +++ b/code/modules/mob/living/carbon/superior_animal/psi_monsters/psi_monster.dm @@ -13,7 +13,7 @@ mob_size = MOB_LARGE viewRange = 8 - armor = list(melee = 5, bullet = 2, energy = 1, bomb = 30, bio = 100, rad = 100) + armor = list(melee = 20, bullet = 10, energy = 5, bomb = 30, bio = 100, rad = 100) cant_be_pulled = TRUE cant_gib = TRUE diff --git a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/Ploge.dm b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/Ploge.dm index cfa7d988ab7..f4c1fb4150c 100644 --- a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/Ploge.dm +++ b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/Ploge.dm @@ -17,7 +17,7 @@ health = 1000 * PSIMOB_HEALTH_MOD //Good stats baseline in case admins dont edit these - armor = list(melee = 15, bullet = 7, energy = 7, bomb = 20, bio = 50, rad = 100, agony = 100) + armor = list(melee = 60, bullet = 30, energy = 30, bomb = 20, bio = 50, rad = 100, agony = 100) ranged = TRUE comfy_range = 8 @@ -29,7 +29,7 @@ can_burrow = FALSE melee_damage_lower = 15 melee_damage_upper = 25 - armor_divisor = 3 + armor_penetration = 50 ranged = TRUE pixel_x = 0 @@ -61,7 +61,7 @@ knockdown_odds = 50 melee_damage_lower = 30 melee_damage_upper = 35 - armor_divisor = 4 + armor_penetration = 60 transform_ed = TRUE projectiletype = /obj/item/projectile/tether/lash for(var/mob/living/target in targets_in_range(in_hear_range = TRUE)) diff --git a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiImpressive.dm b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiImpressive.dm index 9115537a64e..65344e9e364 100644 --- a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiImpressive.dm +++ b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiImpressive.dm @@ -19,7 +19,7 @@ death_gasp = "The flesh behemoth heaves as its body crumbles, wriggling pus maggots bursting from its failing rotted bulk!!" drop_items = list(/obj/random/psi/always_spawn, /obj/random/psi/always_spawn) momento_mori = /obj/effect/decal/cleanable/psi_ash/flesh_behemoth - armor_divisor = 1 + armor_penetration = 15 /mob/living/carbon/superior_animal/psi_monster/mind_gazer @@ -37,7 +37,7 @@ healing_factor = 10 attacktext = "rammed" drop_items = list(/obj/random/psi/always_spawn, /obj/random/psi/always_spawn) - armor_divisor = 1.2 + armor_penetration = 20 leach_on_odds = 30 can_leach = TRUE steal_odds = 15 @@ -63,7 +63,7 @@ light_color = COLOR_LIGHTING_RED_BRIGHT attacktext = "clawed" drop_items = list(/obj/random/psi/always_spawn, /obj/random/psi/always_spawn) - armor_divisor = 1.5 + armor_penetration = 50 /mob/living/carbon/superior_animal/psi_monster/cerebral_crusher name = "cerebral crusher" @@ -82,7 +82,7 @@ healing_factor = 10 attacktext = "slammed" drop_items = list(/obj/random/psi/always_spawn, /obj/random/psi/always_spawn) - armor_divisor = 1.3 + armor_penetration = 30 /mob/living/carbon/superior_animal/psi_monster/wasonce/crimson_jelly name = "crimson jelly" @@ -104,9 +104,9 @@ real_mutator = TRUE lethal_to_captive = TRUE //We kill are captives knockdown_odds = 15 - armor = list(melee = 5, bullet = 2, energy = 1, bomb = 30, bio = 100, rad = 100) + armor = list(melee = 20, bullet = 10, energy = 5, bomb = 30, bio = 100, rad = 100) drop_items = list(/obj/random/psi/always_spawn, /obj/random/psi/weapons/always_spawn) - armor_divisor = 2.3 + armor_penetration = 50 /mob/living/carbon/superior_animal/psi_monster/wasonce/crimson_jelly/pitch_horror name = "pitch horror" @@ -119,7 +119,7 @@ health = 1250 * PSIMOB_HEALTH_MOD knockdown_odds = 30 drop_items = list(/obj/random/psi/always_spawn, /obj/random/psi/weapons/always_spawn, /obj/random/psi/always_spawn, /obj/random/psi/weapons/always_spawn) - armor_divisor = 4 + armor_penetration = 70 // King's Court. Special named psi mobs with better stats and custom voice lines, they are spawned whenever the king of the hound journey. /mob/living/carbon/superior_animal/psi_monster/flesh_behemoth/baron diff --git a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiMega.dm b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiMega.dm index d37eb7e472f..7e9d0b7f029 100644 --- a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiMega.dm +++ b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiMega.dm @@ -20,7 +20,7 @@ default_pixel_x = -16 default_pixel_y = 0 size_pixel_offset_x = -16 - armor_divisor = 4 + armor_penetration = 65 momento_mori = /obj/effect/decal/cleanable/psi_ash/king first_teleport_callout = "\the Dreaming King looses a terrible scream before journeying to nowhere, his words bellowing in rage, \"Only the king may wear the crown!\" The answering calls of his court echoing through the realm!" second_teleport_callout = "\the Dreaming King looses an agonized howl before journeying to nowhere, his words bellowing in rage, \"I will never die!\" The strongest of his court heard affirming his call!" diff --git a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiRobust.dm b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiRobust.dm index eebcb2773cd..f61e6827e1e 100644 --- a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiRobust.dm +++ b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiRobust.dm @@ -14,7 +14,7 @@ turns_per_move = 4 // Slow attacktext = "punched" momento_mori = /obj/effect/decal/cleanable/psi_ash/ponderous - armor_divisor = 3 + armor_penetration = 30 /mob/living/carbon/superior_animal/psi_monster/hovering_nightmare name = "hovering nightmare" @@ -27,7 +27,7 @@ health = 100 * PSIMOB_HEALTH_MOD melee_damage_lower = 20 melee_damage_upper = 25 - armor_divisor = 1.5 + armor_penetration = 25 emote_see = list("begins to melt, blackened skin sloughing down its form until it pulls taut.", "howls, \"Birth, flesh, death, decay, birth, flesh, death, decay!\"", "howls in agony!") turns_per_move = 10 leach_on_odds = 10 @@ -52,7 +52,7 @@ poison_per_bite = 3 poison_type = "xenotoxin" attacktext = "tongued" - armor_divisor = 2 + armor_penetration = 45 /mob/living/carbon/superior_animal/psi_monster/memory name = "memory" @@ -67,7 +67,7 @@ emote_see = list("screams, \"They did this they did this!\"", "howls, \"They could have done something!\"", "whispers, \"I could have done something...\"", "groans, \"Kill me, please...\"", "weeps, \"It will never end.\"") speak_chance = 15 attacktext = "stroked" - armor_divisor = 1 + armor_penetration = 15 leach_on_odds = 70 can_leach = TRUE steal_odds = 5 diff --git a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiTrash.dm b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiTrash.dm index e94c8303905..7f8ed9a9a10 100644 --- a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiTrash.dm +++ b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/PsiTrash.dm @@ -17,7 +17,7 @@ chameleon_skill = 1 speak_chance = 2 attacktext = "clawed" - armor_divisor = 1.2 + armor_penetration = 20 /mob/living/carbon/superior_animal/psi_monster/thought_melter name = "thought melter" @@ -33,7 +33,7 @@ speak_chance = 10 poison_per_bite = 1 attacktext = "caressed" - armor_divisor = 1.5 + armor_penetration = 30 /mob/living/carbon/superior_animal/psi_monster/pus_maggot name = "pus maggot" @@ -45,7 +45,7 @@ health = 110 * PSIMOB_HEALTH_MOD melee_damage_lower = 10 melee_damage_upper = 15 - armor_divisor = 1.2 + armor_penetration = 20 emote_see = list("drools acid onto the floor.", "wriggles in glee!", "rolls over!") var/burn_attack_text = "The pus maggot vomits up some acidic pus all over!" var/burn_attack_sound = 'sound/effects/splat.ogg' diff --git a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/corrupted_beings.dm b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/corrupted_beings.dm index f3887055c23..3fb24245018 100644 --- a/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/corrupted_beings.dm +++ b/code/modules/mob/living/carbon/superior_animal/psi_monsters/types/corrupted_beings.dm @@ -22,11 +22,11 @@ special_parts = list(/obj/item/animal_part/chimera_fang) - armor_divisor = 2 //Sharp bones + armor_penetration = 25 //Sharp bones //Good stats baseline in case admins dont edit these - armor = list(melee = 11, bullet = 3, energy = 11, bomb = 10, bio = 100, rad = 100, agony = 17) + armor = list(melee = 45, bullet = 15, energy = 45, bomb = 10, bio = 100, rad = 100, agony = 70) /mob/living/carbon/superior_animal/psi_monster/daskvey_follower @@ -54,7 +54,7 @@ colony_friend = FALSE friendly_to_colony = FALSE - armor_divisor = 1.25 + armor_penetration = 15 color = "#49D6F2" @@ -63,7 +63,7 @@ can_leave = TRUE //freedom //Same armor that they are warning - armor = list(melee = 7, bullet = 7, energy = 7, bomb = 30, bio = 100, rad = 50) + armor = list(melee = 35, bullet = 35, energy = 35, bomb = 30, bio = 100, rad = 50) /* Note about the deepmaints_bound! @@ -103,7 +103,7 @@ They are soully made and reflavoured to be for PVE. move_to_delay = 1 attacktext = "rends apart" - armor_divisor = 2.5 + armor_penetration = 35 color = null @@ -122,7 +122,7 @@ They are soully made and reflavoured to be for PVE. //Scale armor ref from CDDA //Dragons are weak to melee - source: Dnd //Ive never seen a wizard NOT nuke a dragon with fire ball - armor = list(melee = 10, bullet = 17, energy = 23, bomb = 40, bio = 100, rad = 100) + armor = list(melee = 40, bullet = 30, energy = 95, bomb = 40, bio = 100, rad = 100) /mob/living/carbon/superior_animal/psi_monster/daskvey_follower/daskvey/MiddleClickOn(mob/targetDD as mob) var/mob/living/carbon/superior_animal/psi_monster/daskvey_follower/daskvey/shooter = src //We're the shooter. @@ -200,7 +200,7 @@ They are soully made and reflavoured to be for PVE. drop_items = list(/obj/item/tool/sword/cleaver/cult/deepmaints) - armor_divisor = 1.25 + armor_penetration = 15 /mob/living/carbon/superior_animal/psi_monster/daskvey_follower/cleaver/deepmaints_bound name = "Wild Daskveyian Wall Breaker" @@ -236,7 +236,7 @@ They are soully made and reflavoured to be for PVE. comfy_range = 6 projectiletype = /obj/item/projectile/plasma/aoe/heat - armor_divisor = 1 + armor_penetration = 15 /mob/living/carbon/superior_animal/psi_monster/daskvey_follower/plasma/deepmaints_bound name = "Wild Daskveyian Plasma Caster" @@ -273,7 +273,7 @@ They are soully made and reflavoured to be for PVE. comfy_range = 6 projectiletype = /obj/item/projectile/beam - armor_divisor = 1 + armor_penetration = 15 /mob/living/carbon/superior_animal/psi_monster/daskvey_follower/laser/deepmaints_bound name = "Wild Daskveyian Las-Gunner" @@ -314,7 +314,7 @@ They are soully made and reflavoured to be for PVE. projectiletype = /obj/item/projectile/bullet/pistol_35/scrap mag_type = /obj/item/ammo_magazine/smg_35/empty - armor_divisor = 1 + armor_penetration = 15 /mob/living/carbon/superior_animal/psi_monster/daskvey_follower/smg/Initialize(mapload) . = ..() @@ -361,7 +361,7 @@ They are soully made and reflavoured to be for PVE. projectiletype = /obj/item/projectile/bullet/rifle_75/scrap mag_type = /obj/item/ammo_magazine/rifle_75/empty - armor_divisor = 1 + armor_penetration = 15 /mob/living/carbon/superior_animal/psi_monster/daskvey_follower/rifle/Initialize(mapload) . = ..() @@ -394,8 +394,8 @@ They are soully made and reflavoured to be for PVE. drop_items = list() - armor_divisor = 1 - armor = list(melee = 15, bullet = 15, energy = 3, bomb = 100, bio = 100, rad = 90) + armor_penetration = 1 + armor = list(melee = 60, bullet = 60, energy = 60, bomb = 100, bio = 100, rad = 90) var/knockdown_odds = 30 // BUMP! @@ -435,8 +435,8 @@ They are soully made and reflavoured to be for PVE. drop_items = list() - armor_divisor = 1.5 - armor = list(melee = 15, bullet = 15, energy = 3, bomb = 100, bio = 100, rad = 90) + armor_penetration = 30 + armor = list(melee = 60, bullet = 60, energy = 60, bomb = 100, bio = 100, rad = 90) /mob/living/carbon/superior_animal/psi_monster/daskvey_follower/halberd/deepmaints_bound name = "Wild Daskveyian Halberdier" @@ -463,7 +463,7 @@ They are soully made and reflavoured to be for PVE. drop_items = list() - armor_divisor = 1 + armor_penetration = 1 armor = list(melee = 0, bullet = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /mob/living/carbon/superior_animal/psi_monster/daskvey_follower/weakling/deepmaints_bound @@ -491,7 +491,7 @@ They are soully made and reflavoured to be for PVE. drop_items = list() - armor_divisor = 1 + armor_penetration = 1 armor = list(melee = 0, bullet = 0, energy = 0, bomb = 0, bio = 0, rad = 0) rounds_per_fire = 1 @@ -540,7 +540,7 @@ They are soully made and reflavoured to be for PVE. drop_items = list() - armor_divisor = 1 + armor_penetration = 1 armor = list(melee = 0, bullet = 0, energy = 0, bomb = 0, bio = 0, rad = 0) rounds_per_fire = 1 diff --git a/code/modules/mob/living/carbon/superior_animal/roach/roach.dm b/code/modules/mob/living/carbon/superior_animal/roach/roach.dm index fa7136f89db..6746e6325f5 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/roach.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/roach.dm @@ -15,7 +15,7 @@ get_stat_modifier = FALSE//NNNNNOPE, having hoard enemies get these has caused massive issues for balance. These should be limited to actual serious mobs from here on out. - armor = list(melee = 2, bullet = 0, energy = 0, bomb = 5, bio = 20, rad = 0, agony = 0) + armor = list(melee = 5, bullet = 0, energy = 0, bomb = 5, bio = 20, rad = 100, agony = 0) allowed_stat_modifiers = list( /datum/stat_modifier/mob/living/carbon/superior_animal/biosilicified = 26, diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/bluespace.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/bluespace.dm index bd769c4aa67..fc8a62bcd5f 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/bluespace.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/bluespace.dm @@ -15,7 +15,7 @@ */ price_tag = 1500 flash_resistances = 15 //We are the light - armor_divisor = 10 //We teleport past the armor + armor_penetration = 100 //We teleport past the armor //spawn_blacklisted = TRUE var/change_tele_to_mob = 25 diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/emp.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/emp.dm index 3eed2bdde52..8e86d27e03c 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/emp.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/emp.dm @@ -10,7 +10,7 @@ deathmessage = "pulses violently as it dies!" melee_damage_lower = 12 melee_damage_upper = 15 //Rare - armor_divisor = 4 + armor_penetration = 50 mob_size = MOB_MEDIUM meat_type = /obj/item/reagent_containers/food/snacks/meat/roachmeat/elektromagnetisch diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/fuhrer.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/fuhrer.dm index 3ac2829bda3..a36754fee29 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/fuhrer.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/fuhrer.dm @@ -23,7 +23,7 @@ flash_resistances = 5 //half stuns by flash, so we can still get up and be in the fight! armor = list(melee = 3, bullet = 1, energy = 0, bomb = 5, bio = 20, rad = 0, agony = 0) - armor_divisor = 1.25 + armor_penetration = 25 meat_type = /obj/item/reagent_containers/food/snacks/meat/roachmeat/fuhrer meat_amount = 6 diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/glowing.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/glowing.dm index 8ad78115f8e..63777d1fde0 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/glowing.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/glowing.dm @@ -14,7 +14,7 @@ meat_type = /obj/item/reagent_containers/food/snacks/meat/roachmeat/glowing - armor = list(melee = 8, bullet = 1, energy = 1, bomb = 5, bio = 20, rad = 100, agony = 0) + armor = list(melee = 5, bullet = 0, energy = 0, bomb = 5, bio = 20, rad = 100, agony = 0) contaminant_immunity = TRUE toxin_immune = TRUE @@ -22,7 +22,7 @@ knockdown_odds = 3 //Well we still can knockdown we dont tend to over other affects melee_damage_lower = 5 melee_damage_upper = 7 //Weaker than hunter - armor_divisor = 1 + armor_penetration = 5 /mob/living/carbon/superior_animal/roach/glowing/UnarmedAttack(var/atom/A, var/proximity) . = ..() diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/hunter.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/hunter.dm index ec87d6c6bf1..dbf740b5183 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/hunter.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/hunter.dm @@ -16,4 +16,4 @@ meat_type = /obj/item/reagent_containers/food/snacks/meat/roachmeat/jager meat_amount = 3 - armor_divisor = 1.1 + armor_penetration = 15 diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/kaiser.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/kaiser.dm index eeaef752873..1d72520269d 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/kaiser.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/kaiser.dm @@ -19,7 +19,7 @@ Has ability of every roach. var/datum/reagents/gas_sac - armor = list(melee = 10, bullet = 8, energy = 6, bomb = 50, bio = 20, rad = 100, agony = 0) + armor = list(melee = 40, bullet = 35, energy = 25, bomb = 50, bio = 20, rad = 100, agony = 0) knockdown_odds = 10 melee_damage_lower = 20 @@ -30,7 +30,7 @@ Has ability of every roach. mouse_opacity = MOUSE_OPACITY_OPAQUE // Easier to click on in melee, they're giant targets anyway flash_resistances = 9.9 // were not fully flash proof but almost... - armor_divisor = 4 + armor_penetration = 75 var/distress_call_stage = 3 diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/nanites.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/nanites.dm index 822d43cbab6..6ca25fe0546 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/nanites.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/nanites.dm @@ -22,7 +22,7 @@ min_air_pressure = 0 min_bodytemperature = 0 - armor_divisor = 2 + armor_penetration = 50 never_stimulate_air = TRUE var/list/nanite_swarms = list() diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/tank.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/tank.dm index 53eb5075798..5249dfd2f87 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/tank.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/tank.dm @@ -13,8 +13,8 @@ knockdown_odds = 3 get_stat_modifier = TRUE //we're big boys, we get a little mod as a treat. - armor = list(melee = 3, bullet = 1, energy = 0, bomb = 5, bio = 20, rad = 0, agony = 0) - armor_divisor = 1.2 + armor = list(melee = 15, bullet = 10, energy = 10, bomb = 5, bio = 20, rad = 0, agony = 0) + armor_penetration = 15 // Panzers won't slip over on water or soap. /mob/living/carbon/superior_animal/roach/tank/slip(slipped_on,stun_duration=8) diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/tazntz.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/tazntz.dm index afc8de1ec08..0da2fe34efe 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/tazntz.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/tazntz.dm @@ -14,8 +14,8 @@ melee_damage_lower = 8 melee_damage_upper = 12 - armor = list(melee = 3, bullet = 2, energy = 1, bomb = 5, bio = 20, rad = 0, agony = 0) - armor_divisor = 1.3 + armor = list(melee = 15, bullet = 10, energy = 5, bomb = 5, bio = 20, rad = 0, agony = 0) + armor_penetration = 35 // frogs dont slip over on water or soap. /mob/living/carbon/superior_animal/roach/tazntz/slip(slipped_on,stun_duration=8) diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/toxic.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/toxic.dm index ea127e5751e..9d90e2f0247 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/toxic.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/toxic.dm @@ -13,7 +13,7 @@ knockdown_odds = 3 melee_damage_lower = 3 melee_damage_upper = 7 //Weaker than hunter - armor_divisor = 1.3 + armor_penetration = 35 /mob/living/carbon/superior_animal/roach/toxic/UnarmedAttack(atom/A, proximity) . = ..() diff --git a/code/modules/mob/living/carbon/superior_animal/robots/robot.dm b/code/modules/mob/living/carbon/superior_animal/robots/robot.dm index 4a42ac04746..84ab81e3f6e 100644 --- a/code/modules/mob/living/carbon/superior_animal/robots/robot.dm +++ b/code/modules/mob/living/carbon/superior_animal/robots/robot.dm @@ -15,7 +15,7 @@ mob_classification = CLASSIFICATION_SYNTHETIC projectiletype = /obj/item/projectile/beam/drone - armor = list(melee = 7, bullet = 5, energy = 8, bomb = 30, bio = 100, rad = 100) //We want to be gunned down, not lasered + armor = list(melee = 30, bullet = 20, energy = 35, bomb = 30, bio = 100, rad = 100) //We want to be gunned down, not lasered do_gibs = FALSE diff --git a/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/bishop.dm b/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/bishop.dm index 0d0cb236732..29ea5578571 100644 --- a/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/bishop.dm +++ b/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/bishop.dm @@ -21,5 +21,5 @@ projectiletype = /obj/item/projectile/plasma/aoe/heat/strong drop1 = /obj/item/book/ritual/cruciform/priest drop2 = /obj/item/stack/material/gold/random - armor = list(melee = 3, bullet = 3, energy = 2, bomb = 5, bio = 100, rad = 100, agony = 100) + armor = list(melee = 15, bullet = 15, energy = 10, bomb = 5, bio = 100, rad = 100, agony = 100) range_telegraph = "starts to hum ominously while staring at" diff --git a/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/knight.dm b/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/knight.dm index eaacfefe88a..e015111ccd0 100644 --- a/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/knight.dm +++ b/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/knight.dm @@ -19,4 +19,4 @@ meat_type = /obj/item/stack/material/platinum/random drop1 = /obj/item/tool/sword/nt/longsword drop2 = /obj/item/shield/riot/nt - armor = list(melee = 12, bullet = 12, energy = 2, bomb = 15, bio = 100, rad = 100, agony = 100) + armor = list(melee = 50, bullet = 50, energy = 10, bomb = 15, bio = 100, rad = 100, agony = 100) diff --git a/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/pawn.dm b/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/pawn.dm index 360a0b5e1b8..ce4b49dbc9d 100644 --- a/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/pawn.dm +++ b/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/pawn.dm @@ -18,4 +18,4 @@ meat_type = /obj/item/stack/material/silver/random drop1 = /obj/item/tool/sword/nt/longsword drop2 = /obj/item/tool/sword/nt/shortsword - armor = list(melee = 3, bullet = 3, energy = 2, bomb = 5, bio = 100, rad = 100, agony = 100) + armor = list(melee = 15, bullet = 15, energy = 10, bomb = 5, bio = 100, rad = 100, agony = 100) diff --git a/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/rook.dm b/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/rook.dm index b4e19ba8a2b..27dac37cb4d 100644 --- a/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/rook.dm +++ b/code/modules/mob/living/carbon/superior_animal/robots/subtype/church/types/rook.dm @@ -17,5 +17,5 @@ meat_type = /obj/item/stack/material/gold/random drop1 = /obj/item/stack/material/gold/random drop2 = /obj/item/book/ritual/cruciform - armor = list(melee = 18, bullet = 6, energy = 5, bomb = 30, bio = 100, rad = 100, agony = 100) + armor = list(melee = 75, bullet = 25, energy = 20, bomb = 30, bio = 100, rad = 100, agony = 100) target_dummy = TRUE diff --git a/code/modules/mob/living/carbon/superior_animal/robots/subtype/greyson/types/mechs.dm b/code/modules/mob/living/carbon/superior_animal/robots/subtype/greyson/types/mechs.dm index b04fbc8fe4a..69705c0aa0a 100644 --- a/code/modules/mob/living/carbon/superior_animal/robots/subtype/greyson/types/mechs.dm +++ b/code/modules/mob/living/carbon/superior_animal/robots/subtype/greyson/types/mechs.dm @@ -114,7 +114,7 @@ melee_damage_lower = 50 melee_damage_upper = 55 attack_sound = 'sound/xenomorph/alien_footstep_charge1.ogg' - armor = list(melee = 7, bullet = 7, energy = 7, bomb = 30, bio = 100, rad = 100) + armor = list(melee = 30, bullet = 30, energy = 30, bomb = 30, bio = 100, rad = 100) /mob/living/carbon/superior_animal/robot/greyson/synthetic/ripley/phazon/Initialize(mapload) diff --git a/code/modules/mob/living/carbon/superior_animal/robots/subtype/greyson/types/turrets.dm b/code/modules/mob/living/carbon/superior_animal/robots/subtype/greyson/types/turrets.dm index bbb019f8ffe..0a8f01ef2a4 100644 --- a/code/modules/mob/living/carbon/superior_animal/robots/subtype/greyson/types/turrets.dm +++ b/code/modules/mob/living/carbon/superior_animal/robots/subtype/greyson/types/turrets.dm @@ -31,7 +31,7 @@ melee_damage_lower = 12 melee_damage_upper = 17 destroy_surroundings = FALSE - armor = list(melee = 8, bullet = 6, energy = 10, bomb = 60, bio = 100, rad = 100) //We want to be gunned down, not lasered + armor = list(melee = 35, bullet = 25, energy = 40, bomb = 60, bio = 100, rad = 100) //We want to be gunned down, not lasered times_to_get_stat_modifiers = 2 //two prefixes @@ -142,7 +142,7 @@ mag_type = /obj/item/stalker_fuel_rod/depleted mags_left = 2 - armor = list(melee = 8, bullet = 12, energy = 20, bomb = 100, bio = 100, rad = 100) //if people want to melee the stalker that explodes apon death, power to them + armor = list(melee = 35, bullet = 50, energy = 80, bomb = 100, bio = 100, rad = 100) //if people want to melee the stalker that explodes apon death, power to them get_stat_modifier = FALSE // lol no diff --git a/code/modules/mob/living/carbon/superior_animal/termite/termite.dm b/code/modules/mob/living/carbon/superior_animal/termite/termite.dm index 9a920f7a434..570d36e774d 100644 --- a/code/modules/mob/living/carbon/superior_animal/termite/termite.dm +++ b/code/modules/mob/living/carbon/superior_animal/termite/termite.dm @@ -27,7 +27,7 @@ GLOBAL_LIST_INIT(termites_special, list(/mob/living/carbon/superior_animal/termi fleshcolor = "#7C90B8" bloodcolor = "#7C90B8" - armor_divisor = 1 + armor_penetration = 5 destroy_surroundings = TRUE friendly_to_colony = FALSE @@ -44,7 +44,7 @@ GLOBAL_LIST_INIT(termites_special, list(/mob/living/carbon/superior_animal/termi //Controller that spawns the termites var/datum/termite_controller/controller - get_stat_modifier = FALSE + get_stat_modifier = TRUE allowed_stat_modifiers = list( /datum/stat_modifier/mob/living/carbon/superior_animal/durable = 20, @@ -162,7 +162,7 @@ GLOBAL_LIST_INIT(termites_special, list(/mob/living/carbon/superior_animal/termi melee_damage_upper = TERMITE_DMG_MED //Armor related variables - armor = list(melee = 5, bullet = 3, energy = 3, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 15, bullet = 20, energy = 20, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/iron @@ -188,7 +188,7 @@ GLOBAL_LIST_INIT(termites_special, list(/mob/living/carbon/superior_animal/termi melee_damage_upper = TERMITE_DMG_HIGH //Armor related variables - armor = list(melee = 8, bullet = 5, energy = 2, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 20, bullet = 30, energy = 10, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/silver @@ -217,7 +217,7 @@ GLOBAL_LIST_INIT(termites_special, list(/mob/living/carbon/superior_animal/termi melee_damage_upper = TERMITE_DMG_LOW //Armor related variables - armor = list(melee = 6, bullet = 3, energy = 2, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 30, bullet = 20, energy = 10, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/uranium @@ -243,7 +243,7 @@ GLOBAL_LIST_INIT(termites_special, list(/mob/living/carbon/superior_animal/termi melee_damage_upper = TERMITE_DMG_MED //Armor related variables - armor = list(melee = 5, bullet = 3, energy = 6, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 10, bullet = 20, energy = 25, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/plasma @@ -255,7 +255,7 @@ GLOBAL_LIST_INIT(termites_special, list(/mob/living/carbon/superior_animal/termi icon = 'icons/mob/mobs-termite.dmi' // Sprites made by Polyushko#0323 icon_state = "koroleva_termite" icon_dead = "koroleva_gore" - armor_divisor = 1.5 + armor_penetration = 35 get_stat_modifier = TRUE //Health related variables @@ -271,7 +271,7 @@ GLOBAL_LIST_INIT(termites_special, list(/mob/living/carbon/superior_animal/termi melee_damage_upper = TERMITE_DMG_HIGH //Armor related variables - armor = list(melee = 6, bullet = 4, energy = 5, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 15, bullet = 20, energy = 25, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/diamond @@ -287,7 +287,7 @@ GLOBAL_LIST_INIT(termites_special, list(/mob/living/carbon/superior_animal/termi projectiletype = /obj/item/projectile/bullet/spear contaminant_immunity = TRUE get_stat_modifier = TRUE - armor_divisor = 1.5 + armor_penetration = 35 //Health related variables maxHealth = TERMITE_HEALTH_HIGH @@ -304,7 +304,7 @@ GLOBAL_LIST_INIT(termites_special, list(/mob/living/carbon/superior_animal/termi ranged = TRUE //Armor related variables - armor = list(melee = 12, bullet = 4, energy = 5, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 30, bullet = 20, energy = 15, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/osmium diff --git a/code/modules/mob/living/carbon/superior_animal/termite/termite_no_despawn.dm b/code/modules/mob/living/carbon/superior_animal/termite/termite_no_despawn.dm index aa8dcb8d42f..bdeb0b2e749 100644 --- a/code/modules/mob/living/carbon/superior_animal/termite/termite_no_despawn.dm +++ b/code/modules/mob/living/carbon/superior_animal/termite/termite_no_despawn.dm @@ -17,7 +17,7 @@ faction = "wurm" fire_verb = "spits" see_in_dark = 10 - armor_divisor = 1.1 + armor_penetration = 15 density = 0 // Prevents friendly fire between themselves, projectiles will go over them, making them also harder to target. fleshcolor = "#7C90B8" @@ -33,7 +33,7 @@ range_telegraph = "chitin begins to crack and spikes emerge, as it prepares to launch them at" - get_stat_modifier = FALSE + get_stat_modifier = TRUE allowed_stat_modifiers = list( /datum/stat_modifier/mob/living/carbon/superior_animal/durable = 20, @@ -94,7 +94,7 @@ melee_damage_upper = TERMITE_DMG_MED //Armor related variables - armor = list(melee = 5, bullet = 3, energy = 3, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 20, bullet = 35, energy = 35, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/iron @@ -121,7 +121,7 @@ melee_damage_upper = TERMITE_DMG_HIGH //Armor related variables - armor = list(melee = 8, bullet = 5, energy = 2, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 35, bullet = 59, energy = 20, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/silver @@ -151,7 +151,7 @@ melee_damage_upper = TERMITE_DMG_LOW //Armor related variables - armor = list(melee = 6, bullet = 3, energy = 2, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 50, bullet = 35, energy = 20, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/uranium @@ -178,7 +178,7 @@ melee_damage_upper = TERMITE_DMG_MED //Armor related variables - armor = list(melee = 5, bullet = 3, energy = 6, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 20, bullet = 30, energy = 50, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/plasma @@ -190,7 +190,7 @@ icon = 'icons/mob/mobs-termite.dmi' // Sprites made by Polyushko#0323 icon_state = "koroleva_termite" icon_dead = "koroleva_gore" - armor_divisor = 1.3 + armor_penetration = 35 get_stat_modifier = TRUE inherent_mutations = list(MUTATION_DEAF, MUTATION_RAND_UNSTABLE, MUTATION_GIGANTISM, MUTATION_PROT_MILK, MUTATION_TERMITE_FRIEND) @@ -207,7 +207,7 @@ melee_damage_upper = TERMITE_DMG_HIGH //Armor related variables - armor = list(melee = 6, bullet = 4, energy = 5, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 25, bullet = 40, energy = 50, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/diamond @@ -223,7 +223,7 @@ projectiletype = /obj/item/projectile/bullet/spear contaminant_immunity = TRUE get_stat_modifier = TRUE - armor_divisor = 1.5 + armor_penetration = 35 inherent_mutations = list(MUTATION_DEAF, MUTATION_RAND_UNSTABLE, MUTATION_GIGANTISM, MUTATION_SCREAMING) //Health related variables @@ -241,7 +241,7 @@ ranged = TRUE //Armor related variables - armor = list(melee = 12, bullet = 4, energy = 5, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 50, bullet = 30, energy = 40, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/osmium diff --git a/code/modules/mob/living/carbon/superior_animal/vox/thrown_items.dm b/code/modules/mob/living/carbon/superior_animal/vox/thrown_items.dm index e935daa61f4..03128bdc885 100644 --- a/code/modules/mob/living/carbon/superior_animal/vox/thrown_items.dm +++ b/code/modules/mob/living/carbon/superior_animal/vox/thrown_items.dm @@ -2,7 +2,7 @@ name = "sharp stone" damage_types = list(BRUTE = 16) agony = 12 - armor_divisor = 1 + armor_penetration = 5 step_delay = 1.15 check_armour = ARMOR_MELEE can_ricochet = FALSE @@ -15,7 +15,7 @@ name = "rock fragements" damage_types = list(BRUTE = 24) //Same as a .40 agony = 15 - armor_divisor = 1.25 //primitive. + armor_penetration = 25 //primitive. step_delay = 1 check_armour = ARMOR_MELEE can_ricochet = FALSE diff --git a/code/modules/mob/living/carbon/superior_animal/vox/types/vox_types.dm b/code/modules/mob/living/carbon/superior_animal/vox/types/vox_types.dm index 91f4c31ae30..7b3b6aed55a 100644 --- a/code/modules/mob/living/carbon/superior_animal/vox/types/vox_types.dm +++ b/code/modules/mob/living/carbon/superior_animal/vox/types/vox_types.dm @@ -44,10 +44,10 @@ reload_message = "picks up a rock!" - armor = list(melee = 8, bullet = 5, energy = 0, bomb = 50, bio = 0, rad = 0) + armor = list(melee = 20, bullet = 15, energy = 5, bomb = 50, bio = 0, rad = 0) ranged = FALSE - armor_divisor = 1.25 + armor_penetration = 25 /mob/living/carbon/superior_animal/vox/hider name = "Inuwa kisa" @@ -94,7 +94,7 @@ maxHealth = 90 * VOXBIRD_HEALTH_MOD health = 90 * VOXBIRD_HEALTH_MOD - armor_divisor = 1.25 + armor_penetration = 35 /mob/living/carbon/superior_animal/vox/weak name = "Yaro mafarauci" @@ -122,7 +122,7 @@ melee_damage_upper = 35 knock_over_odds = 25 - armor_divisor = 1.25 + armor_penetration = 15 /mob/living/carbon/superior_animal/vox/scout name = "karfe kafafu" @@ -136,7 +136,7 @@ knock_over_odds = 30 - armor = list(melee = 10, bullet = 8, energy = 2, bomb = 60, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 20, bomb = 60, bio = 0, rad = 0) ranged = FALSE can_burrow = TRUE diff --git a/code/modules/mob/living/carbon/superior_animal/vox/types/wasp.dm b/code/modules/mob/living/carbon/superior_animal/vox/types/wasp.dm index ee74afa676c..39c668d4e31 100644 --- a/code/modules/mob/living/carbon/superior_animal/vox/types/wasp.dm +++ b/code/modules/mob/living/carbon/superior_animal/vox/types/wasp.dm @@ -27,7 +27,7 @@ has_special_parts = FALSE - armor = list(melee = 2, bullet = 3, energy = 1, bomb = 20, bio = 20, rad = 0) + armor = list(melee = 10, bullet = 15, energy = 5, bomb = 20, bio = 20, rad = 0) get_stat_modifier = TRUE diff --git a/code/modules/mob/living/carbon/superior_animal/vox/vox.dm b/code/modules/mob/living/carbon/superior_animal/vox/vox.dm index d6c328fd16a..7b45ef5f2da 100644 --- a/code/modules/mob/living/carbon/superior_animal/vox/vox.dm +++ b/code/modules/mob/living/carbon/superior_animal/vox/vox.dm @@ -24,12 +24,12 @@ has_special_parts = TRUE special_parts = list(/obj/item/animal_part/wolf_tooth) - armor = list(melee = 2, bullet = 1, energy = 0, bomb = 20, bio = 20, rad = 0) + armor = list(melee = 10, bullet = 15, energy = 5, bomb = 20, bio = 20, rad = 0) get_stat_modifier = TRUE melee_sharp = TRUE //Claws - armor_divisor = 1.25 + armor_penetration = 1.25 allowed_stat_modifiers = list( /datum/stat_modifier/mob/living/carbon/superior_animal/armor/mult/positive/low = 15, diff --git a/code/modules/mob/living/carbon/superior_animal/wurms/types/wurm.dm b/code/modules/mob/living/carbon/superior_animal/wurms/types/wurm.dm index 4d43e552716..c6d740f4855 100644 --- a/code/modules/mob/living/carbon/superior_animal/wurms/types/wurm.dm +++ b/code/modules/mob/living/carbon/superior_animal/wurms/types/wurm.dm @@ -153,7 +153,7 @@ GLOBAL_LIST_INIT(wurms_special, list(/mob/living/carbon/superior_animal/wurm/osm melee_damage_upper = WURM_DMG_MED //Armor related variables - armor = list(melee = 5, bullet = 8, energy = 8, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 10, bullet = 15, energy = 15, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/iron @@ -179,7 +179,7 @@ GLOBAL_LIST_INIT(wurms_special, list(/mob/living/carbon/superior_animal/wurm/osm melee_damage_upper = WURM_DMG_LOW //Armor related variables - armor = list(melee = 12, bullet = 8, energy = 5, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 25, bullet = 20, energy = 10, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/silver @@ -205,7 +205,7 @@ GLOBAL_LIST_INIT(wurms_special, list(/mob/living/carbon/superior_animal/wurm/osm melee_damage_upper = WURM_DMG_MED //Armor related variables - armor = list(melee = 8, bullet = 14, energy = 5, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 15, bullet = 30, energy = 10, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/osmium @@ -232,7 +232,7 @@ GLOBAL_LIST_INIT(wurms_special, list(/mob/living/carbon/superior_animal/wurm/osm melee_damage_upper = WURM_DMG_MED //Armor related variables - armor = list(melee = 5, bullet = 8, energy = 12, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 20, bullet = 20, energy = 25, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/osmium @@ -261,7 +261,7 @@ GLOBAL_LIST_INIT(wurms_special, list(/mob/living/carbon/superior_animal/wurm/osm melee_damage_upper = WURM_DMG_MED //Armor related variables - armor = list(melee = 5, bullet = 8, energy = 12, bomb = 50, bio = 100, rad = 0) + armor = list(melee = 20, bullet = 20, energy = 25, bomb = 50, bio = 100, rad = 0) //Loot related variables ore = /obj/item/stack/ore/iron // given something just in case. diff --git a/code/modules/mob/living/carbon/superior_animal/xenomorph/drone.dm b/code/modules/mob/living/carbon/superior_animal/xenomorph/drone.dm index 52e537eab1e..26dc9969cf0 100644 --- a/code/modules/mob/living/carbon/superior_animal/xenomorph/drone.dm +++ b/code/modules/mob/living/carbon/superior_animal/xenomorph/drone.dm @@ -16,8 +16,8 @@ var/datum/xenomorph/xenomorph_ai mob_size = MOB_LARGE viewRange = 8 - armor = list(melee = 7, bullet = 7, energy = 1, bomb = 30, bio = 100, rad = 100) - armor_divisor = 1.25 + armor = list(melee = 30, bullet = 30, energy = 5, bomb = 30, bio = 100, rad = 100) + armor_penetration = 15 maxHealth = 30 health = 30 @@ -87,7 +87,7 @@ var/datum/xenomorph/xenomorph_ai melee_sharp = TRUE //claws - armor_divisor = 1.25 + armor_penetration = 15 /mob/living/carbon/superior_animal/xenomorph/slip(slipped_on,stun_duration=8) diff --git a/code/modules/mob/living/carbon/superior_animal/xenomorph/types/XenoImpressive.dm b/code/modules/mob/living/carbon/superior_animal/xenomorph/types/XenoImpressive.dm index 510bc904abf..238917594dc 100644 --- a/code/modules/mob/living/carbon/superior_animal/xenomorph/types/XenoImpressive.dm +++ b/code/modules/mob/living/carbon/superior_animal/xenomorph/types/XenoImpressive.dm @@ -9,7 +9,7 @@ health = 250 attack_sound = list('sound/xenomorph/alien_footstep_charge1.ogg', 'sound/xenomorph/alien_footstep_charge2.ogg', 'sound/xenomorph/alien_footstep_charge3.ogg') - armor = list(melee = 8, bullet = 8, energy = 3, bomb = 30, bio = 100, rad = 100) + armor = list(melee = 35, bullet = 35, energy = 15, bomb = 30, bio = 100, rad = 100) melee_damage_lower = 30 melee_damage_upper = 35 @@ -109,7 +109,7 @@ /datum/stat_modifier/mob/living/speed/flat/positive/low = 1 ) - armor = list(melee = 7, bullet = 7, energy = 3, bomb = 30, bio = 100, rad = 100) + armor = list(melee = 30, bullet = 30, energy = 15, bomb = 30, bio = 100, rad = 100) melee_damage_lower = 30 melee_damage_upper = 35 diff --git a/code/modules/mob/living/carbon/superior_animal/xenomorph/types/XenoMega.dm b/code/modules/mob/living/carbon/superior_animal/xenomorph/types/XenoMega.dm index adbfce086a7..b9b08c99726 100644 --- a/code/modules/mob/living/carbon/superior_animal/xenomorph/types/XenoMega.dm +++ b/code/modules/mob/living/carbon/superior_animal/xenomorph/types/XenoMega.dm @@ -12,7 +12,7 @@ melee_damage_lower = 40 melee_damage_upper = 50 - armor = list(melee = 7, bullet = 8, energy = 1, bomb = 30, bio = 100, rad = 100) + armor = list(melee = 30, bullet = 35, energy = 5, bomb = 30, bio = 100, rad = 100) allowed_stat_modifiers = list( /datum/stat_modifier/mob/living/carbon/superior_animal/padded/xeno = 36, @@ -40,7 +40,7 @@ health = 1500 poison_per_bite = 10 - armor = list(melee = 10, bullet = 11, energy = 3, bomb = 30, bio = 100, rad = 100) + armor = list(melee = 40, bullet = 45, energy = 15, bomb = 30, bio = 100, rad = 100) melee_damage_lower = 40 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index a88bece1193..c130ca57422 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -1,8 +1,16 @@ -#define ARMOR_HALLOS_COEFFICIENT 0.1 +#define ARMOR_HALLOS_COEFFICIENT 0.4 +#define ARMOR_GDR_COEFFICIENT 0.1 + +#define ABSOLUTE_ARMOR_EFFICIENCY 0 +//Efficiency of ABSOLUTE (POST bulk combat update) armour, not tested thoroughtly but value of 5 with RAE of 0 should give similiar experience to post bulk combat update + +#define RELATIVE_ARMOR_EFFICIENCY 1 +//Efficiency of RELATIVE (PRE bulk combat update) armour, value of 1 is how it was with AAE of 0, to turn it off set valute to 0 (It will still have the armour breaking behaviour) //This calculation replaces old run_armor_check in favor of more complex and better system //If you need to do something else with armor - just use getarmor() proc and do with those numbers all you want //Random absorb system was a cancer, and was removed from all across the codebase. Don't recreate it. Clockrigger 2019 + #define ARMOR_MESSAGE_COOLDOWN 0.5 SECONDS /mob/living/var/last_armor_message @@ -16,55 +24,169 @@ else show_message(msg1, 1) -/mob/living/proc/damage_through_armor(damage = 0, damagetype = BRUTE, def_zone, attack_flag = ARMOR_MELEE, armor_divisor = 0, used_weapon, sharp = FALSE, edge = FALSE, wounding_multiplier, list/dmg_types = list(), return_continuation = FALSE, dir_mult = 1) +/mob/living/proc/damage_through_armor(// damage + damagetype seems to be some old system of handling damage, rather than doing it throught dmg_types (a list) + damage = 0, + damagetype = BRUTE, + def_zone = null, + attack_flag = ARMOR_MELEE, + armor_pen = 0, + used_weapon = null, + sharp = FALSE, + edge = FALSE, + wounding_multiplier = 1, + list/dmg_types = list(), + return_continuation = FALSE, + dir_mult = 1, + post_pen_mult = 1 + ) + + if(armor_pen <= 0) + armor_pen = 0.1 // if HYBRID armour system were to be chosen armour penetration of 0 could fuck up some calculations, negative one ... well I am expecting out of artists + log_debug("[used_weapon] applied damage to [name] with a nonpositive armor penetration !!") + if(damage) // If damage is defined, we add it to the list if(!dmg_types[damagetype]) dmg_types += damagetype dmg_types[damagetype] += damage - - if(armor_divisor <= 0) - armor_divisor = 0.001 - log_debug("[used_weapon] applied damage to [name] with a nonpositive armor divisor") - var/total_dmg = 0 - var/dealt_damage = 0 - for(var/dmg_type in dmg_types) total_dmg += dmg_types[dmg_type] if(!total_dmg) return FALSE + + //Used for simple/super mobs do to their armor being checked twice + var/armor_times_mod = 1 + + if(istype(src,/mob/living/simple_animal/) || istype(src,/mob/living/carbon/superior_animal/)) + armor_times_mod = 0.5 + + //GDR - guaranteed damage reduction. It's a value that deducted from damage before all calculations + var/armor = getarmor(def_zone, attack_flag) + var/guaranteed_damage_red = armor * ARMOR_GDR_COEFFICIENT + var/armor_effectiveness = max(0, ((armor * armor_times_mod) - armor_pen) * RELATIVE_ARMOR_EFFICIENCY) + var/absolute_armor = max(0, ((((armor+1) * armor_times_mod) - armor_pen) * ABSOLUTE_ARMOR_EFFICIENCY) / armor_pen) + + var/ablative_armor = getarmorablative(def_zone, attack_flag) * (100 - armor_penetration) / 100 + + var/final_damage = 0 //final summary of damage after all the calculations, for armour message + for(var/dmg_type in dmg_types) + var/dmg = dmg_types[dmg_type] + if(dmg) + if(armor_effectiveness == 0)//No armor? Damage as usual + apply_damage(dmg * post_pen_mult, dmg_type, def_zone, 1, wounding_multiplier, sharp, edge) + if(ishuman(src) && def_zone) + var/mob/living/carbon/human/H = src + var/obj/item/organ/external/o = H.get_organ(def_zone) + if (o && o.status & ORGAN_SPLINTED && dmg >= 20) + visible_message(SPAN_WARNING("The splints break off [src] after being hit!"), + SPAN_WARNING("Your splints break off after being hit!")) + o.status &= ~ORGAN_SPLINTED + //Here we split damage in two parts, where armor value will determine how much damage will get through + else + + //Pain part of the damage, meaning that it is the pain caused by brute/burn/etc, that simulates impact from armor absorbtion + //For balance purposes, it's lowered by ARMOR_HALLOS_COEFFICIENT + if(!(dmg_type == HALLOSS)) + var/agony_gamage = max(0,round( ( dmg * armor_effectiveness * ARMOR_HALLOS_COEFFICIENT * clamp((get_specific_organ_efficiency(OP_NERVE, def_zone) / 100), 0.5, 1.5) / 100) - absolute_armor * ARMOR_HALLOS_COEFFICIENT)) + adjustHalLoss(agony_gamage) + + //Actual part of the damage that passed through armor + var/actual_damage = max(0,round ( ( dmg * ( 100 - armor_effectiveness ) ) / 100 - absolute_armor)) + message_admins("actual_damage=[actual_damage]") + apply_damage(actual_damage * post_pen_mult, dmg_type, def_zone, used_weapon, sharp, edge) + if(ishuman(src) && def_zone && actual_damage >= 20) + var/mob/living/carbon/human/H = src + var/obj/item/organ/external/o = H.get_organ(def_zone) + if (o && o.status & ORGAN_SPLINTED) + visible_message(SPAN_WARNING("The splints break off [src] after being hit!"), + SPAN_WARNING("Your splints break off after being hit!")) + o.status &= ~ORGAN_SPLINTED + final_damage+=actual_damage + + + + + + + var/effective_armor = (final_damage / total_dmg) * 100 + + + //Feedback + //In order to show both target and everyone around that armor is actually working, we are going to send message for both of them + //Goon/tg chat should take care of spam issue on this one + switch(effective_armor) + if(90 to INFINITY) + armor_message(SPAN_NOTICE("[src] armor absorbs the blow!"), + SPAN_NOTICE("Your armor absorbed the impact!")) + if(74 to 90) + armor_message(SPAN_NOTICE("[src] armor easily absorbs the blow!"), + SPAN_NOTICE("Your armor reduced the impact greatly!")) + if(49 to 74) + armor_message(SPAN_NOTICE("[src] armor absorbs most of the damage!"), + SPAN_NOTICE("Your armor protects you from the impact!")) + if(-INFINITY to 24) + armor_message(SPAN_NOTICE("[src] armor reduces the impact by a little."), + SPAN_NOTICE("Your armor reduced the impact a little.")) + + message_admins("total_dmg=[total_dmg] | final_dmg=[final_damage] | armor_effectiveness=[armor_effectiveness] | absolute_armor=[absolute_armor]") + + + + + + + + + + + + + + +/* + + if(istype(src,/mob/living/simple_animal/) || istype(src,/mob/living/carbon/superior_animal/)) //overpen damage, relative armour not modified by armour effectiveness TODO fix it ??? + var/mob_brute_armor = src.getarmor(def_zone, "bullet") //All brute over-pen checks bullet rather then melee for simple mobs to keep melee viable + var/mob_laser_armor = src.getarmor(def_zone, "energy") + var/mob_agony_armor = src.getarmor(def_zone, "agony") + + //message_admins("mob_brute_armor = [mob_brute_armor]!") + //message_admins("mob_laser_armor = [mob_laser_armor]!") + //message_admins("mob_agony_armor = [mob_agony_armor]!") + + //We take the armor pen and baseline armor for calulating the armor pen rather then the reduction so that we get correct values + var/burns_armor_overpenetration = armor_pen - mob_laser_armor + var/brute_armor_overpenetration = armor_pen - mob_brute_armor + + //This is put here rather then above over-pen as we want to keep over-pen being with baseline armor rather then halfed. + mob_brute_armor = mob_brute_armor * armor_times_mod + mob_laser_armor = mob_laser_armor * armor_times_mod + + //message_admins("brute_armor_overpenetration = [brute_armor_overpenetration]!") + //message_admins("burns_armor_overpenetration = [burns_armor_overpenetration]!") + + //message_admins("overpen_dmg = [overpen_dmg]!") -/* shelving this for now. don't wanna deal with it - CDB if(damagetype == HALLOSS) - //First we get the nervs! - effective_damage = round(effective_damage * clamp((get_specific_organ_efficiency(OP_NERVE, def_zone) / 100), 0.5, 1.5)) - var/pain_armor = max(0, (src.getarmor(def_zone, "bullet") + src.getarmor(def_zone, "melee") - armour_pen))//All brute over-pen checks bullet rather then melee for simple mobs to keep melee viable - var/pain_no_matter_what = (effective_damage * 0.15) //we deal 15% of are pain, this is to stop rubbers being *completely* uses with basic armor - Its not perfect in melee - effective_damage = max(pain_no_matter_what, (effective_damage - pain_armor)) - if(ishuman(src)) - var/mob/living/carbon/human/victim = src - if(prob(25 + (effective_damage * 2))) - if(!victim.stat && !(victim.has_shield())) - if(victim.headcheck(def_zone)) - //Harder to score a stun but if you do it lasts a bit longer - if(prob(effective_damage)) - visible_message(SPAN_DANGER("[src] [victim.form.knockout_message]")) - apply_effect(5, PARALYZE, getarmor(def_zone, ARMOR_MELEE) ) - else - //Easier to score a stun but lasts less time - if(prob(effective_damage + 10)) - visible_message(SPAN_DANGER("[src] has been knocked down!")) - apply_effect(1, WEAKEN, getarmor(def_zone, ARMOR_MELEE) ) + overpen_dmg = max(0,round(overpen_dmg - mob_agony_armor) - absolute_armor * ARMOR_HALLOS_COEFFICIEN) + + if(brute_armor_overpenetration > 0 && damagetype == BRUTE) + overpen_dmg += max(0,round(brute_armor_overpenetration) - absolute_armor * ARMOR_HALLOS_COEFFICIEN) + + if(burns_armor_overpenetration > 0 && damagetype == BURN) + overpen_dmg += max(0,round(burns_armor_overpenetration) - absolute_armor * ARMOR_HALLOS_COEFFICIEN) + + //message_admins("post math mob overpen overpen_dmg = [overpen_dmg]!") */ - // Determine DR and ADR, armour divisor reduces it - var/armor = getarmor(def_zone, attack_flag) / armor_divisor - if(!(attack_flag in list(ARMOR_MELEE, ARMOR_BULLET, ARMOR_ENERGY))) // Making sure BIO and other armor types are handled correctly - armor /= 5 - var/ablative_armor = getarmorablative(def_zone, attack_flag) / armor_divisor + + + + +/* var/remaining_armor = armor var/remaining_ablative = ablative_armor @@ -90,16 +212,8 @@ else dmg = max(dmg - remaining_armor - remaining_ablative, 0) - if(istype(src,/mob/living/simple_animal/) || istype(src,/mob/living/carbon/superior_animal/)) //This code is kept as a bit of a dinosaur from GDR but is tweaked for allowing halloss=damage on mobs. - var/mob_agony_armor = src.getarmor(def_zone, "agony") - var/guaranteed_damage_red = armor * 0.1 //0.1 is the former GDR value, tweak this to tweak the whole formulae - var/effective_damage = damage - guaranteed_damage_red - if(damagetype == HALLOSS) - effective_damage = max(0,round(effective_damage - mob_agony_armor)) - if(!(dmg_type == HALLOSS)) // Determine pain from impact - adjustHalLoss(used_armor * (wounding_multiplier ? wounding_multiplier : 1) * ARMOR_HALLOS_COEFFICIENT * max(0.5, (get_specific_organ_efficiency(OP_NERVE, def_zone) / 100))) dmg_types[dmg_type] = dmg // Finally, we adjust the damage passing through if(dmg) @@ -149,54 +263,43 @@ - //Feedback - //In order to show both target and everyone around that armor is actually working, we are going to send message for both of them - //Goon/tg chat should take care of spam issue on this one - switch(effective_armor) - if(90 to INFINITY) - armor_message(SPAN_NOTICE("[src] armor absorbs the blow!"), - SPAN_NOTICE("Your armor absorbed the impact!")) - if(74 to 90) - armor_message(SPAN_NOTICE("[src] armor easily absorbs the blow!"), - SPAN_NOTICE("Your armor reduced the impact greatly!")) - if(49 to 74) - armor_message(SPAN_NOTICE("[src] armor absorbs most of the damage!"), - SPAN_NOTICE("Your armor protects you from the impact!")) - if(-INFINITY to 24) - armor_message(SPAN_NOTICE("[src] armor reduces the impact by a little."), - SPAN_NOTICE("Your armor reduced the impact a little.")) - // Deal damage to ablative armour based on how much was used, we multiply armour divisor back so high AP doesn't decrease damage dealt to ADR - if(ablative_armor) - damageablative(def_zone, (ablative_armor - remaining_ablative) * armor_divisor) - - //If we have a grab in our hands and get hit with melee damage type, there is a chance we lower our grab's state - if(attack_flag == ARMOR_MELEE && ishuman(src) && isitem(used_weapon)) - var/mob/living/carbon/human/H = src - var/obj/item/I = used_weapon - var/toughness_val = H.stats.getStat(STAT_TGH) - - if(dealt_damage > 10 && prob((dealt_damage - toughness_val * (sharp && edge ? 1 : 0.5) * (I.w_class < ITEM_SIZE_BULKY ? 1 : 0.5)))) - for(var/obj/item/grab/G in get_both_hands(H)) - visible_message(SPAN_NOTICE("[H]'s grab has been weakened!"), SPAN_WARNING("Your grab has been weakened!")) - G.state-- - - // Returns if a projectile should continue travelling - if(return_continuation) - var/obj/item/projectile/P = used_weapon - P.damage_types = dmg_types - if(sharp) - var/remaining_dmg = 0 - for(var/dmg_type in dmg_types) - remaining_dmg += dmg_types[dmg_type] - return ((total_dmg / 2 < remaining_dmg && remaining_dmg > mob_size) ? PROJECTILE_CONTINUE : PROJECTILE_STOP) - else return PROJECTILE_STOP - - return dealt_damage + +*/ + + + + +/* else//shelving this for a moment, will most likely shufffle it around + + if(damagetype == HALLOSS) + //First we get the nervs! + effective_damage = round(effective_damage * clamp((get_specific_organ_efficiency(OP_NERVE, def_zone) / 100), 0.5, 1.5)) + var/pain_armor = max(0, (src.getarmor(def_zone, "bullet") + src.getarmor(def_zone, "melee") - armor_pen))//All brute over-pen checks bullet rather then melee for simple mobs to keep melee viable + var/pain_no_matter_what = (effective_damage * 0.15) //we deal 15% of are pain, this is to stop rubbers being *completely* uses with basic armor - Its not perfect in melee + effective_damage = max(pain_no_matter_what, (effective_damage - pain_armor)) + if(ishuman(src)) + var/mob/living/carbon/human/victim = src + if(prob(25 + (effective_damage * 2))) + if(!victim.stat && !(victim.has_shield())) + if(victim.headcheck(def_zone)) + //Harder to score a stun but if you do it lasts a bit longer + if(prob(effective_damage)) + visible_message(SPAN_DANGER("[src] [victim.form.knockout_message]")) + apply_effect(5, PARALYZE, getarmor(def_zone, ARMOR_MELEE) ) + else + //Easier to score a stun but lasts less time + if(prob(effective_damage + 10)) + visible_message(SPAN_DANGER("[src] has been knocked down!")) + apply_effect(1, WEAKEN, getarmor(def_zone, ARMOR_MELEE) ) +*/ + + + //if null is passed for def_zone, then this should return something appropriate for all zones (e.g. area effect damage) /mob/living/proc/getarmor(var/def_zone, var/type) - return FALSE + return 1 //once we start playing with ABSOLUTE ARMOUR this should be set to the "middle", think of it like 0 AP in RELATIVE system or 1 AD in ABSOLUTE /mob/living/proc/getarmorablative(var/def_zone, var/type) return FALSE @@ -204,39 +307,45 @@ /mob/living/proc/damageablative(var/def_zone, var/damage) return FALSE +/mob/living/simple_animal/getarmor(var/def_zone, var/type) + return src.armor[type] + +/mob/living/carbon/superior_animal/getarmor(var/def_zone, var/type) + return src.armor[type] + /mob/living/proc/hit_impact(damage, dir) if(incapacitated(INCAPACITATION_DEFAULT|INCAPACITATION_BUCKLED_PARTIALLY)) return shake_animation(damage) - // return PROJECTILE_CONTINUE if bullet should continue flying -/mob/living/bullet_act(obj/item/projectile/P, var/def_zone_hit) + +/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone) var/hit_dir = get_dir(P, src) - if (P.is_hot() >= HEAT_MOBIGNITE_THRESHOLD) + if (P.is_hot() >= HEAT_MOBIGNITE_THRESHOLD && (!(P.testing))) IgniteMob() //Being hit while using a deadman switch - if(istype(get_active_hand(),/obj/item/device/assembly/signaler)) + if(istype(get_active_hand(),/obj/item/device/assembly/signaler) && (!(P.testing))) var/obj/item/device/assembly/signaler/signaler = get_active_hand() if(signaler.deadman && prob(80)) log_and_message_admins("has triggered a signaler deadman's switch") src.visible_message(SPAN_WARNING("[src] triggers their deadman's switch!")) signaler.signal() - var/agony = P.damage_types[HALLOSS] ? P.damage_types[HALLOSS] : 0 //Stun Beams if(P.taser_effect) - stun_effect_act(0, agony, def_zone_hit, P) - to_chat(src, SPAN_WARNING("You have been hit by [P]!")) + if (!(P.testing)) + stun_effect_act(0, P.agony, def_zone, P) + to_chat(src, SPAN_WARNING("You have been hit by [P]!")) + else + P.on_impact(src, TRUE) //not sure if this will work qdel(P) return TRUE - if(P.knockback && hit_dir) + if(P.knockback && hit_dir && (!(P.testing))) throw_at(get_edge_target_turf(src, hit_dir), P.knockback, P.knockback) - P.on_hit(src, def_zone_hit) - //Armor and damage if(!P.nodamage) if (!(P.testing)) @@ -244,22 +353,31 @@ for(var/damage_type in P.damage_types) var/damage = P.damage_types[damage_type] var/dmult = 1 - if(faction in P.effective_faction) - dmult += P.damage_mult - if(is_type_in_list(src, P.supereffective_types, TRUE)) - dmult += P.supereffective_mult + if(LAZYLEN(P.effective_faction)) + if(faction in P.effective_faction) + dmult += P.damage_mult + if(LAZYLEN(P.supereffective_types)) + if(is_type_in_list(src, P.supereffective_types, TRUE)) + dmult += P.supereffective_mult damage *= dmult - hit_impact(P.get_structure_damage(), hit_dir) - return damage_through_armor(def_zone = def_zone_hit, attack_flag = P.check_armour, armor_divisor = P.armor_divisor, used_weapon = P, sharp = is_sharp(P), edge = has_edge(P), wounding_multiplier = P.wounding_mult, dmg_types = P.damage_types, return_continuation = TRUE) + if (!(P.testing)) + damage_through_armor(damage, damage_type, def_zone, P.check_armour, armor_pen = P.armor_penetration, used_weapon = P, sharp=is_sharp(P), edge=has_edge(P), post_pen_mult = P.post_penetration_dammult) + - return PROJECTILE_CONTINUE + if(P.agony > 0 && istype(P,/obj/item/projectile/bullet)) + if (!(P.testing)) + hit_impact(P.agony, hit_dir) + damage_through_armor(P.agony, HALLOSS, def_zone, P.check_armour, armor_pen = P.armor_penetration, used_weapon = P, sharp = is_sharp(P), edge = has_edge(P)) + + ..() + return TRUE //Handles the effects of "stun" weapons -/mob/living/proc/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon) +/mob/living/proc/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null) flash_pain() //For not bloating damage_through_armor here is simple armor calculation for stun time - var/armor_coefficient = max(0, 1 - getarmor(def_zone, ARMOR_ENERGY) / 25) + var/armor_coefficient = max(0, 1 - getarmor(def_zone, ARMOR_ENERGY) / 100) //If armor is 100 or more, we just skeeping it if (stun_amount && armor_coefficient) @@ -268,7 +386,6 @@ Weaken(stun_amount * armor_coefficient) apply_effect(STUTTER, stun_amount * armor_coefficient) apply_effect(EYE_BLUR, stun_amount * armor_coefficient) - SEND_SIGNAL(src, COMSIG_LIVING_STUN_EFFECT) if (agony_amount && armor_coefficient) @@ -276,7 +393,7 @@ apply_effect(STUTTER, agony_amount * armor_coefficient) apply_effect(EYE_BLUR, agony_amount * armor_coefficient) -/mob/living/proc/electrocute_act(var/shock_damage, obj/source, var/siemens_coeff = 1) +/mob/living/proc/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0) return 0 //only carbon liveforms have this proc /mob/living/emp_act(severity) @@ -290,7 +407,7 @@ //Called when the mob is hit with an item in combat. /mob/living/proc/hit_with_weapon(obj/item/I, mob/living/user, var/effective_force, var/hit_zone) - visible_message(SPAN_DANGER("[src] has been [LAZYPICK(I.attack_verb) || "attacked"] with [I.name] by [user]!")) + visible_message(SPAN_DANGER("[src] has been [I.attack_verb.len? pick(I.attack_verb) : "attacked"] with [I.name] by [user]!")) standard_weapon_hit_effects(I, user, effective_force, hit_zone) @@ -306,25 +423,26 @@ return FALSE //Hulk modifier -// if(HULK in user.mutations) -// effective_force *= 2 + if(HULK in user.mutations) + effective_force *= 2 //Apply weapon damage - if (damage_through_armor(effective_force, I.damtype, hit_zone, ARMOR_MELEE, I.armor_divisor, used_weapon = I, sharp = is_sharp(I), edge = has_edge(I))) + if (damage_through_armor(effective_force, I.damtype, hit_zone, ARMOR_MELEE, I.armor_penetration, used_weapon = I, sharp = is_sharp(I), edge = has_edge(I), post_pen_mult = I.post_penetration_dammult)) return TRUE else return FALSE //this proc handles being hit by a thrown atom /mob/living/hitby(atom/movable/AM as mob|obj,var/speed = THROWFORCE_SPEED_DIVISOR)//Standardization and logging -Sieve - if(istype(AM,/obj)) + if(istype(AM,/obj/)) var/obj/O = AM var/dtype = O.damtype - var/throw_damage = O.throwforce + var/throw_damage = O.throwforce //Are minium damage we do is baseline in cases were we do more damage we do more + var/miss_chance = 15 if (O.throw_source) var/distance = get_dist(O.throw_source, loc) - miss_chance = max(15*(distance-2), 0) + miss_chance = max(15*(distance-4), 0) if (prob(miss_chance)) visible_message("\blue \The [O] misses [src] narrowly!") @@ -335,8 +453,11 @@ IgniteMob() src.visible_message(SPAN_WARNING("[src] has been hit by [O].")) - - damage_through_armor(throw_damage, dtype, null, ARMOR_MELEE, O.armor_divisor, used_weapon = O, sharp = is_sharp(O), edge = has_edge(O)) + var/ppd = 1 + if(isitem(O)) + var/obj/item/thingytocheck = O + ppd = thingytocheck.post_penetration_dammult + damage_through_armor(throw_damage, dtype, null, ARMOR_MELEE, null, used_weapon = O, sharp = is_sharp(O), edge = has_edge(O), post_pen_mult = ppd) O.throwing = 0 //it hit, so stop moving @@ -376,7 +497,7 @@ src.anchored = TRUE src.pinned += O -/mob/living/proc/embed(obj/item/O, var/def_zone) +/mob/living/proc/embed(var/obj/item/O, var/def_zone=null) if(O.wielded) return if(ismob(O.loc)) @@ -385,8 +506,8 @@ return O.forceMove(src) src.embedded += O - src.visible_message("[O] embeds in the [src]!") - add_verb(src, /mob/proc/yank_out_object) + src.visible_message(SPAN_DANGER("\The [O] embeds in the [src]!")) + src.verbs += /mob/proc/yank_out_object O.on_embed(src) //This is called when the mob is thrown into a dense turf @@ -413,15 +534,10 @@ if(!damage || !istype(user)) return - - var/used_divisor = 1 - if(isliving(user)) - var/mob/living/L = user - used_divisor = L.armor_divisor - var/attack_BP = BP_CHEST - if(prob(20)) - attack_BP = pick(list(BP_L_LEG, BP_R_LEG, BP_R_ARM, BP_L_ARM, BP_GROIN, BP_HEAD)) - damage_through_armor(damage, damagetype, attack_BP, ARMOR_MELEE, used_divisor, sharp=sharp, edge=edge) + if(damagetype == BRUTE) + adjustBruteLoss(damage) + else + adjustFireLoss(damage) user.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] was attacked by [user.name] ([user.ckey])") src.visible_message(SPAN_DANGER("[user] has [attack_message] [src]!")) @@ -443,7 +559,9 @@ update_fire() /mob/living/proc/update_fire() - return + cut_overlay(image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing")) + if(on_fire) + add_overlay(image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing")) /mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person fire_stacks = CLAMP(fire_stacks + add_fire_stacks, FIRE_MIN_STACKS, FIRE_MAX_STACKS) @@ -517,3 +635,56 @@ I.action.arguments = I.action_button_arguments I.action.Grant(src) return + +/mob/living/update_action_buttons() + if(!hud_used) return + if(!client) return + + //if(hud_used.hud_shown != 1) //Hud toggled to minimal + // return + + //client.screen -= hud_used.hide_actions_toggle + for(var/datum/action/A in actions) + if(A.button) + client.screen -= A.button + + /*if(hud_used.action_buttons_hidden) + if(!hud_used.hide_actions_toggle) + hud_used.hide_actions_toggle = new(hud_used) + hud_used.hide_actions_toggle.UpdateIcon() + + if(!hud_used.hide_actions_toggle.moved) + hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(1) + //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,1) + + client.screen += hud_used.hide_actions_toggle + return +*/ + var/button_number = 0 + for(var/datum/action/A in actions) + button_number++ + if(A.button == null) + var/obj/screen/movable/action_button/N = new(hud_used) + N.owner = A + A.button = N + + var/obj/screen/movable/action_button/B = A.button + + B.UpdateIcon() + +// B.name = A.UpdateName() /// TODO : NEEDS FIXING !!!! + + client.screen += B + + if(!B.moved) + B.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number) + //hud_used.SetButtonCoords(B,button_number) + +// if(button_number > 0) + /*if(!hud_used.hide_actions_toggle) + hud_used.hide_actions_toggle = new(hud_used) + hud_used.hide_actions_toggle.InitialiseIcon(src) + if(!hud_used.hide_actions_toggle.moved) + hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1) + //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,button_number+1) + client.screen += hud_used.hide_actions_toggle*/ diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 3cb118b4014..5066e8c195c 100755 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -34,9 +34,9 @@ /// The buildmode holders this mob is currently selected by. var/list/obj/effect/bmode/buildholder/selected_by = list() - var/armor_divisor = 1 //Used for generic attacks - var/projectile_armor_divisor_adjustment = 0 - var/projectile_armor_divisor_mult = 1 + var/armor_penetration = 1 //Used for generic attacks + var/projectile_armor_penetration_adjustment = 0 + var/projectile_armor_penetration_mult = 1 //Damage related vars, NOTE: THESE SHOULD ONLY BE MODIFIED BY PROCS var/bruteloss = 0.0 //Brutal damage caused by brute force (punching, being clubbed by a toolbox ect... this also accounts for pressure damage) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 2dc0f64200a..abd435436c0 100755 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -557,7 +557,7 @@ var/mob/living/carbon/human/firer = Proj.firer chance -= firer.stats.getStat(STAT_VIG, FALSE) / 5 var/obj/item/projectile/bullet/B = Proj - chance = max((chance / B.armor_divisor), 0) + chance = max((chance - B.armor_penetration), 0) if (!(Proj.testing)) if(B.starting && prob(chance)) // disregard this for test because its luck based visible_message(SPAN_DANGER("\The [Proj.name] ricochets off [src]\'s armour!")) diff --git a/code/modules/mob/living/simple_animal/friendly/light_geist.dm b/code/modules/mob/living/simple_animal/friendly/light_geist.dm index 5d6e1f57f93..283d08bb1be 100644 --- a/code/modules/mob/living/simple_animal/friendly/light_geist.dm +++ b/code/modules/mob/living/simple_animal/friendly/light_geist.dm @@ -16,9 +16,9 @@ mob_size = MOB_SMALL hunger_enabled = 1 armor = list( - melee = 2, - bullet = 2, - energy = 2, + melee = 10, + bullet = 10, + energy = 10, bomb = 10, bio = 10, rad = 10, diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 28909eedf18..514ed643cff 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -139,7 +139,7 @@ icon_gib = "brownbear_gib" icon_dead = "combatbear_dead" faction = "excelsior" - armor = list(melee = 5, bullet = 3, energy = 1, bomb = 10, bio = 100, rad = 100, agony = 0) // It's an ARMORED bear + armor = list(melee = 20, bullet = 15, energy = 5, bomb = 10, bio = 100, rad = 100, agony = 0) // It's an ARMORED bear maxHealth = 300 * EXCELSIOR_HEALTH_MOD health = 300 * EXCELSIOR_HEALTH_MOD melee_damage_lower = 30 diff --git a/code/modules/mob/living/simple_animal/hostile/big.dm b/code/modules/mob/living/simple_animal/hostile/big.dm index f8c8c4859b8..eadb97298d2 100644 --- a/code/modules/mob/living/simple_animal/hostile/big.dm +++ b/code/modules/mob/living/simple_animal/hostile/big.dm @@ -47,7 +47,7 @@ melee_damage_lower = 35 melee_damage_upper = 40 - armor = list(melee = 10, bullet = 14, energy = 12, bomb = 5, bio = 10, agony = 10, rad = 25) + armor = list(melee = 35, bullet = 30, energy = 25, bomb = 5, bio = 10, rad = 25) old_x = -16 old_y = 0 @@ -126,7 +126,7 @@ has_special_parts = TRUE special_parts = list(/obj/item/animal_part/wolf_tooth,/obj/item/animal_part/wolf_tooth) mob_size = MOB_LARGE - armor = list(melee = 6, bullet = 2, energy = 0, bomb = 5, bio = 10, rad = 25) + armor = list(melee = 25, bullet = 10, energy = 0, bomb = 5, bio = 10, rad = 25) inherent_mutations = list(MUTATION_CAT_EYES, MUTATION_GIGANTISM, MUTATION_RAND_UNSTABLE) /mob/living/simple_animal/hostile/retaliate/gaslamp @@ -223,7 +223,7 @@ has_rare_parts = TRUE special_parts = list(/obj/item/animal_part/stalker_chitin) rare_parts = list(/obj/item/animal_part/stalker_spur) - armor = list(melee = 5, bullet = 7, energy = 1, bomb = 5, bio = 10, agony = 20, rad = 25) + armor = list(melee = 25, bullet = 10, energy = 0, bomb = 5, bio = 10, rad = 25) mob_size = MOB_LARGE inherent_mutations = list(MUTATION_GIGANTISM, MUTATION_CLUMSY, MUTATION_COUGHING, MUTATION_NERVOUSNESS, MUTATION_CLOAKING) @@ -242,7 +242,7 @@ turns_per_move = 4 vision_range = 8 aggro_vision_range = 20 - armor = list(melee = 5, bullet = 14, energy = 12, bomb = 5, bio = 10, agony = 10, rad = 25) + armor = list(melee = 20, bullet = 30, energy = 5, bomb = 5, bio = 10, rad = 25) //Lost its laser armor do to being a darker colour inherent_mutations = list(MUTATION_GIGANTISM, MUTATION_CLUMSY, MUTATION_COUGHING, MUTATION_NERVOUSNESS, MUTATION_GREATER_CLOAKING) /mob/living/simple_animal/hostile/nightmare/MoveToTarget() @@ -347,7 +347,7 @@ has_special_parts = TRUE special_parts = list(/obj/item/animal_part/wolf_tooth,/obj/item/animal_part/wolf_tooth,/obj/item/animal_part/hell_hide) mob_size = MOB_LARGE - armor = list(melee = 8, bullet = 6, energy = 10, bomb = 5, bio = 10, agony = 10, rad = 25) + armor = list(melee = 25, bullet = 10, energy = 20, bomb = 5, bio = 10, rad = 25) inherent_mutations = list(MUTATION_GIGANTISM, MUTATION_CLUMSY, MUTATION_BLINDNESS, MUTATION_NO_PAIN, MUTATION_HYPERION, MUTATION_BLOOD_BANK) /mob/living/simple_animal/hostile/hell_pig/wendigo @@ -366,7 +366,7 @@ speak_emote = list("snarls!", "jerks erratically.") has_special_parts = TRUE special_parts = list(/obj/item/animal_part/wolf_tooth,/obj/item/animal_part/wolf_tooth,/obj/item/animal_part/cannibal_tooth) - armor = list(melee = 8, bullet = 10, energy = 3, bomb = 5, bio = 10, agony = 10, rad = 25) + armor = list(melee = 35, bullet = 20, energy = 0, bomb = 5, bio = 10, rad = 25) inherent_mutations = list(MUTATION_GIGANTISM, MUTATION_CLUMSY, MUTATION_IMBECILE, MUTATION_RAND_UNSTABLE, MUTATION_HYPERION) @@ -390,5 +390,5 @@ speak_emote = list("stomps its hooves!", "whinnies!") has_special_parts = TRUE special_parts = list(/obj/item/animal_part/slepnir_hoof,/obj/item/animal_part/wolf_tooth,/obj/item/animal_part/wolf_tooth) - armor = list(melee = 8, bullet = 4, energy = 4, bomb = 5, bio = 10, agony = 10, rad = 25) + armor = list(melee = 35, bullet = 20, energy = 0, bomb = 5, bio = 10, rad = 25) inherent_mutations = list(MUTATION_GIGANTISM, MUTATION_CLUMSY, MUTATION_IMBECILE, MUTATION_RAND_UNSTABLE, MUTATION_HYPERION, MUTATION_BLOOD_BANK) diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 451ebdf883a..1e2a454aecb 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -14,7 +14,7 @@ maxHealth = 25 * CARP_HEALTH_MOD health = 25 - armor = list(melee = 1, bullet = 2, energy = 12, bomb = 25, bio = 100, rad = 25) //Lasers dont work on scales + armor = list(melee = 5, bullet = 10, energy = 50, bomb = 25, bio = 100, rad = 25) //Lasers dont work on scales harm_intent_damage = 8 @@ -108,7 +108,7 @@ /obj/item/animal_part/carp_fang, /obj/item/animal_part/carp_fang) //HOLY GRAIL - armor = list(melee = 6, bullet = 2, energy = 16, bomb = 25, bio = 100, rad = 25) //Lasers dont work on scales + armor = list(melee = 25, bullet = 10, energy = 65, bomb = 25, bio = 100, rad = 25) //Lasers dont work on scales /mob/living/simple_animal/hostile/carp/allow_spacemove() diff --git a/code/modules/mob/living/simple_animal/hostile/creature.dm b/code/modules/mob/living/simple_animal/hostile/creature.dm index ada42dfffe5..48bc3cf3eb6 100644 --- a/code/modules/mob/living/simple_animal/hostile/creature.dm +++ b/code/modules/mob/living/simple_animal/hostile/creature.dm @@ -131,7 +131,7 @@ has_special_parts = TRUE inherent_mutations = list(MUTATION_BLINDNESS, MUTATION_ECHOLOCATION, MUTATION_TOXIN_RESISTANCE, MUTATION_BLOOD_BANK) special_parts = list(/obj/item/animal_part/sarg_horn, /obj/item/animal_part/sarg_horn) - armor = list(melee = 1, bullet = 2, energy = 0, bomb = 25, bio = 0, rad = 25) + armor = list(melee = 5, bullet = 10, energy = 0, bomb = 25, bio = 0, rad = 25) /* #define MOOK_ATTACK_NEUTRAL 0 diff --git a/code/modules/mob/living/simple_animal/hostile/excelsior.dm b/code/modules/mob/living/simple_animal/hostile/excelsior.dm index 746a21888e1..d6d20295329 100644 --- a/code/modules/mob/living/simple_animal/hostile/excelsior.dm +++ b/code/modules/mob/living/simple_animal/hostile/excelsior.dm @@ -15,11 +15,10 @@ break_stuff_probability = 100 stop_automated_movement = 1 armor = list( - melee = 0, - bullet = 0, - energy = 0, - bomb = 0, - bio = 0, //robot + melee = 1, + bullet = 1, + energy = 1, + bomb = 1, rad = 100, //ROBOT agony = 100 ///robot ) diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index cecd8a3e2ff..f9ed32e6855 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -32,7 +32,7 @@ var/drop1 = /obj/item/scrap_lump var/drop2 = null needs_environment = FALSE - armor = list(melee = 3, bullet = 1, energy = 5, bomb = 25, bio = 100, rad = 25) + armor = list(melee = 15, bullet = 5, energy = 20, bomb = 25, bio = 100, rad = 25) cant_gib = TRUE sanity_damage = 1 @@ -147,7 +147,7 @@ melee_damage_lower = 35 melee_damage_upper = 40 - armor = list(melee = 3, bullet = 2, energy = 5, bomb = 25, bio = 0, rad = 25) + armor = list(melee = 15, bullet = 10, energy = 20, bomb = 25, bio = 0, rad = 25) health = 450 * REPUBLICON_HEALTH_MOD diff --git a/code/modules/mob/living/simple_animal/hostile/jelly.dm b/code/modules/mob/living/simple_animal/hostile/jelly.dm index 42c1635de6c..db20d815e93 100644 --- a/code/modules/mob/living/simple_animal/hostile/jelly.dm +++ b/code/modules/mob/living/simple_animal/hostile/jelly.dm @@ -16,7 +16,7 @@ bones_amount = 0 sanity_damage = 1 - armor = list(melee = 8, bullet = 20, energy = 2, bomb = 25, bio = 100, rad = 100) //Were basiclly ballastic jell + armor = list(melee = 50, bullet = 80, energy = 10, bomb = 25, bio = 100, rad = 100) //Were basiclly ballastic jell /mob/living/simple_animal/hostile/jelly/bloat diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index 9f45b384fb5..5556af578f3 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -26,7 +26,7 @@ bones_amount = 0 var/datum/effect/effect/system/trail/ion/trail - armor = list(melee = 8, bullet = 2, energy = 5, bomb = 25, bio = 0, rad = 25) + armor = list(melee = 35, bullet = 10, energy = 20, bomb = 25, bio = 0, rad = 25) //the drone randomly switches between these states because it's malfunctioning var/hostile_drone = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 08f687c03f4..f503aabcdab 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -271,7 +271,7 @@ stop_automated_movement_when_pulled = 0 maxHealth = 350 health = 350 - armor = list(melee = 11, bullet = 12, energy = 7, bomb = 0, bio = 100, rad = 50) + armor = list(melee = 45, bullet = 50, energy = 30, bomb = 0, bio = 100, rad = 50) vision_range = 16 harm_intent_damage = 5 melee_damage_lower = 10 @@ -313,7 +313,7 @@ melee_damage_upper = 35 maxHealth = 450 //Boosted because melee given armor/shield health = 450 - armor = list(melee = 16, bullet = 10, energy = 7, bomb = 0, bio = 100, rad = 50) + armor = list(melee = 65, bullet = 40, energy = 30, bomb = 0, bio = 100, rad = 50) icon_state = "syndicate_stormtrooper_sword" drop_items = list(/obj/item/melee/energy/sword/red, /obj/item/shield/buckler/energy) attacktext = "slashed" @@ -339,7 +339,7 @@ /mob/living/simple_animal/hostile/elitemercenary/range/space/heavy/shotgun ranged_cooldown = 4 rapid = 0 - armor = list(melee = 16, bullet = 12, energy = 5, bomb = 0, bio = 100, rad = 50) + armor = list(melee = 65, bullet = 50, energy = 20, bomb = 0, bio = 100, rad = 50) health = 450 maxHealth = 450 icon_state = "syndicate_stormtrooper_shotgun" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index fb1f1e80e44..e96802b26eb 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -415,7 +415,7 @@ dmult += Proj.supereffective_mult damage *= dmult if (!(Proj.testing)) - return damage_through_armor(damage, def_zone, attack_flag = Proj.check_armour, armor_divisor = Proj.armor_divisor, used_weapon = Proj, sharp = is_sharp(Proj), edge = has_edge(Proj), wounding_multiplier = Proj.wounding_mult, dmg_types = Proj.damage_types, return_continuation = TRUE) + return damage_through_armor(damage, def_zone, attack_flag = Proj.check_armour, armor_penetration = Proj.armor_penetration, used_weapon = Proj, sharp = is_sharp(Proj), edge = has_edge(Proj), wounding_multiplier = Proj.wounding_mult, dmg_types = Proj.damage_types, return_continuation = TRUE) return FALSE /mob/living/simple_animal/rejuvenate() diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm index 075b0eaa691..06d3b866e96 100644 --- a/code/modules/mob/mob_grab_specials.dm +++ b/code/modules/mob/mob_grab_specials.dm @@ -318,7 +318,7 @@ sleep(1) target.throw_at(get_edge_target_turf(target, dir), 7, 2)//this is very fast, and very painful for any obstacle involved - target.damage_through_armor(damage, HALLOSS, armor_divisor = 2) + target.damage_through_armor(damage, HALLOSS, attack_flag = ARMOR_MELEE) // attacker.regen_slickness(0.4) //admin messaging diff --git a/code/modules/nanogate/nanogate_items.dm b/code/modules/nanogate/nanogate_items.dm index 78b8a25e860..6fe7a09b030 100644 --- a/code/modules/nanogate/nanogate_items.dm +++ b/code/modules/nanogate/nanogate_items.dm @@ -5,9 +5,9 @@ icon_state = "nanite_rig" suit_type = "nanite" armor_list = list( - melee = 7, - bullet = 7, - energy = 7, + melee = 35, + bullet = 35, + energy = 35, bomb = 25, bio = 100, rad = 100 diff --git a/code/modules/nanogate/powers/nanobot.dm b/code/modules/nanogate/powers/nanobot.dm index 47890b9bcd6..3c6ec4d9ef5 100644 --- a/code/modules/nanogate/powers/nanobot.dm +++ b/code/modules/nanogate/powers/nanobot.dm @@ -97,7 +97,7 @@ List of powers in this page : set category = "Nanogate Powers.Robot" set name = "Upgrade Nanobot - Armor (1)" set desc = "Spend some of your nanites to upgrade your nanobots armor to better reduce and mitigate incoming damage." - var/armor_boost = list(melee = 15, bullet = 15, energy = 3, bomb = 75, bio = 100, rad = 100) // How much armor does the nanobot get? + var/armor_boost = list(melee = 60, bullet = 60, energy = 60, bomb = 75, bio = 100, rad = 100) // How much armor does the nanobot get? var/obj/item/organ/internal/nanogate/organ = first_organ_by_type(/obj/item/organ/internal/nanogate) if(!organ) diff --git a/code/modules/organs/external/damage.dm b/code/modules/organs/external/damage.dm index 83701ab39a7..93f912062c7 100644 --- a/code/modules/organs/external/damage.dm +++ b/code/modules/organs/external/damage.dm @@ -28,9 +28,9 @@ var/transferred_damage_amount switch(damage_type) if(BRUTE) - transferred_damage_amount = amount - (max_damage - brute_dam) / armor_divisor / 2 + transferred_damage_amount = amount - (max_damage - brute_dam) / max(1, armor_penetration * 0.1) / 2 if(BURN) - transferred_damage_amount = amount - (max_damage - burn_dam) / armor_divisor / 2 + transferred_damage_amount = amount - (max_damage - burn_dam) / max(1, armor_penetration * 0.1) / 2 if(HALLOSS) transferred_damage_amount = 0 else diff --git a/code/modules/organs/external/subtypes/robotic.dm b/code/modules/organs/external/subtypes/robotic.dm index 2ed71a36f92..968729b0dc0 100755 --- a/code/modules/organs/external/subtypes/robotic.dm +++ b/code/modules/organs/external/subtypes/robotic.dm @@ -5,7 +5,7 @@ nerve_struck = -1 // no nerves here cannot_break = 1 nature = MODIFICATION_SILICON - armor_list = list(melee = 5, bullet = 5, energy = 5, bomb = 20, bio = 100, rad = 100) + armor_list = list(melee = 20, bullet = 20, energy = 20, bomb = 20, bio = 100, rad = 100) matter = list(MATERIAL_STEEL = 2, MATERIAL_PLASTIC = 2) // Multiplied by w_class var/min_malfunction_damage = 20 // Any more damage than that and you start getting nasty random malfunctions diff --git a/code/modules/organs/external/subtypes/robotic_types.dm b/code/modules/organs/external/subtypes/robotic_types.dm index b880c8ad64f..05d77b405f7 100644 --- a/code/modules/organs/external/subtypes/robotic_types.dm +++ b/code/modules/organs/external/subtypes/robotic_types.dm @@ -177,7 +177,7 @@ obj/item/organ/external/robotic/synthskin/groin desc = "Custom tooled and held together by hope and duct tape." force_icon = 'icons/mob/human_races/cyberlimbs/advanced_ghetto.dmi' //Sprites were done by Kirov on request model = "ghetto" - armor_list = list(melee = 2, bullet = 2, energy = 2, bomb = -5, bio = 100, rad = 100) + armor_list = list(melee = 10, bullet = 10, energy = 10, bomb = -5, bio = 100, rad = 100) matter = list(MATERIAL_STEEL = 3, MATERIAL_PLASTIC = 1) min_broken_damage = 30 min_malfunction_damage = 15 @@ -207,7 +207,7 @@ obj/item/organ/external/robotic/synthskin/groin desc = "Reinforced purple and white prosthesis designed for space exploration and light combat." force_icon = 'icons/mob/human_races/cyberlimbs/moebius.dmi' model = "moebius" - armor_list = list(melee = 7, bullet = 7, energy = 7, bomb = 30, bio = 100, rad = 100) + armor_list = list(melee = 30, bullet = 30, energy = 30, bomb = 30, bio = 100, rad = 100) matter = list(MATERIAL_STEEL = 2, MATERIAL_PLASTIC = 2, MATERIAL_PLASTEEL = 1) max_damage = 60 min_broken_damage = 40 @@ -246,7 +246,7 @@ obj/item/organ/external/robotic/synthskin/groin desc = "Reinforced dark prosthesis designed for heavy combat." force_icon = 'icons/mob/human_races/cyberlimbs/blackshield.dmi' model = "blackshield" - armor_list = list(melee = 7, bullet = 7, energy = 7, bomb = 35, bio = 100, rad = 100) + armor_list = list(melee = 35, bullet = 35, energy = 35, bomb = 35, bio = 100, rad = 100) matter = list(MATERIAL_STEEL = 15, MATERIAL_PLASTIC = 5, MATERIAL_PLASTEEL = 10) max_damage = 60 min_broken_damage = 40 @@ -320,7 +320,7 @@ obj/item/organ/external/robotic/synthskin/groin desc = "Plasma reinforced black prosthesis designed for heavy combat." force_icon = 'icons/mob/human_races/cyberlimbs/excelsior.dmi' //Sprites were done by Kirov on request model = "excelsior" - armor_list = list(melee = 10, bullet = 10, energy = 10, bomb = 50, bio = 100, rad = 100) + armor_list = list(melee = 50, bullet = 50, energy = 50, bomb = 50, bio = 100, rad = 100) matter = list(MATERIAL_STEEL = 2, MATERIAL_PLASTEEL = 1, MATERIAL_PLASMA = 0.5) //Plasma needed as a material that excelsiors can't teleport in max_damage = 65 min_broken_damage = 45 @@ -353,7 +353,7 @@ obj/item/organ/external/robotic/synthskin/groin desc = "Advanced, extremely resilient and mobile prosthetic. Inscribed with \"Made in\" followed by gibberish, must have been lost to time." force_icon = 'icons/mob/human_races/cyberlimbs/one_star.dmi' model = "one_star" - armor_list = list(melee = 10, bullet = 10, energy = 10, bomb = 65, bio = 100, rad = 100) + armor_list = list(melee = 65, bullet = 65, energy = 65, bomb = 65, bio = 100, rad = 100) matter = list(MATERIAL_STEEL = 1, MATERIAL_PLASTIC = 4, MATERIAL_PLATINUM = 2) max_damage = 70 min_broken_damage = 50 @@ -377,7 +377,7 @@ obj/item/organ/external/robotic/synthskin/groin desc = "A robotic limb crafted from metallic hydrogen and gold" force_icon = 'icons/mob/human_races/cyberlimbs/nashef-agunabi.dmi' model = "nashef-agunabi" - armor_list = list(melee = 5, bullet = 5, energy = 2, bomb = 30, bio = 100, rad = 100) + armor_list = list(melee = 20, bullet = 20, energy = 35, bomb = 30, bio = 100, rad = 100) matter = list(MATERIAL_HYDROGEN = 5, MATERIAL_GOLD = 4, MATERIAL_PLATINUM = 2) max_damage = 70 min_broken_damage = 50 diff --git a/code/modules/organs/external/subtypes/standard.dm b/code/modules/organs/external/subtypes/standard.dm index 0b7410a50f8..e4e5e9a4314 100644 --- a/code/modules/organs/external/subtypes/standard.dm +++ b/code/modules/organs/external/subtypes/standard.dm @@ -19,7 +19,7 @@ owner.update_hair() ..() -/obj/item/organ/external/head/take_damage(amount, damage_type, armor_divisor = max(1, armor_divisor), wounding_multiplier = 1, sharp, edge, used_weapon = null, list/forbidden_limbs = list(), silent) +/obj/item/organ/external/head/take_damage(amount, damage_type, armor_penetration = max(0.001, armor_penetration), wounding_multiplier = 1, sharp, edge, used_weapon = null, list/forbidden_limbs = list(), silent) . = ..() if(. && !disfigured) if(amount > 25) diff --git a/code/modules/organs/internal/_internal.dm b/code/modules/organs/internal/_internal.dm index e8cba05c079..2f014c30f72 100644 --- a/code/modules/organs/internal/_internal.dm +++ b/code/modules/organs/internal/_internal.dm @@ -101,7 +101,7 @@ /obj/item/organ/internal/proc/get_process_efficiency(process_define) return organ_efficiency[process_define] - (organ_efficiency[process_define] * (damage / max_damage)) -/obj/item/organ/internal/take_damage(amount, damage_type = BRUTE, wounding_multiplier = 1, silent = FALSE, sharp = FALSE, edge = FALSE) //Deals damage to the organ itself +/obj/item/organ/internal/take_damage(amount, damage_type = BRUTE, wounding_multiplier = 1, silent = FALSE, sharp = FALSE, silent = FALSE) //Deals damage to the organ itself if(!damage_type || status & ORGAN_DEAD) return FALSE diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index 229aaae1e0e..fad4ad88909 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -931,7 +931,7 @@ w_class = ITEM_SIZE_SMALL caliber = CAL_ARROW force = WEAPON_FORCE_NORMAL - armor_divisor = ARMOR_PEN_GRAZING + armor_penetration = ARMOR_PEN_GRAZING projectile_type = /obj/item/projectile/bullet/reusable/arrow matter = list(MATERIAL_STEEL = 0.5, MATERIAL_WOOD = 0.5, MATERIAL_PLASTIC= 0.5) maxamount = 3 @@ -962,7 +962,7 @@ name = "broadhead arrow" icon_state = "arrow-broad" force = WEAPON_FORCE_PAINFUL - armor_divisor = 1 + armor_penetration = 1 desc = "A good-quality handmade arrow, with a metal head and plastic fletching. This one has quite a broad head, capable of causing severe damage to unarmored targets, but reducing its ability to penetrate armor." projectile_type = /obj/item/projectile/bullet/reusable/arrow/broadhead @@ -970,7 +970,7 @@ name = "serrated arrow" icon_state = "arrow-serrated" force = WEAPON_FORCE_PAINFUL - armor_divisor = 1 + armor_penetration = 1 desc = "A good-quality handmade aerodinamic arrow, with a metal head and plastic fletching. This one has wicked sharp serrated blades along its head, letting it stick in wounds easily, penetrating thick hide and armor alike at fast speeds." projectile_type = /obj/item/projectile/bullet/reusable/arrow/serrated diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 9302788e8a0..715ead6998c 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -811,7 +811,7 @@ /obj/item/ammo_magazine/kurtz_50 name = "heavy pistol magazine" - desc = "A 7 round magazine marked for 12mm." + desc = "A 10 round magazine marked for 12mm." icon_state = "kurtz" origin_tech = list(TECH_COMBAT = 2) mag_type = MAGAZINE @@ -819,7 +819,7 @@ caliber = CAL_50 matter = list(MATERIAL_STEEL = 4) ammo_type = /obj/item/ammo_casing/kurtz_50 - max_ammo = 7 + max_ammo = 10 multiple_sprites = 1 /obj/item/ammo_magazine/kurtz_50/empty @@ -951,13 +951,13 @@ /obj/item/ammo_magazine/speed_loader_kurtz_50 name = "speed loader (12mm Special)" - desc = "A 5 round speed loader marked for 12mm." + desc = "A 6 round speed loader marked for 12mm." icon_state = "slmagnum_base" icon = 'icons/obj/ammo_speed.dmi' caliber = CAL_50 ammo_type = /obj/item/ammo_casing/kurtz_50 matter = list(MATERIAL_STEEL = 3) - max_ammo = 5 + max_ammo = 6 /obj/item/ammo_magazine/speed_loader_kurtz_50/update_icon() cut_overlays() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 9da683806f1..8ecaea0fb0e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -545,9 +545,9 @@ For the sake of consistency, I suggest always rounding up on even values when ap projectile.multiply_projectile_damage(damage_multiplier) if(extra_proj_penmult) - projectile.add_projectile_penetration(penetration_multiplier) + projectile.multiply_projectile_penetration(extra_proj_penmult) - projectile.add_projectile_penetration(penetration_multiplier) + projectile.multiply_projectile_penetration(penetration_multiplier + user.stats.getStat(STAT_VIG) * 0.02) // VIG STAT ADDS TO PENETRATION !!! if(extra_proj_wallbangmult) projectile.multiply_pierce_penetration(extra_proj_wallbangmult) @@ -1208,7 +1208,7 @@ For the sake of consistency, I suggest always rounding up on even values when ap var/list/melee_stats = list() melee_stats += list(list("name" = "Melee Capabilities", "type" = "ProgressBar", "value" = force, "max" = initial(force) * 10)) - melee_stats += list(list( "name" = "Armor Divisor", "type" = "AnimatedNumber", "value" = armor_divisor, "max" = 10)) + melee_stats += list(list("name" = "Armor Penetration", "type" = "ProgressBar", "value" = armor_penetration, "max" = 100, "unit" = "%")) stats["Physical Details"] = melee_stats @@ -1277,7 +1277,7 @@ For the sake of consistency, I suggest always rounding up on even values when ap data += list(list("name" = "Projectile Type", "type" = "String", "value" = P.name)) data += list(list("name" = "Overall Damage", "type" = "String", "value" = (P.get_total_damage() * damage_multiplier) + get_total_damage_adjust())) - data += list(list("name" = "Armor Divisor", "type" = "String", "value" = P.armor_divisor * penetration_multiplier)) + data += list(list("name" = "Overall AP", "type" = "String", "value" = P.armor_penetration * penetration_multiplier)) data += list(list("name" = "Overall Pain", "type" = "String", "value" = (P.get_pain_damage()) * proj_agony_multiplier)) data += list(list("name" = "Wound Scale", "type" = "String", "value" = P.wounding_mult)) data += list(list("name" = "Recoil Multiplier", "type" = "String", "value" = P.recoil)) @@ -1290,11 +1290,12 @@ For the sake of consistency, I suggest always rounding up on even values when ap var/list/data = list() data["projectile_name"] = P.name data["projectile_damage"] = (P.get_total_damage() * damage_multiplier) + get_total_damage_adjust() - data["projectile_AP"] = P.armor_divisor + penetration_multiplier + data["projectile_AP"] = P.armor_penetration * penetration_multiplier data["projectile_WOUND"] = P.wounding_mult - data["unarmoured_damage"] = min(0, ((P.get_total_damage() * damage_multiplier) + get_total_damage_adjust()) * P.wounding_mult) - data["armoured_damage_10"] = min(0, (((P.get_total_damage() * damage_multiplier) + get_total_damage_adjust()) - (10 / (P.armor_divisor + penetration_multiplier))) * P.wounding_mult) - data["armoured_damage_15"] = min(0, (((P.get_total_damage() * damage_multiplier) + get_total_damage_adjust()) - (15 / (P.armor_divisor + penetration_multiplier))) * P.wounding_mult) + data["projectile_pain"] = P.get_pain_damage() * proj_agony_multiplier // not sure if this multriplier is needed here, TODO : check later + //data["unarmoured_damage"] = min(0, ((P.get_total_damage() * damage_multiplier) + get_total_damage_adjust()) * P.wounding_mult) + //data["armoured_damage_10"] = min(0, (((P.get_total_damage() * damage_multiplier) + get_total_damage_adjust()) - (10 / (P.armor_divisor + penetration_multiplier))) * P.wounding_mult) + //data["armoured_damage_15"] = min(0, (((P.get_total_damage() * damage_multiplier) + get_total_damage_adjust()) - (15 / (P.armor_divisor + penetration_multiplier))) * P.wounding_mult) data["projectile_recoil"] = P.recoil qdel(P) return data @@ -1326,7 +1327,7 @@ For the sake of consistency, I suggest always rounding up on even values when ap vision_flags = initial(vision_flags) see_invisible_gun = initial(see_invisible_gun) force = initial(force) - armor_divisor = initial(armor_divisor) + armor_penetration = initial(armor_penetration) sharp = initial(sharp) attack_verb = list("struck", "hit", "bashed") auto_eject = initial(auto_eject) //SoJ edit diff --git a/code/modules/projectiles/guns/energy/laser/antebellum.dm b/code/modules/projectiles/guns/energy/laser/antebellum.dm index 5f881d9676e..e7aa0a88ede 100644 --- a/code/modules/projectiles/guns/energy/laser/antebellum.dm +++ b/code/modules/projectiles/guns/energy/laser/antebellum.dm @@ -19,7 +19,7 @@ price_tag = 1250 gun_tags = list(GUN_LASER, GUN_ENERGY, GUN_SCOPE) init_firemodes = list( - list(mode_name="rapid fire", mode_desc="Light rapid plasma bolts", projectile_type=/obj/item/projectile/plasma/light, fire_sound='sound/weapons/energy/burn.ogg', fire_delay=8, icon="stun", projectile_color = "#00FFFF"), + list(mode_name="rapid fire", mode_desc="Light rapid plasma bolts", projectile_type=/obj/item/projectile/plasma/light, fire_sound='sound/weapons/energy/burn.ogg', fire_delay=8, icon="stun", projectile_color = "#00FFFF", armor_penetration = 5), list(mode_name="grenade", mode_desc="fires a frag biomatter-shell", projectile_type=/obj/item/projectile/bullet/grenade/frag/nt, charge_cost=30000, icon="grenade"), ) twohanded = FALSE diff --git a/code/modules/projectiles/guns/energy/laser/cog.dm b/code/modules/projectiles/guns/energy/laser/cog.dm index ca54abba4b2..0d6882d317b 100644 --- a/code/modules/projectiles/guns/energy/laser/cog.dm +++ b/code/modules/projectiles/guns/energy/laser/cog.dm @@ -49,7 +49,7 @@ icon = 'icons/obj/guns/energy/sprocket.dmi' icon_state = "sprocket" damage_multiplier = 0.9 // +0.1 when unfolded = baseline Cog - penetration_multiplier = 0.8// +0.2 when unfolded = base Cog + penetration_multiplier = 0.8 // +0.2 when unfolded = base Cog projectile_type = /obj/item/projectile/beam/hardstun // Snowflake 100% nonlethal projectile with reduced firerate w_class = ITEM_SIZE_NORMAL // Starts folded, bulk added when unfolded FAR surpasses BULKY class folding_stock = TRUE // Foldable stock for easy carry diff --git a/code/modules/projectiles/guns/energy/laser/concilium.dm b/code/modules/projectiles/guns/energy/laser/concilium.dm index 4c9dd3cb06a..2ee8212067c 100644 --- a/code/modules/projectiles/guns/energy/laser/concilium.dm +++ b/code/modules/projectiles/guns/energy/laser/concilium.dm @@ -20,7 +20,7 @@ slowdown_hold = 1 //heavy wood stock. Stupidly chonky suitable_cell = /obj/item/cell/large damage_multiplier = 1.2 //Kinda bad beam inside but can be upgraded to be a normal laser lmg! - armor_divisor = 0.1 + armor_penetration = 1.1 init_offset = 3 price_tag = 2000 gun_tags = list(GUN_LASER, GUN_ENERGY) diff --git a/code/modules/projectiles/guns/energy/laser/lasercore.dm b/code/modules/projectiles/guns/energy/laser/lasercore.dm index 4c0fead0f97..95ba43d47e7 100644 --- a/code/modules/projectiles/guns/energy/laser/lasercore.dm +++ b/code/modules/projectiles/guns/energy/laser/lasercore.dm @@ -83,8 +83,9 @@ item_state = "gleam" matter = list(MATERIAL_PLASTEEL = 20, MATERIAL_STEEL = 4, MATERIAL_WOOD = 12, MATERIAL_SILVER = 15, MATERIAL_GOLD = 4, MATERIAL_DIAMOND = 3) //steal the COs laser for copper wire. extra_bulk = 15 //A bit more bulk than an unfolded laser-core. + projectile_type = /obj/item/projectile/beam/midlaser //a step down but we're also a good bit more energy efficient. damage_multiplier = 1.1 //essentially the same bonus you get from - armor_divisor = 0.2 + armor_penetration = 1.2 zoom_factors = list(0.4) extra_damage_mult_scoped = 0.2 max_upgrades = 3 //we're already pretty beefy. diff --git a/code/modules/projectiles/guns/energy/misc/robotguns.dm b/code/modules/projectiles/guns/energy/misc/robotguns.dm index 8152310de21..a9912c4dfad 100644 --- a/code/modules/projectiles/guns/energy/misc/robotguns.dm +++ b/code/modules/projectiles/guns/energy/misc/robotguns.dm @@ -29,7 +29,7 @@ icon = 'icons/obj/robot_items.dmi' icon_state = "security_rifle" item_state = "security_rifle" - damage_multiplier = 1.3 + damage_multiplier = 1.2 //all firemodes are -0.2 so this should go down to 1.0 cell_type = /obj/item/cell/medium/greyson modifystate = null force = WEAPON_FORCE_PAINFUL @@ -38,10 +38,10 @@ charge_meter = TRUE serial_type = "NM" init_firemodes = list( - list(mode_name="Rubbers Burst", projectile_type=/obj/item/projectile/bullet/rifle_75/rubber, fire_sound = 'sound/weapons/guns/fire/NM_PARA.ogg', burst = 2 ,fire_delay = 10, icon="burst"), - list(mode_name="Standard Burst", projectile_type=/obj/item/projectile/bullet/rifle_75, fire_sound = 'sound/weapons/guns/fire/NM_PARA.ogg', burst = 2 ,fire_delay = 10, icon="burst"), - list(mode_name="Hollowpoint Burst", projectile_type=/obj/item/projectile/bullet/rifle_75/lethal, fire_sound = 'sound/weapons/guns/fire/NM_PARA.ogg', burst = 2 , fire_delay = 10, icon="burst"), - list(mode_name="Incendiary Burst", projectile_type=/obj/item/projectile/bullet/rifle_75/incend, fire_sound = 'sound/weapons/guns/fire/NM_PARA.ogg', burst = 2, fire_delay = 20, icon="burst"), + list(mode_name="Rubbers Burst", projectile_type=/obj/item/projectile/bullet/rifle_75/rubber, fire_sound = 'sound/weapons/guns/fire/NM_PARA.ogg', burst = 2 ,fire_delay = 10, icon="burst", damage_mult_add = -0.2), + list(mode_name="Standard Burst", projectile_type=/obj/item/projectile/bullet/rifle_75, fire_sound = 'sound/weapons/guns/fire/NM_PARA.ogg', burst = 2 ,fire_delay = 10, icon="burst", damage_mult_add = -0.2), + list(mode_name="Hollowpoint Burst", projectile_type=/obj/item/projectile/bullet/rifle_75/lethal, fire_sound = 'sound/weapons/guns/fire/NM_PARA.ogg', burst = 2 , fire_delay = 10, icon="burst", damage_mult_add = -0.2), + list(mode_name="Incendiary Burst", projectile_type=/obj/item/projectile/bullet/rifle_75/incend, fire_sound = 'sound/weapons/guns/fire/NM_PARA.ogg', burst = 2, fire_delay = 20, icon="burst", damage_mult_add = -0.2), ) /obj/item/gun/energy/dazzlation //the last gun you'll ever need. diff --git a/code/modules/projectiles/guns/energy/plasma/excubitor.dm b/code/modules/projectiles/guns/energy/plasma/excubitor.dm index 7ba9e9ed8ba..86b7716c7df 100644 --- a/code/modules/projectiles/guns/energy/plasma/excubitor.dm +++ b/code/modules/projectiles/guns/energy/plasma/excubitor.dm @@ -13,7 +13,7 @@ suitable_cell = /obj/item/cell/medium/neotheology projectile_type = /obj/item/projectile/plasma/light force = WEAPON_FORCE_BRUTAL - armor_divisor = ARMOR_PEN_MASSIVE + armor_penetration = ARMOR_PEN_MASSIVE fire_delay = 10 charge_cost = 60 // 10 shots out of a 600M init_recoil = HANDGUN_RECOIL(1) diff --git a/code/modules/projectiles/guns/matter/launcher/books.dm b/code/modules/projectiles/guns/matter/launcher/books.dm index e682b2d04eb..08305f7df80 100644 --- a/code/modules/projectiles/guns/matter/launcher/books.dm +++ b/code/modules/projectiles/guns/matter/launcher/books.dm @@ -45,7 +45,7 @@ //Theirs better weapons then this! fire_sound = 'sound/weapons/magical.ogg' force = WEAPON_FORCE_ROBUST - armor_divisor = ARMOR_PEN_EXTREME + armor_penetration = ARMOR_PEN_EXTREME structure_damage_factor = STRUCTURE_DAMAGE_HEAVY max_stored_matter = 20 fire_delay = 15 diff --git a/code/modules/projectiles/guns/mods/mods.dm b/code/modules/projectiles/guns/mods/mods.dm index ef040e44600..3374e3cfc89 100644 --- a/code/modules/projectiles/guns/mods/mods.dm +++ b/code/modules/projectiles/guns/mods/mods.dm @@ -103,7 +103,7 @@ ..() var/datum/component/item_upgrade/I = AddComponent(/datum/component/item_upgrade) I.weapon_upgrades = list( - GUN_UPGRADE_PEN_MULT = 1.1, + GUN_UPGRADE_PEN_MULT = 1.2, GUN_UPGRADE_PIERC_MULT = 1, // Adds 1 to the gun's penetrating value GUN_UPGRADE_STEPDELAY_MULT = 0.8, GUN_UPGRADE_FIRE_DELAY_MULT = 1.5, @@ -124,7 +124,7 @@ ..() var/datum/component/item_upgrade/I = AddComponent(/datum/component/item_upgrade) I.weapon_upgrades = list( - GUN_UPGRADE_PEN_MULT = 0.75, + GUN_UPGRADE_PEN_MULT = 0.5, GUN_UPGRADE_DAMAGE_BURN = 10, GUN_UPGRADE_OFFSET = 5, GUN_UPGRADE_RECOIL = 1.3, @@ -148,7 +148,7 @@ GUN_UPGRADE_HONK = TRUE, GUN_UPGRADE_RECOIL = 1.2, GUN_UPGRADE_DAMAGE_MULT = 0.8, - GUN_UPGRADE_PEN_MULT = 0.9, + GUN_UPGRADE_PEN_MULT = 0.8, GUN_UPGRADE_FIRE_DELAY_MULT = 1.2, GUN_UPGRADE_MOVE_DELAY_MULT = 1.2, GUN_UPGRADE_MUZZLEFLASH = 1.2, @@ -318,7 +318,7 @@ I.weapon_upgrades = list( GUN_UPGRADE_DAMAGE_MULT = 1.1, GUN_UPGRADE_FIRE_DELAY_MULT = 0.9, //10% delay removed - GUN_UPGRADE_PEN_MULT = 1.1, //we shoot harder, but not by much + GUN_UPGRADE_PEN_MULT = 1.2, //we shoot harder, but not by much GUN_UPGRADE_MOVE_DELAY_MULT = 0.9, //We shoot somehwat faster (not hit scan) GUN_UPGRADE_RECOIL = 0.85, //15% less recoil (doesn't help as much without stacking it with other mods) UPGRADE_BULK = -1 @@ -343,7 +343,7 @@ I.weapon_upgrades = list( GUN_UPGRADE_DAMAGE_MULT = 1.15, //15% more damage GUN_UPGRADE_FIRE_DELAY_MULT = 0.8, //20% delay removed - GUN_UPGRADE_PEN_MULT = 1.5, //we shoot harder + GUN_UPGRADE_PEN_MULT = 2, //we shoot harder GUN_UPGRADE_MOVE_DELAY_MULT = 0.6, //We shoot way faster (not hit scan) GUN_UPGRADE_MUZZLEFLASH = 2, //Bigger flash GUN_UPGRADE_RECOIL = 0.75, //25% less recoil (dosnt help as much without stacking it with other mods) @@ -647,7 +647,6 @@ I.weapon_upgrades = list( GUN_UPGRADE_DAMAGE_BRUTE = 5, GUN_UPGRADE_PEN_BASE = 0.2, - GUN_UPGRADE_PEN_MULT = 1.1, GUN_UPGRADE_PIERC_MULT = 1, GUN_UPGRADE_FIRE_DELAY_MULT = 1.2, GUN_UPGRADE_RECOIL = 1.2, @@ -829,7 +828,7 @@ var/datum/component/item_upgrade/I = AddComponent(/datum/component/item_upgrade) I.weapon_upgrades = list( GUN_UPGRADE_OFFSET = rand(5,15), - GUN_UPGRADE_PEN_MULT = rand(2,4)/10, + GUN_UPGRADE_PEN_MULT = rand(4,9)/10, GUN_UPGRADE_DAMAGE_MULT = rand(4,9)/10, ) I.destroy_on_removal = TRUE @@ -848,7 +847,7 @@ ..() var/datum/component/item_upgrade/I = AddComponent(/datum/component/item_upgrade) I.weapon_upgrades = list( - GUN_UPGRADE_PEN_MULT = rand(2,4)/10, + GUN_UPGRADE_PEN_MULT = rand(4,9)/10, GUN_UPGRADE_STEPDELAY_MULT = rand(12,18)/10, ) I.destroy_on_removal = TRUE diff --git a/code/modules/projectiles/guns/oddity_items.dm b/code/modules/projectiles/guns/oddity_items.dm index c22f8490533..ea102705747 100644 --- a/code/modules/projectiles/guns/oddity_items.dm +++ b/code/modules/projectiles/guns/oddity_items.dm @@ -42,7 +42,7 @@ matter = list(MATERIAL_PLASTEEL = 20, MATERIAL_STEEL = 10) max_shells = 1 damage_multiplier = 2 - penetration_multiplier = 1 + penetration_multiplier = 2 init_recoil = RIFLE_RECOIL(4) price_tag = 3250 gun_parts = null @@ -139,7 +139,7 @@ icon = 'icons/obj/guns/projectile/rafale_bluecross.dmi' damage_multiplier = 1.8 init_recoil = HANDGUN_RECOIL(0.3) - penetration_multiplier = 1.5 + penetration_multiplier = 41 price_tag = 2350 serial_type = "BlueCross" @@ -505,7 +505,7 @@ force = WEAPON_FORCE_HARMLESS throwforce = WEAPON_FORCE_HARMLESS w_class = ITEM_SIZE_NORMAL - armor_divisor = ARMOR_PEN_HALF + armor_penetration = ARMOR_PEN_HALF structure_damage_factor = STRUCTURE_DAMAGE_DESTRUCTIVE tool_qualities = list(QUALITY_HAMMERING = 20) max_upgrades = 2 @@ -529,9 +529,9 @@ real_mod *= 0.5 //Insainly op // message_admins("3ogre: safty_math [safty_math] safty_health [safty_health] delay_adder [delay_adder]") -// message_admins("4ogre: armor_divisor [armor_divisor]") - armor_divisor += real_mod -// message_admins("5ogre: armor_divisor [armor_divisor]") +// message_admins("4ogre: armor_penetration [armor_penetration]") + armor_penetration += real_mod +// message_admins("5ogre: armor_penetration [armor_penetration]") clickdelay_offset = delay_adder .=..() @@ -547,7 +547,7 @@ matter = list(MATERIAL_PLASTEEL = 5, MATERIAL_PLASTIC = 12) force = 15 //Base level backstab_damage = 15 //base is 15 but grows - armor_divisor = ARMOR_PEN_MASSIVE //Less do to how powerful it is + armor_penetration = ARMOR_PEN_MASSIVE //Less do to how powerful it is throwforce = WEAPON_FORCE_ROBUST price_tag = 3500 max_upgrades = 2 @@ -622,7 +622,7 @@ force = WEAPON_FORCE_DANGEROUS switched_on_forcemult = 4.4 //88 w_class = ITEM_SIZE_NORMAL - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP switched_on_penmult = 2.5 //50 matter = list(MATERIAL_SILVER = 2, MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 3) tool_qualities = list(QUALITY_SAWING = 70, QUALITY_CUTTING = 60, QUALITY_WIRE_CUTTING = 30) @@ -708,7 +708,7 @@ //message_admins("2knife: speedy_dashing [speedy_dashing]") if(speedy_dashing > 0) //Hopefully your running around to accually use this - armor_divisor *= speedy_dashing + armor_penetration *= speedy_dashing force *= speedy_dashing if(tracker == target.name && give_coin) coin_tracker += 1 @@ -752,7 +752,7 @@ item_state = "katana" hitsound = 'sound/weapons/heavyslash.ogg' force = WEAPON_FORCE_BRUTAL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW price_tag = 2050 clickdelay_offset = 0 max_upgrades = 1//Already over powered. @@ -781,7 +781,7 @@ icon_state = "spectral_harvester" hitsound = 'sound/weapons/heavyslash.ogg' force = WEAPON_FORCE_GODLIKE //88 damage but + weilding - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE price_tag = 2750 clickdelay_offset = 15 //This stacks with base max_upgrades = 0 //No... @@ -902,7 +902,7 @@ slowdown_hold = 0.3 //Its a bad weapon force = WEAPON_FORCE_PAINFUL - armor_divisor = ARMOR_PEN_SHALLOW + armor_penetration = ARMOR_PEN_SHALLOW has_alt_mode = FALSE /obj/item/shield/riot/mass_grave/check_shield_arc() @@ -916,33 +916,33 @@ max_durability += 1 switch(mass_grave_counter) if(5) - armor_list = list(melee = 2, bullet = 2, energy = 2, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 10, energy = 10, bomb = 0, bio = 0, rad = 0) force = WEAPON_FORCE_DANGEROUS - armor_divisor = ARMOR_PEN_MODERATE + armor_penetration = ARMOR_PEN_MODERATE slowdown = 0.25 slowdown_hold = 0.25 if(10) - armor_list = list(melee = 4, bullet = 4, energy = 4, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 15, bullet = 15, energy = 15, bomb = 0, bio = 0, rad = 0) force = WEAPON_FORCE_ROBUST - armor_divisor = ARMOR_PEN_DEEP + armor_penetration = ARMOR_PEN_DEEP slowdown = 0.20 slowdown_hold = 0.20 if(20) - armor_list = list(melee = 6, bullet = 6, energy = 6, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 25, energy = 25, bomb = 0, bio = 0, rad = 0) force = WEAPON_FORCE_BRUTAL - armor_divisor = ARMOR_PEN_EXTREME + armor_penetration = ARMOR_PEN_EXTREME slowdown = 0.15 slowdown_hold = 0.15 if(50) - armor_list = list(melee = 9, bullet = 9, energy = 9, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 35, bullet = 35, energy = 35, bomb = 0, bio = 0, rad = 0) force = WEAPON_FORCE_LETHAL - armor_divisor = ARMOR_PEN_MASSIVE + armor_penetration = ARMOR_PEN_MASSIVE slowdown = 0.10 slowdown_hold = 0.10 if(100) - armor_list = list(melee = 10, bullet = 10, energy = 10, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 40, bullet = 40, energy = 40, bomb = 0, bio = 0, rad = 0) force = WEAPON_FORCE_LETHAL + 5 - armor_divisor = ARMOR_PEN_MASSIVE + 5 + armor_penetration = ARMOR_PEN_MASSIVE + 5 slowdown = 0.05 slowdown_hold = 0.05 @@ -950,7 +950,7 @@ //Endless Growth name = "mass grave marker shield" force += 1 - armor_divisor += 1 + armor_penetration += 1 post_moder_game_balance *= 1.1 //150 x 1.1 = 165 -> 165 x 1.1 = 181.5(182) ect ect post_moder_game_balance = round(post_moder_game_balance) @@ -991,7 +991,7 @@ icon_state = "regaloutfit_redder" //Sprite by Ayshe / gid_git item_state = "regaloutfit_redder" blood_overlay_type = "coat" - armor_list = list(melee = 2, bullet = 1, energy = 1, bomb = 0, bio = 0, rad = 0) + armor_list = list(melee = 10, bullet = 5, energy = 5, bomb = 0, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS min_cold_protection_temperature = T0C - 60 diff --git a/code/modules/projectiles/guns/projectile/automatic/scaffold.dm b/code/modules/projectiles/guns/projectile/automatic/scaffold.dm index d237a5387ac..4f01e142370 100644 --- a/code/modules/projectiles/guns/projectile/automatic/scaffold.dm +++ b/code/modules/projectiles/guns/projectile/automatic/scaffold.dm @@ -20,7 +20,7 @@ reload_sound = 'sound/weapons/guns/interact/sfrifle_magin.ogg' cocked_sound = 'sound/weapons/guns/interact/sfrifle_cock.ogg' damage_multiplier = 1.5 //simular to 257 - penetration_multiplier = 2 + penetration_multiplier = 3 init_recoil = LMG_RECOIL(0.6) serial_type = "GP" diff --git a/code/modules/projectiles/guns/projectile/automatic/slaught_o_matic.dm b/code/modules/projectiles/guns/projectile/automatic/slaught_o_matic.dm index 9e6cd3e8da1..32c13675753 100644 --- a/code/modules/projectiles/guns/projectile/automatic/slaught_o_matic.dm +++ b/code/modules/projectiles/guns/projectile/automatic/slaught_o_matic.dm @@ -26,7 +26,7 @@ var/choosen_color = "" damage_multiplier = 0.8 - penetration_multiplier = 0.8 + penetration_multiplier = 0.2 init_recoil = HANDGUN_RECOIL(1.6) gun_parts = list(/obj/item/stack/material/plastic = 4) diff --git a/code/modules/projectiles/guns/projectile/automatic/trouble_shooter.dm b/code/modules/projectiles/guns/projectile/automatic/trouble_shooter.dm index faf978c4bdb..ca6af00cb57 100644 --- a/code/modules/projectiles/guns/projectile/automatic/trouble_shooter.dm +++ b/code/modules/projectiles/guns/projectile/automatic/trouble_shooter.dm @@ -13,7 +13,7 @@ fire_sound = 'sound/weapons/guns/fire/batrifle_fire.ogg' price_tag = 3400 damage_multiplier = 1.5 - penetration_multiplier = 1 + penetration_multiplier = 3 pierce_multiplier = 2 init_recoil = HMG_RECOIL(0.5) init_firemodes = list( diff --git a/code/modules/projectiles/guns/projectile/little_comet.dm b/code/modules/projectiles/guns/projectile/little_comet.dm index 18c1ffdeb8a..c4bbd26fdb6 100644 --- a/code/modules/projectiles/guns/projectile/little_comet.dm +++ b/code/modules/projectiles/guns/projectile/little_comet.dm @@ -14,7 +14,7 @@ matter = list(MATERIAL_PLASTEEL = 12, MATERIAL_WOOD = 6) price_tag = 5000 damage_multiplier = 1.1 //because pistol round - penetration_multiplier = 10 //Max. + penetration_multiplier = 20 pierce_multiplier = 5 init_recoil = RIFLE_RECOIL(0.3) gun_tags = list(GUN_PROJECTILE, GUN_CALIBRE_9MM, GUN_INTERNAL_MAG, GUN_REVOLVER, GUN_SILENCABLE) diff --git a/code/modules/projectiles/guns/projectile/pistol/rebar.dm b/code/modules/projectiles/guns/projectile/pistol/rebar.dm index 9cb3ea33787..ee38a19a6e3 100644 --- a/code/modules/projectiles/guns/projectile/pistol/rebar.dm +++ b/code/modules/projectiles/guns/projectile/pistol/rebar.dm @@ -14,7 +14,7 @@ mag_well = MAG_WELL_PISTOL damage_multiplier = 1.6 init_recoil = HANDGUN_RECOIL(1) - penetration_multiplier = 1 + penetration_multiplier = 2 gun_tags = list(GUN_PROJECTILE, GUN_MAGWELL, GUN_CALIBRE_12MM, GUN_SILENCABLE) allow_greyson_mods = TRUE diff --git a/code/modules/projectiles/guns/projectile/pistol/silenced.dm b/code/modules/projectiles/guns/projectile/pistol/silenced.dm index 5a8ea0830ed..dd13665477a 100644 --- a/code/modules/projectiles/guns/projectile/pistol/silenced.dm +++ b/code/modules/projectiles/guns/projectile/pistol/silenced.dm @@ -15,7 +15,7 @@ mag_well = MAG_WELL_PISTOL proj_step_multiplier = 0.8 damage_multiplier = 1.6 - penetration_multiplier = 1.5 + penetration_multiplier = 3 init_recoil = HANDGUN_RECOIL(0.4) gun_tags = list(GUN_PROJECTILE, GUN_MAGWELL) serial_type = "SD GmbH" diff --git a/code/modules/projectiles/guns/projectile/revolver/breakaction.dm b/code/modules/projectiles/guns/projectile/revolver/breakaction.dm index 8c5d212b17d..7b39f020233 100644 --- a/code/modules/projectiles/guns/projectile/revolver/breakaction.dm +++ b/code/modules/projectiles/guns/projectile/revolver/breakaction.dm @@ -82,7 +82,7 @@ icon_state = "mateba" item_state = "mateba" caliber = CAL_50 - max_shells = 5 + origin_tech = list(TECH_COMBAT = 10, TECH_MATERIAL = 5) matter = list(MATERIAL_PLASTEEL = 20, MATERIAL_WOOD = 6, MATERIAL_PLATINUM = 2) fire_sound = 'sound/weapons/guns/fire/12mm_revolver.ogg' @@ -90,7 +90,7 @@ damage_multiplier = 1.3 // Not as good as the Deckard in penetration for balance purposes, still quite good. init_recoil = HANDGUN_RECOIL(0.5) // Takes no mods that assist with recoil. wield_delay = 0.6 SECOND - wield_delay_factor = 0.3 // 30 vig, heavy gun - but still a handgun. + wield_delay_factor = 0.6 // 60 vig, heavy gun can_dual = FALSE max_upgrades = 4 // Deckard on steroids, let's not get out of hand blacklist_upgrades = list( // Gun already has amazing recoil control, barrels that reduce recoil interfere with the sliding recoil control mechanism. diff --git a/code/modules/projectiles/guns/projectile/revolver/deckard.dm b/code/modules/projectiles/guns/projectile/revolver/deckard.dm index d6afdcd083c..257fbcf2392 100644 --- a/code/modules/projectiles/guns/projectile/revolver/deckard.dm +++ b/code/modules/projectiles/guns/projectile/revolver/deckard.dm @@ -5,7 +5,7 @@ icon_state = "deckard" caliber = CAL_50 origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) - max_shells = 5 // Standardizing speedloaders //Absolutely not. Stop powercreeping up the mag-capacities of weapons that have anemic performance, just make the damage more menaningful - CDB + max_shells = 6 matter = list(MATERIAL_PLASTEEL = 12, MATERIAL_WOOD = 6) price_tag = 1300 //one of most robust revolvers here damage_multiplier = 1.2 diff --git a/code/modules/projectiles/guns/projectile/revolver/longboi.dm b/code/modules/projectiles/guns/projectile/revolver/longboi.dm index 5bce5682d3c..c2090e9e335 100644 --- a/code/modules/projectiles/guns/projectile/revolver/longboi.dm +++ b/code/modules/projectiles/guns/projectile/revolver/longboi.dm @@ -8,7 +8,7 @@ caliber = CAL_50 slot_flags = SLOT_BACK|SLOT_BELT //Can't fit a holster due to length origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) - max_shells = 5 + max_shells = 6 matter = list(MATERIAL_PLASTEEL = 12, MATERIAL_WOOD = 6) price_tag = 1250 //It's a novelty item. damage_multiplier = 0.9 diff --git a/code/modules/projectiles/guns/projectile/revolver/revolver.dm b/code/modules/projectiles/guns/projectile/revolver/revolver.dm index 53019d12d44..1a1dad03365 100644 --- a/code/modules/projectiles/guns/projectile/revolver/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver/revolver.dm @@ -19,7 +19,7 @@ price_tag = 650 fire_delay = 3 //all revolvers can fire faster, but have huge recoil damage_multiplier = 1.2 - armor_divisor = -0.35 // Insanely powerful handcannon, but worthless against heavy armor + armor_penetration = 0.65 // Insanely powerful handcannon, but worthless against heavy armor init_recoil = HANDGUN_RECOIL(1.3) gun_tags = list(GUN_PROJECTILE, GUN_INTERNAL_MAG, GUN_REVOLVER) var/drawChargeMeter = TRUE diff --git a/code/modules/projectiles/guns/projectile/revolver/tacticool_revolver.dm b/code/modules/projectiles/guns/projectile/revolver/tacticool_revolver.dm index c47e4abce71..9176a295a7b 100644 --- a/code/modules/projectiles/guns/projectile/revolver/tacticool_revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver/tacticool_revolver.dm @@ -6,7 +6,7 @@ item_state = "tacticool_revolver" fire_sound = 'sound/weapons/guns/fire/12mm_revolver.ogg' caliber = CAL_50 - max_shells = 5 + max_shells = 6 fire_delay = 4 drawChargeMeter = FALSE origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) diff --git a/code/modules/projectiles/guns/projectile/revolver/wayfarer.dm b/code/modules/projectiles/guns/projectile/revolver/wayfarer.dm index d1f35bc5953..d0cd5d2c3ad 100644 --- a/code/modules/projectiles/guns/projectile/revolver/wayfarer.dm +++ b/code/modules/projectiles/guns/projectile/revolver/wayfarer.dm @@ -18,7 +18,7 @@ can_dual = TRUE price_tag = 1400 damage_multiplier = 1.6 - penetration_multiplier = 1 + penetration_multiplier = 2 init_recoil = RIFLE_RECOIL(0.1) gun_tags = list(GUN_PROJECTILE, GUN_INTERNAL_MAG, GUN_REVOLVER) max_upgrades = 7 //Holds more slots do to being exl gun and not that good cal wise/easy to get diff --git a/code/modules/projectiles/guns/projectile/shotgun/buffalo.dm b/code/modules/projectiles/guns/projectile/shotgun/buffalo.dm index ec758178271..d8cd19a8774 100644 --- a/code/modules/projectiles/guns/projectile/shotgun/buffalo.dm +++ b/code/modules/projectiles/guns/projectile/shotgun/buffalo.dm @@ -22,7 +22,7 @@ bulletinsert_sound = 'sound/weapons/guns/interact/shotgun_insert.ogg' matter = list(MATERIAL_PLASTEEL = 20, MATERIAL_PLASTIC = 10) price_tag = 800 - penetration_multiplier = 1.5 + penetration_multiplier = 1.8 pierce_multiplier = 2 damage_multiplier = 0.8 init_recoil = RIFLE_RECOIL(1.4) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index cda3a6351ae..d4d16fc164d 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -61,7 +61,7 @@ var/can_ricochet = FALSE // defines if projectile can or cannot ricochet. var/ricochet_id = 0 // if the projectile ricochets, it gets its unique id in order to process iteractions with adjacent walls correctly. -// var/ricochet_mod = 1 //How much we affect the likeliness of a round to bounce. This number is modified negatively by 10% of the projecties AP(thus, ricochet_mult = 1.5 on ap 10 gun is actually 1.4). high cal rubbers have lower mult than low cal rubbers and are further penalized by having AP and AP mod on their rounds/weapons more often. + var/ricochet_mod = 1 //How much we affect the likeliness of a round to bounce. This number is modified negatively by 10% of the projecties AP(thus, ricochet_mult = 1.5 on ap 10 gun is actually 1.4). high cal rubbers have lower mult than low cal rubbers and are further penalized by having AP and AP mod on their rounds/weapons more often. var/list/damage_types = list(BRUTE = 10) //BRUTE, BURN, TOX, OXY, CLONE, HALLOSS -> int are the only things that should be in here var/nodamage = FALSE //Determines if the projectile will skip any damage inflictions @@ -153,7 +153,7 @@ /obj/item/projectile/proc/get_total_damage() var/val = 0 for(var/i in damage_types) - val += damage_types[i] + val += damage_types[i] * post_penetration_dammult return val /obj/item/projectile/proc/is_halloss() @@ -174,8 +174,8 @@ if(HALLOSS in damage_types) damage_types[HALLOSS] *= newmult -/obj/item/projectile/add_projectile_penetration(newmult) - armor_divisor = initial(armor_divisor) + newmult +/obj/item/projectile/multiply_projectile_penetration(newmult) + armor_penetration = initial(armor_penetration) * newmult /obj/item/projectile/multiply_pierce_penetration(newmult) penetrating = initial(penetrating) + newmult @@ -229,15 +229,12 @@ if(!embed || damage_types[BRUTE] <= 0) return FALSE return TRUE -/* + /obj/item/projectile/proc/get_structure_damage() return ((damage_types[BRUTE] + damage_types[BURN]) * structure_damage_factor) -*/ -/obj/item/projectile/proc/get_structure_damage(var/injury_type) - if(!injury_type) // Assume homogenous - return (damage_types[BRUTE] + damage_types[BURN]) * wound_check(INJURY_TYPE_HOMOGENOUS, wounding_mult, edge, sharp) * 2 - else - return (damage_types[BRUTE] + damage_types[BURN]) * wound_check(injury_type, wounding_mult, edge, sharp) * 2 + +/obj/item/projectile/proc/get_ricochet_modifier() + return (ricochet_mod - (armor_penetration * 0.01)) //Return ricochet mod(default 1) modified by AP. E.G 1 - (AP(10) * 0.01) = 0.1. Thus 10% less likely to bounce per 10ap. //return 1 if the projectile should be allowed to pass through after all, 0 if not. /obj/item/projectile/proc/check_penetrate(atom/A) @@ -284,11 +281,11 @@ for (var/entry in livingfirer.projectile_damage_increment) damage_types[entry] += livingfirer.projectile_damage_increment[entry] - if (livingfirer.projectile_armor_divisor_mult != 1) - add_projectile_penetration(livingfirer.projectile_armor_divisor_mult) + if (livingfirer.projectile_armor_penetration_mult != 1) + multiply_projectile_penetration(livingfirer.projectile_armor_penetration_mult) - if (livingfirer.projectile_armor_divisor_adjustment) - armor_divisor *= livingfirer.projectile_armor_divisor_adjustment + if (livingfirer.projectile_armor_penetration_adjustment) + armor_penetration += livingfirer.projectile_armor_penetration_adjustment if (livingfirer.projectile_speed_mult != 1) multiply_projectile_step_delay(livingfirer.projectile_speed_mult) @@ -897,7 +894,7 @@ damage_drop_off = max(1, range_shot - affective_damage_range) / 100 //How far we were shot - are affective range. This one is for damage drop off ap_drop_off = max(1, range_shot - affective_ap_range) //How far we were shot - are affective range. This one is for AP drop off - armor_divisor = max(0, armor_divisor - ap_drop_off) + armor_penetration = max(0, armor_penetration - ap_drop_off) agony = max(0, agony - range_shot) //every step we lose one agony, this stops sniping with rubbers. //log_and_message_admins("LOG 2| range shot [range_shot] | drop ap [ap_drop_off] | drop damg | [damage_drop_off] | penetrating [penetrating].") @@ -966,7 +963,7 @@ damage_drop_off = max(1, range_shot - affective_damage_range) / 100 //How far we were shot - are affective range. This one is for damage drop off ap_drop_off = max(1, range_shot - affective_ap_range) //How far we were shot - are affective range. This one is for AP drop off - armor_divisor = max(0, armor_divisor - ap_drop_off) + armor_penetration = max(0, armor_penetration - ap_drop_off) agony = max(0, agony - range_shot) //every step we lose one agony, this stops sniping with rubbers. //log_and_message_admins("LOG 2| range shot [range_shot] | drop ap [ap_drop_off] | drop damg | [damage_drop_off] | penetrating [penetrating].") @@ -1111,7 +1108,7 @@ P.activate(P.lifetime) /obj/item/projectile/proc/block_damage(var/amount, atom/A) - amount /= armor_divisor + amount /= armor_penetration var/dmg_total = 0 var/dmg_remaining = 0 for(var/dmg_type in damage_types) @@ -1120,9 +1117,8 @@ dmg_total += dmg if(dmg && amount) var/dmg_armor_difference = dmg - amount - var/is_difference_positive = dmg_armor_difference > 0 - amount = is_difference_positive ? 0 : -dmg_armor_difference - dmg = is_difference_positive ? dmg_armor_difference : 0 + amount = dmg_armor_difference ? 0 : -dmg_armor_difference + dmg = dmg_armor_difference ? dmg_armor_difference : 0 if(!(dmg_type == HALLOSS)) dmg_remaining += dmg if(dmg > 0) diff --git a/code/modules/projectiles/projectile/ameridian.dm b/code/modules/projectiles/projectile/ameridian.dm index 6155229fdc5..52e05347e9c 100644 --- a/code/modules/projectiles/projectile/ameridian.dm +++ b/code/modules/projectiles/projectile/ameridian.dm @@ -5,7 +5,7 @@ hitsound_wall = 'sound/weapons/guns/misc/laser_searwall.ogg' damage_types = list(BURN = 40) // 20 more damage than the Cog irradiate = 15 - armor_divisor = 1.15 //less AP than the Cog + armor_penetration = 15 //less AP than the Cog check_armour = ARMOR_ENERGY hitscan = TRUE invisibility = 101 //beam projectiles are invisible as they are rendered by the effect engine @@ -20,7 +20,7 @@ name = "ameridian shard" damage_types = list(BRUTE = 30) //Were a bit better then 10mm to stay competitive irradiate = 10 - armor_divisor = 1.15 + armor_penetration = 15 check_armour = ARMOR_BULLET embed = TRUE shrapnel_type = /obj/item/material/shard/ameridian diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 89d8119eb07..daf61ba1084 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -11,8 +11,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, hitsound_wall = 'sound/weapons/guns/misc/laser_searwall.ogg' pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE damage_types = list(BURN = 20) - armor_divisor = 1.2 //Some AP - wounding_mult = 1.2 //and some wounding mult + armor_penetration = 20 //Some AP check_armour = ARMOR_ENERGY var/frequency = 1 hitscan = 1 @@ -29,7 +28,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, /obj/item/projectile/beam/check_penetrate(var/atom/A) // For shields to actually block projectiles if(istype(A, /obj/item/shield)) var/obj/item/shield/S = A - var/loss = round(S.durability / armor_divisor * 8) + var/loss = round(S.durability / armor_penetration / 8) block_damage(loss, A) A.visible_message(SPAN_WARNING("\The [src] is weakened by the \the [A]!")) playsound(A.loc, 'sound/weapons/shield/shielddissipate.ogg', 50, 1) @@ -38,22 +37,22 @@ In pvp they also have more lasting damages, such as infections, pain form burns, /obj/item/projectile/beam/musket name = "Musket laser" - armor_divisor = 2.5 //Good AP, its for slow firing weapon + armor_penetration = 40 //Good AP, its for slow firing weapon eyeblur = 1 damage_types = list(BURN = 25) //According to Rain Chule recommendation /obj/item/projectile/beam/drone damage_types = list(BURN = 15) - armor_divisor = 1.1 //Some AP + armor_penetration = 10 //Some AP recoil = 2 /obj/item/projectile/beam/pulse/drone damage_types = list(BURN = 10) - armor_divisor = 1 //No AP we deal 30 damage in 3 shots + armor_penetration = 5 //No AP we deal 30 damage in 3 shots /obj/item/projectile/beam/weak damage_types = list(BURN = 16) - armor_divisor = 1.15 //Some AP + armor_penetration = 15 //Some AP recoil = 2 // Laser bullets are your premium and expensive upgrade to your traditional bullets. @@ -64,52 +63,52 @@ In pvp they also have more lasting damages, such as infections, pain form burns, // 223 is a middle ground between 408 and 75. Damage of 408, AP of 75 /obj/item/projectile/beam/laser_223 damage_types = list(BURN = 20) - armor_divisor = 2 + armor_penetration = 20 recoil = 5 wounding_mult = WOUNDING_SERIOUS /* /obj/item/projectile/beam/laser_223/ap damage_types = list(BURN = 16) - armor_divisor = 3 + armor_penetration = 36 recoil = 7 wounding_mult = WOUNDING_NORMAL penetrating = 1 /obj/item/projectile/beam/laser_223/lethal damage_types = list(BURN = 27) - armor_divisor = 1 + armor_penetration = 15 recoil = 5 wounding_mult = WOUNDING_WIDE */ /obj/item/projectile/beam/weak/pistol_35 damage_types = list(BURN = 15) - armor_divisor = 2 + armor_penetration = 20 recoil = 2.5 /obj/item/projectile/beam/weak/light_rifle_257 damage_types = list(BURN = 14) - armor_divisor = 3 + armor_penetration = 30 recoil = 3.5 /obj/item/projectile/beam/weak/rifle_75 damage_types = list(BURN = 15.5) - armor_divisor = 3 + armor_penetration = 36 recoil = 5 /obj/item/projectile/beam/weak/heavy_rifle_408 damage_types = list(BURN = 20) - armor_divisor = 4 + armor_penetration = 46 recoil = 10 /obj/item/projectile/beam/weak/magnum_40 damage_types = list(BURN = 19) - armor_divisor = 3 + armor_penetration = 33 recoil = 4.5 /obj/item/projectile/beam/weak/kurtz_50 damage_types = list(BURN = 23.5) - armor_divisor = 3 + armor_penetration = 35 recoil = 8 /obj/item/projectile/beam/weak/smg @@ -121,23 +120,23 @@ In pvp they also have more lasting damages, such as infections, pain form burns, /obj/item/projectile/beam/weak/lethal damage_types = list(BURN = 20) - armor_divisor = 1 //cant have negitive armor sadly + armor_penetration = 1 /obj/item/projectile/beam/weak/ap damage_types = list(BURN = 15) - armor_divisor = 1.25 + armor_penetration = 25 /obj/item/projectile/beam/weak/ap/reaver damage_types = list(BURN = 16.5) /obj/item/projectile/beam/shotgun damage_types = list(BURN = 35) //Normal slugs deal 45 - armor_divisor = 1.1 + armor_penetration = 10 recoil = 2 /obj/item/projectile/beam/shotgun/strong damage_types = list(BURN = 54) // Default slug (/obj/item/projectile/bullet/shotgun) deal 54 damage - armor_divisor = 1.1 + armor_penetration = 10 eyeblur = 4 recoil = 4 @@ -151,14 +150,13 @@ In pvp they also have more lasting damages, such as infections, pain form burns, /obj/item/projectile/beam/midlaser // Middle ground between better than stock but worse than heavy. damage_types = list(BURN = 25) - armor_divisor = 1.25 + armor_penetration = 26 /obj/item/projectile/beam/heavylaser name = "heavy laser" icon_state = "heavylaser" damage_types = list(BURN = 35) - armor_divisor = 1.5 - wounding_mult = 1.3 + armor_penetration = 25 eyeblur = 4 muzzle_type = /obj/effect/projectile/laser_heavy/muzzle tracer_type = /obj/effect/projectile/laser_heavy/tracer @@ -169,8 +167,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, name = "x-ray beam" icon_state = "xray" damage_types = list(BURN = 25) - armor_divisor = 2.25 - wounding_mult = 1 + armor_penetration = 40 eyeblur = 4 recoil = 1 penetrating = 1 //Pierces walls @@ -182,8 +179,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, name = "pulse" icon_state = "u_laser" damage_types = list(BURN = 40) - armor_divisor = 2 //it's a pulse blast. - wounding_mult = 1.5 + armor_penetration = 25 //it's a pulse blast. eyeblur = 4 recoil = 3 muzzle_type = /obj/effect/projectile/laser_pulse/muzzle @@ -198,7 +194,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, /obj/item/projectile/beam/pulse/heavy name = "heavy pulse" damage_types = list(BURN = 50) - armor_divisor = 2.25 + armor_penetration = 35 recoil = 5 /obj/item/projectile/beam/emitter @@ -214,7 +210,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, name = "nuclear beam" icon_state = "emitter" damage_types = list(BURN = 40) - armor_divisor = 1.75 //Experimental and extremely rare but also self recharging so take it as you will + armor_penetration = 30 //Experimental and extremely rare but also self recharging so take it as you will recoil = 7 muzzle_type = /obj/effect/projectile/emitter/muzzle @@ -234,7 +230,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, name = "dissolver ray" icon_state = "emitter" damage_types = list(BURN = 30) //Less burn but also less recoil - armor_divisor = 4 //Experimental and extremely rare but also self recharging so take it as you will + armor_penetration = 40 //Experimental and extremely rare but also self recharging so take it as you will recoil = 5 //Less recoil but also less burn muzzle_type = /obj/effect/projectile/emitter/muzzle @@ -254,7 +250,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, name = "desolator ray" icon_state = "xray" damage_types = list(BURN = 20) //Worse Xray - armor_divisor = 2 + armor_penetration = 25 eyeblur = 4 recoil = 6 penetrating = 1 @@ -276,7 +272,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, name = "sniper beam" icon_state = "xray" damage_types = list(BURN = 50) - armor_divisor = 2 + armor_penetration = 40 //stun = 3 //weaken = 3 //stutter = 3 @@ -289,7 +285,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, /obj/item/projectile/beam/stun name = "stun beam" icon_state = "stun" - armor_divisor = 1 + armor_penetration = 1 nodamage = 1 taser_effect = 1 damage_types = list(BURN = 1, HALLOSS = 30) @@ -316,7 +312,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, name = "lighting" icon_state = "stun" damage_types = list(BURN = 10, HALLOSS = 5) - armor_divisor = 1 + armor_penetration = 1 eyeblur = 0 muzzle_type = /obj/effect/projectile/stun/muzzle @@ -328,7 +324,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, name = "sin" icon_state = "xray" damage_types = list(TOX = 10) - armor_divisor = 1 + armor_penetration = 1 eyeblur = 0 muzzle_type = /obj/effect/projectile/xray/muzzle tracer_type = /obj/effect/projectile/xray/tracer @@ -339,7 +335,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, name = "grace" icon_state = "xray" damage_types = list(TOX = 0)//Shouldnt do anything but just in case its toxin - armor_divisor = 1 + armor_penetration = 1 stun = 0 weaken = 0 eyeblur = 0 @@ -372,7 +368,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, /obj/item/projectile/beam/tesla name = "lightning" damage_types = list(BURN = 30) - armor_divisor = 1.1 + armor_penetration = 10 hitscan = TRUE muzzle_type = /obj/effect/projectile/tesla/muzzle @@ -391,7 +387,7 @@ In pvp they also have more lasting damages, such as infections, pain form burns, name = "infrared radiation" icon_state = "invisible" damage_types = list(BURN = 15) - armor_divisor = 1.25 //less ap + armor_penetration = 15 //less ap eyeblur = 0 muzzle_type = null tracer_type = null diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index d18ba070a29..eceb33cafbc 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -70,26 +70,26 @@ Bullet also tend to have more armor against them do to this and can be douged un var/chance = 0 if(istype(A, /turf/simulated/wall)) // TODO: refactor this from functional into OOP var/turf/simulated/wall/W = A - chance = round(penetrating/2 * armor_divisor * 2 / W.material.integrity * 180) + chance = round(penetrating/2 * armor_penetration / 4 * 2 / W.material.integrity * 180) else if(istype(A, /obj/item/shield)) var/obj/item/shield/S = A - chance = round(armor_divisor * 2 / S.durability * 180) + chance = round(armor_penetration / 4 * 2 / S.durability * 180) else if(istype(A, /obj/machinery/door)) var/obj/machinery/door/D = A - chance = round(penetrating/2 * armor_divisor * 2 / D.maxHealth * 180) + chance = round(penetrating/2 * armor_penetration / 4 * 2 / D.maxHealth * 180) if(D.glass) chance *= 2 else if(istype(A, /obj/structure/girder)) chance = 100 else if(istype(A, /obj/structure/low_wall)) - chance = round(penetrating/2 * armor_divisor * 2 / 150 * 180) // hardcoded, value is same as steel wall, will have to be changed once low walls have integrity + chance = round(penetrating/2 * armor_penetration / 4 * 2 / 150 * 180) // hardcoded, value is same as steel wall, will have to be changed once low walls have integrity else if(istype(A, /obj/structure/table)) var/obj/structure/table/T = A - chance = round(penetrating/2 * armor_divisor * 2 / T.maxHealth * 180) + chance = round(penetrating/2 * armor_penetration / 4 * 2 / T.maxHealth * 180) else if(istype(A, /obj/structure/barricade)) var/obj/structure/barricade/B = A - chance = round(penetrating/2 * armor_divisor * 2 / B.material.integrity * 180) + chance = round(penetrating/2 * armor_penetration / 4 * 2 / B.material.integrity * 180) else if(istype(A, /obj/machinery) || istype(A, /obj/structure)) - chance = armor_divisor * penetrating/2 + chance = armor_penetration / 4 * penetrating/2 if(prob(chance) || (A in holder.force_penetration_on)) if(A.opacity || istype(A, /obj/item/shield)) diff --git a/code/modules/projectiles/projectile/bullettypes.dm b/code/modules/projectiles/projectile/bullettypes.dm index d3304069f8f..982b80a06fe 100644 --- a/code/modules/projectiles/projectile/bullettypes.dm +++ b/code/modules/projectiles/projectile/bullettypes.dm @@ -11,8 +11,8 @@ //*********************************// ///9mm/// /obj/item/projectile/bullet/pistol_35 - damage_types = list(BRUTE = 24) - armor_divisor = 0.4 + damage_types = list(BRUTE = 15) + armor_penetration = 5 step_delay = 0.65 can_ricochet = TRUE wounding_mult = WOUNDING_SMALL @@ -21,18 +21,19 @@ recoil = 5 /obj/item/projectile/bullet/pistol_35/hv - damage_types = list(BRUTE = 18) - armor_divisor = 1.2 + damage_types = list(BRUTE = 10) + armor_penetration = 20 + wounding_mult = WOUNDING_TINY step_delay = 0.5 affective_damage_range = 5 affective_ap_range = 5 can_ricochet = TRUE - sharp = TRUE recoil = 6 /obj/item/projectile/bullet/pistol_35/practice name = "practice bullet" - damage_types = list(BRUTE = 4) + damage_types = list(BRUTE = 2, HALLOSS = 3) + armor_penetration = 0 embed = FALSE sharp = FALSE step_delay = 0.75 @@ -41,26 +42,27 @@ /obj/item/projectile/bullet/pistol_35/lethal name = "hollow-point bullet" - damage_types = list(BRUTE = 18) - armor_divisor = 0.2 + damage_types = list(BRUTE = 8, HALLOSS = 6) + post_penetration_dammult = 3 + armor_penetration = 0 wounding_mult = WOUNDING_NORMAL penetrating = 0 can_ricochet = FALSE embed = TRUE - sharp = FALSE + sharp = TRUE step_delay = 0.65 recoil = 5 /obj/item/projectile/bullet/pistol_35/rubber name = "rubber bullet" icon_state = "rubber" - damage_types = list(BRUTE = 12, HALLOSS = 22) - armor_divisor = 0.4 + damage_types = list(BRUTE = 10, HALLOSS = 2) + armor_penetration = 0 wounding_mult = WOUNDING_SMALL embed = FALSE //Prob should have a chance to embed, but makes close to no sense to do this for 9mm at least. sharp = FALSE can_ricochet = TRUE -// //ricochet_mod = 3 //lower cal rubbers are the most likely to ricochet. + ricochet_mod = 3 //lower cal rubbers are the most likely to ricochet. recoil = 4 ignition_source = FALSE @@ -69,6 +71,7 @@ damage_types = list(BRUTE = 0, HALLOSS = 25) var/spray = "stoxin" can_ricochet = FALSE + armor_penetration = 0 /obj/item/projectile/bullet/pistol_35/rubber/soporific/New() ..() @@ -84,8 +87,9 @@ /obj/item/projectile/bullet/pistol_35/rubber/soporific/cbo name = "soporific condensed plastic bullet" - damage_types = list(HALLOSS = 30) + damage_types = list(BRUTE = 0, HALLOSS = 30) can_ricochet = FALSE + armor_penetration = 0 /obj/item/projectile/bullet/pistol_35/rubber/soporific/cbo/on_hit(atom/target, def_zone = null) if(isliving(target)) @@ -97,10 +101,10 @@ name = "pepperball" damage_types = list(BRUTE = 2, HALLOSS = 22) //Pepperballs disipate upon impact. They'll sting like shit, but won't do much in a low-velocity round. step_delay = 0.6 //a little slower than rubber rounds - these are just pepperspray balls + armor_penetration = 0 var/spray = "condensedcapsaicin" embed = FALSE can_ricochet = FALSE - wounding_mult = WOUNDING_SMALL /obj/item/projectile/bullet/pistol_35/rubber/pepperball/New() ..() @@ -115,8 +119,8 @@ reagents.trans_to_mob(L, 3, CHEM_TOUCH, copy = FALSE) /obj/item/projectile/bullet/pistol_35/scrap - damage_types = list(BRUTE = 14) - armor_divisor = 0.25 + damage_types = list(BRUTE = 12) + armor_penetration = 0 affective_damage_range = 1 affective_ap_range = 1 recoil = 3 @@ -124,6 +128,7 @@ /obj/item/projectile/bullet/pistol_35/biomatter name = "biomatter bullet" damage_types = list(BURN = 15, HALLOSS = 20) + armor_penetration = 0 penetrating = 0 can_ricochet = FALSE embed = FALSE @@ -138,8 +143,8 @@ /obj/item/projectile/bullet/magnum_40 icon_state = "bullet_magnum" - damage_types = list(BRUTE = 28) - armor_divisor = 0.5 + damage_types = list(BRUTE = 19) + armor_penetration = 10 wounding_mult = WOUNDING_NORMAL can_ricochet = TRUE step_delay = 0.4 @@ -150,7 +155,8 @@ /obj/item/projectile/bullet/magnum_40/practice name = "practice bullet" - damage_types = list(BRUTE = 4) + damage_types = list(BRUTE = 2, HALLOSS = 4) + armor_penetration = 0 embed = FALSE sharp = FALSE can_ricochet = FALSE @@ -158,38 +164,39 @@ recoil = 4 /obj/item/projectile/bullet/magnum_40/hv - damage_types = list(BRUTE = 22) - armor_divisor = 1.3 + damage_types = list(BRUTE = 16) + armor_penetration = 33 penetrating = 1 step_delay = 0.25 nocap_structures = TRUE //Door breaching - sharp = TRUE + wounding_mult = WOUNDING_SMALL affective_damage_range = 5 affective_ap_range = 5 recoil = 9 /obj/item/projectile/bullet/magnum_40/lethal name = "hollow-point bullet" - damage_types = list(BRUTE = 22) - armor_divisor = 0.25 + damage_types = list(BRUTE = 9, HALLOSS = 11) + armor_penetration = 0 wounding_mult = WOUNDING_SERIOUS + post_penetration_dammult = 3 penetrating = 0 can_ricochet = FALSE embed = TRUE - sharp = FALSE + sharp = TRUE step_delay = 0.5 recoil = 7 /obj/item/projectile/bullet/magnum_40/rubber name = "rubber bullet" icon_state = "rubber" - damage_types = list(BRUTE = 15, HALLOSS = 30) //Basically a lower-damage HP but with more agony damage to it. Technically LTL - but not really ideal for it. Crowd-suppression. - armor_divisor = 0.5 + damage_types = list(BRUTE = 14, HALLOSS = 30) //Basically a lower-damage HP but with more agony damage to it. Technically LTL - but not really ideal for it. Crowd-suppression. + armor_penetration = 10 wounding_mult = WOUNDING_SMALL embed = TRUE //If you shoot someone with a rubber, it will take out an eye - or require surgery if it's high-velocity. Anything over 9mm should, realistically, fuck you up. sharp = FALSE can_ricochet = TRUE - //ricochet_mod = 2.5 + ricochet_mod = 2.5 step_delay = 0.5 recoil = 6 ignition_source = FALSE @@ -198,6 +205,7 @@ name = "pepperball" damage_types = list(BRUTE = 4, HALLOSS = 30) //Pepperballs disipate upon impact. They'll sting like shit, but won't do much in a low-velocity round. step_delay = 0.6 //a little slower than rubber rounds - these are just pepperspray balls + armor_penetration = 0 var/spray = "condensedcapsaicin" embed = FALSE can_ricochet = FALSE //breaks upon impact; impossible. @@ -217,6 +225,7 @@ /obj/item/projectile/bullet/magnum_40/rubber/soporific name = "soporific coated rubber bullet" damage_types = list(BRUTE = 0, HALLOSS = 35) + armor_penetration = 0 var/spray = "stoxin" can_ricochet = FALSE embed = FALSE @@ -234,8 +243,8 @@ reagents.trans_to_mob(L, 3, CHEM_TOUCH, copy = FALSE) /obj/item/projectile/bullet/magnum_40/scrap - damage_types = list(BRUTE = 15) - armor_divisor = 0.5 + damage_types = list(BRUTE = 16) + armor_penetration = 5 affective_damage_range = 3 affective_ap_range = 3 recoil = 6 @@ -243,7 +252,7 @@ /obj/item/projectile/bullet/magnum_40/biomatter name = "biomatter bullet" damage_types = list(BURN = 20, HALLOSS = 32) - armor_divisor = 0.7 + armor_penetration = 0 penetrating = 0 can_ricochet = FALSE embed = FALSE @@ -255,8 +264,8 @@ /// 12mm Heavy Pistol /// /obj/item/projectile/bullet/kurtz_50 icon_state = "bullet_krutz" - damage_types = list(BRUTE = 36) - armor_divisor = 0.6 + damage_types = list(BRUTE = 23.5) + armor_penetration = 15 wounding_mult = WOUNDING_WIDE can_ricochet = TRUE embed = TRUE @@ -268,12 +277,12 @@ /obj/item/projectile/bullet/kurtz_50/rubber name = "rubber bullet" icon_state = "rubber" - damage_types = list(BRUTE = 20, HALLOSS = 35) + damage_types = list(BRUTE = 15, HALLOSS = 35) wounding_mult = WOUNDING_SERIOUS check_armour = ARMOR_MELEE - armor_divisor = 0.5 + armor_penetration = 10 can_ricochet = TRUE - //ricochet_mod = 2 //including our AP mallus for bounce we are baseline about 1.9x as likely to bounce. + ricochet_mod = 2 //including our AP mallus for bounce we are baseline about 1.9x as likely to bounce. step_delay = 0.7 recoil = 10 ignition_source = FALSE @@ -282,10 +291,10 @@ name = "pepperball" damage_types = list(BRUTE = 6, HALLOSS = 35) //Pepperballs disipate upon impact. They'll sting like shit, but won't do much in a low-velocity round. step_delay = 0.75 //a little slower than rubber rounds - these are just pepperspray balls + armor_penetration = 0 var/spray = "condensedcapsaicin" embed = FALSE can_ricochet = FALSE //breaks upon impact; impossible. - wounding_mult = WOUNDING_SMALL /obj/item/projectile/bullet/kurtz_50/rubber/pepperball/New() ..() @@ -301,7 +310,8 @@ /obj/item/projectile/bullet/kurtz_50/practice name = "practice bullet" - damage_types = list(BRUTE = 5) + damage_types = list(BRUTE = 2, HALLOSS = 3) + armor_penetration = 0 embed = FALSE can_ricochet = FALSE step_delay = 0.75 @@ -309,8 +319,9 @@ /obj/item/projectile/bullet/kurtz_50/lethal name = "hollow-point bullet" - damage_types = list(BRUTE = 27) - armor_divisor = 0.3 + damage_types = list(BRUTE = 10, HALLOSS = 12) + post_penetration_dammult = 3 + armor_penetration = 0 wounding_mult = WOUNDING_EXTREME penetrating = 0 can_ricochet = FALSE @@ -319,15 +330,15 @@ /obj/item/projectile/bullet/kurtz_50/hv name = "AV bullet" - damage_types = list(BRUTE = 27) - armor_divisor = 1.4 + damage_types = list(BRUTE = 20) + armor_penetration = 35 + wounding_mult = WOUNDING_NORMAL penetrating = 2 can_ricochet = FALSE step_delay = 0.45 affective_damage_range = 6 affective_ap_range = 6 nocap_structures = TRUE //We can breach doors rather well - sharp = TRUE recoil = 16 @@ -338,8 +349,8 @@ /obj/item/projectile/bullet/light_rifle_257 icon_state = "bullet_carbine" - damage_types = list(BRUTE = 21) - armor_divisor = 1 + damage_types = list(BRUTE = 14) + armor_penetration = 15 wounding_mult = WOUNDING_SMALL penetrating = 1 can_ricochet = TRUE @@ -350,7 +361,8 @@ /obj/item/projectile/bullet/light_rifle_257/practice name = "practice bullet" - damage_types = list(BRUTE = 4) + damage_types = list(BRUTE = 2, HALLOSS = 2) + armor_penetration = 0 embed = FALSE sharp = FALSE can_ricochet = FALSE @@ -358,14 +370,14 @@ recoil = 4 /obj/item/projectile/bullet/light_rifle_257/hv - damage_types = list(BRUTE = 17) - armor_divisor = 2.5 + damage_types = list(BRUTE = 13) + armor_penetration = 30 + wounding_mult = WOUNDING_TINY penetrating = 2 hitscan = TRUE affective_damage_range = 8 //Can snipe affective_ap_range = 8 nocap_structures = TRUE //RATARATARAT down a door - sharp = TRUE recoil = 7 /obj/item/projectile/bullet/light_rifle_257/rubber @@ -373,10 +385,10 @@ icon_state = "rubber" damage_types = list(BRUTE = 10, HALLOSS = 20) check_armour = ARMOR_MELEE - armor_divisor = 0.8 + armor_penetration = 10 wounding_mult = WOUNDING_TINY embed = TRUE //Imagine being shot with a high velocity .223/5.56 rubber bullet - that shit could easily kill you - or at least would act like a normal bullet. - sharp = FALSE + sharp = TRUE //There is no-way this round is not acting like a regular high-velocity round at this point. can_ricochet = TRUE step_delay = 0.9 recoil = 4 @@ -386,6 +398,7 @@ name = "pepperball" damage_types = list(BRUTE = 4, HALLOSS = 20) //Pepperballs disipate upon impact. They'll sting like shit, but won't do much in a low-velocity round. step_delay = 1.0 //a little slower than rubber rounds - these are just pepperspray balls + armor_penetration = 0 var/spray = "condensedcapsaicin" embed = FALSE can_ricochet = FALSE //breaks upon impact; impossible. @@ -404,13 +417,14 @@ /obj/item/projectile/bullet/light_rifle_257/lethal name = "hollow-point bullet" - damage_types = list(BRUTE = 17) - armor_divisor = 0.5 + damage_types = list(BRUTE = 6, HALLOSS = 6) + post_penetration_dammult = 3 + armor_penetration = 0 wounding_mult = WOUNDING_SERIOUS penetrating = 0 can_ricochet = FALSE embed = TRUE - sharp = FALSE + sharp = TRUE step_delay = 0.6 recoil = 5 @@ -418,18 +432,17 @@ name = "incendiary bullet" damage_types = list(BURN = 10) //We deal most of are damage with fire stacks fire_stacks = 1 - armor_divisor = 0.5 + armor_penetration = 0 penetrating = 0 can_ricochet = FALSE embed = FALSE sharp = FALSE - wounding_mult = WOUNDING_NORMAL step_delay = 0.7 recoil = 7 /obj/item/projectile/bullet/light_rifle_257/scrap - damage_types = list(BRUTE = 14) - armor_divisor = 0.5 + damage_types = list(BRUTE = 12) + armor_penetration = 7 affective_damage_range = 4 affective_ap_range = 4 recoil = 6 @@ -440,8 +453,8 @@ /// 7.62x39mm Rifle /// /obj/item/projectile/bullet/rifle_75 - damage_types = list(BRUTE = 25) - armor_divisor = 1.25 + damage_types = list(BRUTE = 15.5) + armor_penetration = 20 wounding_mult = WOUNDING_SERIOUS penetrating = 1 can_ricochet = TRUE @@ -451,20 +464,20 @@ recoil = 10 /obj/item/projectile/bullet/rifle_75/hv - damage_types = list(BRUTE = 19) - armor_divisor = 3 + damage_types = list(BRUTE = 14) + armor_penetration = 36 + wounding_mult = WOUNDING_NORMAL penetrating = 2 hitscan = TRUE affective_damage_range = 8 affective_ap_range = 8 nocap_structures = TRUE //Helps against walls and doors - sharp = TRUE recoil = 14 /obj/item/projectile/bullet/rifle_75/practice name = "practice bullet" damage_types = list(BRUTE = 2, HALLOSS = 2) - armor_divisor = 1 + armor_penetration = 0 embed = FALSE sharp = FALSE can_ricochet = FALSE @@ -473,14 +486,14 @@ /obj/item/projectile/bullet/rifle_75/rubber name = "rubber bullet" icon_state = "rubber" - damage_types = list(BRUTE = 14, HALLOSS = 26) + damage_types = list(BRUTE = 12, HALLOSS = 26) check_armour = ARMOR_MELEE - armor_divisor = 1 + armor_penetration = 15 wounding_mult = WOUNDING_NORMAL embed = TRUE //literally imagine a 7.62 rubber bullet hitting you - holy shit. - sharp = FALSE + sharp = TRUE //there is literally no-fucking-way this would not act like a regular sharp round at this point. can_ricochet = TRUE - //ricochet_mod = 2 //including armor penalty ends up as closer to 1.85x as likely. + ricochet_mod = 2 //including armor penalty ends up as closer to 1.85x as likely. step_delay = 0.9 recoil = 6 ignition_source = FALSE @@ -504,13 +517,14 @@ /obj/item/projectile/bullet/rifle_75/lethal name = "hollow-point bullet" - damage_types = list(BRUTE = 19) - armor_divisor = 0.65 + damage_types = list(BRUTE = 7, HALLOSS = 9) + post_penetration_dammult = 3 + armor_penetration = 0 wounding_mult = WOUNDING_WIDE penetrating = 0 can_ricochet = FALSE embed = TRUE - sharp = FALSE + sharp = TRUE step_delay = 0.8 recoil = 10 @@ -518,6 +532,7 @@ name = "incendiary bullet" damage_types = list(BURN = 12) //We deal most of are damage with fire stacks fire_stacks = 2 + armor_penetration = 0 penetrating = 0 can_ricochet = FALSE embed = FALSE @@ -527,7 +542,7 @@ /obj/item/projectile/bullet/rifle_75/scrap damage_types = list(BRUTE = 14) - armor_divisor = 0.5 + armor_penetration = 10 affective_damage_range = 3 affective_ap_range = 3 recoil = 5 @@ -536,8 +551,8 @@ /obj/item/projectile/bullet/heavy_rifle_408 icon_state = "bullet_heavy" - damage_types = list(BRUTE = 28) - armor_divisor = 1.4 + damage_types = list(BRUTE = 20) + armor_penetration = 25 wounding_mult = WOUNDING_SERIOUS penetrating = 2 can_ricochet = TRUE @@ -550,48 +565,48 @@ name = "rubber bullet" icon_state = "rubber" damage_types = list(BRUTE = 17, HALLOSS = 32) - armor_divisor = 1.3 + armor_penetration = 20 check_armour = ARMOR_MELEE embed = TRUE //imagine an effectively smaller .50 Cal marksman round hitting you. holy shit. - sharp = FALSE + sharp = TRUE //there is literally no-fucking-way this would not act like a regular sharp round at this point. can_ricochet = TRUE - //ricochet_mod = 1.35 //after AP penalty to ricochet is factored in we have more like 15% more chance to ricochet. + ricochet_mod = 1.35 //after AP penalty to ricochet is factored in we have more like 15% more chance to ricochet. step_delay = 0.9 recoil = 14 ignition_source = FALSE /obj/item/projectile/bullet/heavy_rifle_408/practice name = "practice bullet" - damage_types = list(BRUTE = 6) - armor_divisor = 1 + damage_types = list(BRUTE = 2, HALLOSS = 2) + armor_penetration = 0 embed = FALSE sharp = FALSE - wounding_mult = WOUNDING_NORMAL can_ricochet = FALSE step_delay = 0.5 recoil = 10 /obj/item/projectile/bullet/heavy_rifle_408/hv name = "sabot penetrator" - damage_types = list(BRUTE = 20) - armor_divisor = 3.5 + damage_types = list(BRUTE = 16) + armor_penetration = 46 + wounding_mult = WOUNDING_NORMAL penetrating = 3 hitscan = TRUE affective_damage_range = 9 //Sniping cal affective_ap_range = 9 nocap_structures = TRUE //anit-wall/door - sharp = TRUE recoil = 20 /obj/item/projectile/bullet/heavy_rifle_408/lethal name = "hollow-point bullet" - damage_types = list(BRUTE = 20) - armor_divisor = 0.7 + damage_types = list(BRUTE = 12, HALLOSS = 14) + post_penetration_dammult = 3 + armor_penetration = 0 //none of none. Dont give HP any AP wounding_mult = WOUNDING_WIDE penetrating = 0 can_ricochet = FALSE embed = TRUE - sharp = FALSE + sharp = TRUE step_delay = 0.5 recoil = 16 @@ -599,7 +614,7 @@ name = "incendiary bullet" damage_types = list(BURN = 15) //We deal most of are damage with fire stacks fire_stacks = 3 - armor_divisor = 1 + armor_penetration = 0 penetrating = 0 can_ricochet = FALSE embed = FALSE @@ -609,7 +624,7 @@ /obj/item/projectile/bullet/heavy_rifle_408/scrap damage_types = list(BRUTE = 15) - armor_divisor = 0.75 + armor_penetration = 15 //half of normal affective_damage_range = 4 affective_ap_range = 4 recoil = 12 @@ -617,8 +632,8 @@ ///Snowflake /// /obj/item/projectile/bullet/c10x24 - damage_types = list(BRUTE = 20) - armor_divisor = 2 + damage_types = list(BRUTE = 19) + armor_penetration = 18 wounding_mult = WOUNDING_SMALL penetrating = 2 can_ricochet = TRUE @@ -630,7 +645,7 @@ /obj/item/projectile/bullet/auto_460 damage_types = list(BRUTE = 30) - armor_divisor = 1.25 + armor_penetration = 25 penetrating = 2 can_ricochet = TRUE step_delay = 0.3 @@ -640,7 +655,7 @@ /obj/item/projectile/bullet/auto_460/scrap damage_types = list(BRUTE = 17.5) - armor_divisor = 1.15 + armor_penetration = 15 penetrating = 1 can_ricochet = TRUE step_delay = 0.3 @@ -651,7 +666,7 @@ //// 14.5×114mm Anti-Materiel Rifle Rounds //// /obj/item/projectile/bullet/antim damage_types = list(BRUTE = 60) - armor_divisor = 10 + armor_penetration = 100 wounding_mult = WOUNDING_WIDE nocap_structures = TRUE //stun = 5 @@ -665,7 +680,7 @@ /obj/item/projectile/bullet/antim/lethal damage_types = list(BRUTE = 45, HALLOSS = 100) embed = TRUE - armor_divisor = 4 + armor_penetration = 60 wounding_mult = WOUNDING_EXTREME penetrating = 2 affective_damage_range = 9 @@ -677,7 +692,7 @@ damage_types = list(BURN = 45) embed = FALSE fire_stacks = 5 //BURN, BABY! BUUURN!! - armor_divisor = 4 + armor_penetration = 20 penetrating = 2 affective_damage_range = 10 affective_ap_range = 10 @@ -685,15 +700,15 @@ recoil = 40 /obj/item/projectile/bullet/antim/scrap - damage_types = list(BRUTE = 40) - armor_divisor = 4 + damage_types = list(BRUTE = 41.5) + armor_penetration = 50 affective_damage_range = 8 affective_ap_range = 8 recoil = 30 /obj/item/projectile/bullet/antim/ion damage_types = list(BRUTE = 25) - armor_divisor = 4 + armor_penetration = 40 recoil = 15 /obj/item/projectile/bullet/antim/ion/on_impact(atom/target, blocked = FALSE) @@ -705,7 +720,7 @@ /obj/item/projectile/bullet/ball nocap_structures = TRUE damage_types = list(BRUTE = 40, HALLOSS = 60) //Grab me musket as the founding fathers intended - armor_divisor = 4 //no longer a little jank, much like other older rifles it falters in terms of AP while still having enough to really smash through armor. + armor_penetration = 50 //no longer a little jank, much like other older rifles it falters in terms of AP while still having enough to really smash through armor. supereffective_mult = 6 //we do 40 damage base, up to 240 with supereffective - plus AP bonus, plus agony bonus, about the same 350~ as before supereffective_types = list(/mob/living/carbon/human = FALSE, /mob/living = TRUE) //We are great at fighting living things(other than people, for balance reasons) but not so much robots. wounding_mult = WOUNDING_EXTREME @@ -721,7 +736,7 @@ name = "coilgun round" icon_state = null damage_types = list(BRUTE = 26) - armor_divisor = 2 + armor_penetration = 20 wounding_mult = WOUNDING_SERIOUS penetrating = 1 @@ -735,8 +750,8 @@ /obj/item/projectile/bullet/pellet/mech_flak //Flak Cannon name = "flak shrapnel" icon_state = "l_birdshot-4" - damage_types = list(BRUTE = 14) - armor_divisor = 1.5 + damage_types = list(BRUTE = 11) + armor_penetration = 22 wounding_mult = WOUNDING_NORMAL penetrating = 0 @@ -764,9 +779,8 @@ /obj/item/projectile/bullet/mech_machinegun //Heavy Machinegun name = "large caliber bullet" icon_state = "bullet_heavy" - damage_types = list(BRUTE = 21) - wounding_mult = WOUNDING_SERIOUS - armor_divisor = 1.25 //To keep it somewhat fair towards the handhelds considering it has higher ammo capacity + damage_types = list(BRUTE = 13) + armor_penetration = 15 //To keep it somewhat fair towards the handhelds considering it has higher ammo capacity penetrating = 1 can_ricochet = TRUE @@ -779,7 +793,7 @@ name = "gigantic round" icon_state = "slug" damage_types = list(BRUTE = 56) - armor_divisor = 4 //Tally ho + armor_penetration = 50 //Tally ho wounding_mult = WOUNDING_EXTREME penetrating = 3 //tank sized round @@ -793,7 +807,7 @@ name = "humongous round" icon_state = "bullet_kurtz" damage_types = list(BRUTE = 26) - armor_divisor = 3 //This fires 2 in a row so keep that in mind + armor_penetration = 43 //This fires 2 in a row so keep that in mind wounding_mult = WOUNDING_SERIOUS penetrating = 3 //tank sized round @@ -809,9 +823,9 @@ /obj/item/projectile/bullet/shotgun name = "slug" icon_state = "slug" - damage_types = list(BRUTE = 35) - armor_divisor = 3 - wounding_mult = WOUNDING_SERIOUS + damage_types = list(BRUTE = 37) + armor_penetration = 25 + wounding_mult = WOUNDING_WIDE knockback = 0 //Bug doups hits step_delay = 0.9 //Slugs are meant for long range shooting @@ -823,7 +837,7 @@ name = "ceramic slug" icon_state = "slug" damage_types = list(BRUTE = 30) - armor_divisor = 1.2 + armor_penetration = 10 knockback = 1 //KER-BLAM!!!! affective_damage_range = 4 affective_ap_range = 4 @@ -832,9 +846,9 @@ /obj/item/projectile/bullet/shotgun/beanbag name = "beanbag" icon_state = "rubber" - damage_types = list(BRUTE = 20, HALLOSS = 60) + damage_types = list(BRUTE = 15, HALLOSS = 60) wounding_mult = WOUNDING_NORMAL - armor_divisor = 1.5 + armor_penetration = 0 embed = FALSE sharp = FALSE step_delay = 1.65 @@ -847,7 +861,7 @@ name = "pepperball slug" damage_types = list(BRUTE = 6, HALLOSS = 50) //Pepperballs disipate upon impact. They'll sting like shit, but won't do much in a low-velocity round. step_delay = 2 //Slower than a beanbag due to it being STRONG as fuck. - armor_divisor = 0.8 + armor_penetration = 0 var/spray = "condensedcapsaicin" embed = FALSE can_ricochet = FALSE //breaks upon impact; impossible. @@ -867,7 +881,6 @@ /obj/item/projectile/bullet/shotgun/beanbag/soporific name = "soporific coated beanbag" damage_types = list(BRUTE = 10, HALLOSS = 65) // They still hurt! - armor_divisor = 0.8 var/spray = "stoxin" /obj/item/projectile/bullet/shotgun/beanbag/soporific/New() @@ -886,7 +899,7 @@ /obj/item/projectile/bullet/shotgun/practice name = "practice slug" damage_types = list(BRUTE = 4, HALLOSS = 5) - armor_divisor = 0.5 + armor_penetration = 0 embed = FALSE affective_damage_range = 1 affective_ap_range = 1 @@ -895,27 +908,24 @@ /obj/item/projectile/bullet/shotgun/incendiary //This is the best ammo for pvp in a shotgun, beating the stunshell with its pain and cooks anyone in any armor! damage_types = list(BURN = 22.5) //We deal most of are damage with fire stacks - armor_divisor = 0.5 fire_stacks = 4 //40 pain a fire proc through ALL armor! recoil = 40 /obj/item/projectile/bullet/shotgun/scrap damage_types = list(BRUTE = 27) - armor_divisor = 1.2 + armor_penetration = 5 affective_damage_range = 3 affective_ap_range = 4 recoil = 10 /obj/item/projectile/bullet/shotgun/beanbag/scrap - damage_types = list(BRUTE = 13, HALLOSS = 55) - armor_divisor = 1.25 + damage_types = list(BRUTE = 13, HALLOSS = 55) affective_damage_range = 1 affective_ap_range = 1 recoil = 8 /obj/item/projectile/bullet/pellet/shotgun/scrap - damage_types = list(BRUTE = 8) - armor_divisor = 0.9 + damage_types = list(BRUTE = 7.5) affective_damage_range = 4 affective_ap_range = 4 recoil = 6 @@ -923,7 +933,7 @@ /obj/item/projectile/bullet/shotgun/biomatter //Unique niche round. High AP, Low damage, high agony. Good for mob crunching, or AP LTL uses name = "biomatter slug" damage_types = list(BURN = 10, HALLOSS = 40) // Thin little piece of biomass designed to defeat armor but not really large enough to cause super serious injuries. - armor_divisor = 4 //high velocity + armor_penetration = 40 //high velocity wounding_mult = WOUNDING_SMALL //tiny slug. penetrating = 0 can_ricochet = FALSE @@ -966,12 +976,13 @@ /obj/item/projectile/bullet/kurtz_50/rubber/railgun hitscan = TRUE can_ricochet = FALSE - //ricochet_mod = 1.5 + ricochet_mod = 1.5 recoil = 9 ignition_source = FALSE /obj/item/projectile/bullet/kurtz_50/incendiary damage_types = list(BRUTE = 5, HALLOSS = 5) + armor_penetration = 0 embed = FALSE can_ricochet = FALSE knockback = 0 @@ -986,6 +997,7 @@ /obj/item/projectile/bullet/lrifle/incendiary icon_state = "fireball" damage_types = list(BURN = 3.5, HALLOSS = 5) + armor_penetration = 0 embed = FALSE can_ricochet = FALSE knockback = 0 @@ -1005,8 +1017,8 @@ icon_state = "gauss" mob_hit_sound = list('sound/effects/gore/sear.ogg') hitsound_wall = 'sound/weapons/guns/misc/ric4.ogg' - damage_types = list(BRUTE = 40) - armor_divisor = 4 + damage_types = list(BRUTE = 34) + armor_penetration = 40 check_armour = ARMOR_BULLET embed = FALSE can_ricochet = FALSE @@ -1021,12 +1033,12 @@ /obj/item/projectile/bullet/pellet/shotgun name = "shrapnel" icon_state = "birdshot-1" - damage_types = list(BRUTE = 16) - armor_divisor = 0.6 + damage_types = list(BRUTE = 11, HALLOSS = 5) wounding_mult = WOUNDING_SMALL //lotta relatively smaller pellets. pellets = 4 range_step = 1 spread_step = 10 + post_penetration_dammult = 1.5 //shotgun supremacy is coming back baybee knockback = 0 //We do not knockback do to issues with bullet douping step_delay = 0.9 affective_damage_range = 2 @@ -1041,6 +1053,7 @@ name = "heavy shrapnel" damage_types = list(BRUTE = 8) //We hit slightly softer than buckshot wounding_mult = WOUNDING_NORMAL + post_penetration_dammult = 2 pellets = 6 // but more times range_step = 2 //and at longer range step_delay = 1.1 //we travel a bit slower @@ -1051,14 +1064,15 @@ name = "Unstable energy bolt" icon_state = "l_birdshot-1" damage_types = list(BURN = 11.5) //slightly less than buck, but FAR more painful - armor_divisor = 2 //heated shot melt armor. + armor_penetration = 15 //heated shot melt armor. + post_penetration_dammult = 1.5 //this is probably gonna need to be tuned back, but we'll see. embed = FALSE can_ricochet = FALSE sharp = FALSE muzzle_type = /obj/effect/projectile/plasma/muzzle/red check_armour = ARMOR_ENERGY recoil = 7 -/* + //For the love of God don't make this common. /obj/item/projectile/bullet/shotgun/payload name = "explosive bolt" @@ -1067,7 +1081,7 @@ wounding_mult = WOUNDING_EXTREME //Shredding knockback = 1 fire_stacks = 1 - armor_divisor = 10 + armor_penetration = 10 nocap_structures = TRUE check_armour = ARMOR_BOMB sharp = TRUE @@ -1079,7 +1093,7 @@ if (!testing) explosion(target, 0, 0, 2) return TRUE -*/ + //Miscellaneous /obj/item/projectile/bullet/blank invisibility = 101 @@ -1089,7 +1103,7 @@ /obj/item/projectile/bullet/cap name = "cap" - damage_types = list(HALLOSS = 0) + damage_types = list(HALLOS = 0) nodamage = TRUE embed = FALSE sharp = FALSE @@ -1100,9 +1114,9 @@ /obj/item/projectile/bullet/crossbow_bolt name = "bolt" icon_state = "bolt" - damage_types = list(BRUTE = 25) - wounding_mult = WOUNDING_SERIOUS //decent but won't like armor - armor_divisor = 1.3 + damage_types = list(BRUTE = 22.5) + wounding_mult = WOUNDING_SMALL //Relatively small entry wound and straight impale. + armor_penetration = 15 knockback = 0 //Bug doups hits supereffective_types = list(/mob/living/carbon/human = FALSE, /mob/living = TRUE) supereffective_mult = 1.5 @@ -1114,9 +1128,10 @@ /obj/item/projectile/bullet/crossbow_bolt/lethal name = "bolt" icon_state = "bolt" - damage_types = list(BRUTE = 30) - wounding_mult = WOUNDING_WIDE //slightly bigger - armor_divisor = 0.5 + damage_types = list(BRUTE = 10, HALLOSS = 29) + wounding_mult = WOUNDING_NORMAL //slightly bigger + armor_penetration = 0 + post_penetration_dammult = 3 supereffective_types = list(/mob/living/carbon/human = FALSE, /mob/living = TRUE) supereffective_mult = 1.5 step_delay = 0.9 @@ -1125,11 +1140,10 @@ /obj/item/projectile/bullet/crossbow_bolt/hv name = "bolt" icon_state = "bolt" - damage_types = list(BRUTE = 20) - armor_divisor = 3 + damage_types = list(BRUTE = 23.5) + armor_penetration = 55 penetrating = 3 hitscan = TRUE - sharp = TRUE supereffective_types = list(/mob/living/carbon/human = FALSE, /mob/living = TRUE) supereffective_mult = 1.5 affective_damage_range = 9 @@ -1151,7 +1165,7 @@ name = "metal rod" icon_state = "bolt" damage_types = list(BRUTE = 5) //This is multiplied by tension when fired, so it's actually 25 damage. - armor_divisor = 1.25 + armor_penetration = 15 wounding_mult = WOUNDING_NORMAL //it's a whole ass rod. step_delay = 0.9 embed = FALSE @@ -1163,7 +1177,7 @@ /obj/item/projectile/bullet/reusable/rod_bolt/superheated name = "superheated metal rod" damage_types = list(BRUTE = 5, BURN = 2.5) //This is multiplied by tension when fired, so it's actually 37.5 damage. - armor_divisor = 1.5 + armor_penetration = 20 wounding_mult = WOUNDING_SERIOUS //it's a SUPER HOT whole ass bolt. step_delay = 0.6 embed = TRUE @@ -1178,7 +1192,7 @@ name = "flashforged rod" icon_state = "bolt" damage_types = list(BRUTE = 5) //This is multiplied by tension when fired, so it's actually 25 damage. Slightly worse, but it's faster and has higher AP. - armor_divisor = 2 + armor_penetration = 30 step_delay = 0.6 embed = FALSE penetrating = 1 @@ -1191,10 +1205,10 @@ name = "flashforged superheated rod" icon_state = "bolt" damage_types = list(BRUTE = 5, BURN = 2.5) //This is multiplied by tension when fired, so it's actually 57.5 damage. Slightly worse, but it's faster and has higher AP. - armor_divisor = 20 + armor_penetration = 30 step_delay = 0.2 embed = TRUE - penetrating = 2 + penetrating = 0 affective_damage_range = 7 affective_ap_range = 7 create_type = null @@ -1204,7 +1218,7 @@ name = "arrow" icon_state = "arrow" damage_types = list(BRUTE = 2) //Multiplied by 10 when fired. - armor_divisor = 0.3 + armor_penetration = 2 effective_faction = list("wurm", "roach", "spider", "vox_tribe", "russian", "tengo") //good against common colony mobs damage_mult = 2 // Turns out arrows always sucked embed = FALSE //don't want to embed and drop an arrow, that would be weird @@ -1223,7 +1237,7 @@ damage_types = list(BRUTE = 1.5) // 15 damage at max pull damage_mult = 1.5 // Less bonus damage against effective faction embed_mult = 3 //we are going to try really hard to embed - armor_divisor = 0.75 // Crossbow bolts are better, however this should not penetrate armor the same as a bullet (if not MORE). + armor_penetration = 7 // Crossbow bolts are better, however this should not penetrate armor the same as a bullet (if not MORE). hitscan = TRUE // As every HV ammo affective_damage_range = 8 affective_ap_range = 8 @@ -1234,9 +1248,10 @@ /obj/item/projectile/bullet/reusable/arrow/broadhead name = "broadhead arrow" icon_state = "arrow-broad" + post_penetration_dammult = 1.1 damage_types = list(BRUTE = 4.5) //Very good base damage, negligible (5) AP, but no embedding. Think of it as arrow-hollowpoints. embed = FALSE - armor_divisor = 0.2 + armor_penetration = 0.5 create_type = /obj/item/ammo_casing/arrow/broadhead /obj/item/projectile/bullet/reusable/arrow/hunting @@ -1245,7 +1260,7 @@ damage_types = list(BRUTE = 1) //Multiplied by 10 when fired. supereffective_types = list(/mob/living/carbon/human = FALSE, /mob/living = TRUE) supereffective_mult = 5 //we do 10 damage base, up to 50 against SE mobs, then with 50 AP on should do ~100. Slow to fire, unwieldly, slow projectiles (but reusable), so I'll say this is fair? - armor_divisor = 1 //high ap to take advantage of overpen on mobs + armor_penetration = 10 //high ap to take advantage of overpen on mobs step_delay = 0.7 // 20% faster than normal arrows affective_damage_range = 8 //worse than the baroque, but better than regular arrows affective_ap_range = 8 @@ -1255,7 +1270,6 @@ name = "fragmenting hunting arrow" icon_state = "arrow-bone" damage_types = list(BRUTE = 2) //Multiplied by 10 when fired. - armor_divisor = 0.75 embed = TRUE hitscan = TRUE // Sniping round, fast supereffective_mult = 18 //we do 20 damage base, up to 360 against SE mobs, then with 55 (+5 hunting bow) AP on should do ~410. Baroque is around ~430 vs mobs, so roughly baroque-tier vs mobs, with the same wieldliness and different ammo costs (bone/leather/metal/plastic vs metal/cardboard). @@ -1266,10 +1280,11 @@ /obj/item/projectile/bullet/reusable/arrow/reagent name = "chemical arrow" icon_state = "arrow-reagent" - effective_faction = null + effective_faction = list() damage_types = list(BRUTE = 0.5) //Low damage, but chem-warfarable. embed = FALSE reagent_flags = INJECTABLE | DRAINABLE | AMOUNT_VISIBLE | REFILLABLE + armor_penetration = 0.5 step_delay = 1 create_type = /obj/item/projectile/bullet/reusable/arrow/practice/payload var/volume = 15// We only splash the target with reagents, so we hold a little more than syrette arrows. Good for acids, incindiaries, etc. @@ -1306,6 +1321,7 @@ damage_types = list(HALLOSS = 0.1) embed = FALSE nodamage = TRUE + armor_penetration = 0 create_type = /obj/item/ammo_casing/arrow/practice /obj/item/projectile/bullet/reusable/arrow/practice/payload @@ -1320,9 +1336,10 @@ name = "explosive arrow" desc = "Holy shit, there's a bomb taped to this arrow!" icon_state = "arrow-grenade" - effective_faction = null + effective_faction = list() damage_types = list(HALLOSS = 1) embed = FALSE //impact fuze + armor_penetration = 0 step_delay = 1.1 //slower affective_damage_range = 6 affective_ap_range = 6 @@ -1422,4 +1439,4 @@ /obj/item/projectile/bullet/reusable/arrow/explosive/smoke/Destroy() ..() if (smoke) - QDEL_NULL(smoke) + QDEL_NULL(smoke) \ No newline at end of file diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 87a86af957f..ccede2b612a 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -49,7 +49,7 @@ name = "electrode" icon_state = "spark" mob_hit_sound = list('sound/weapons/tase.ogg') - armor_divisor= 1.2 + armor_penetration = 20 nodamage = 1 taser_effect = 1 damage_types = list(HALLOSS = 40) diff --git a/code/modules/projectiles/projectile/fragment.dm b/code/modules/projectiles/projectile/fragment.dm index 4f0e2f90a43..002684091d9 100644 --- a/code/modules/projectiles/projectile/fragment.dm +++ b/code/modules/projectiles/projectile/fragment.dm @@ -24,7 +24,7 @@ /obj/item/projectile/bullet/pellet/fragment/rubber damage_types = list(BRUTE = 1, HALLOSS = 25)// 70 x 25 = 1750 pain, if all hit, rather then 32 x 150 - //ricochet_mod = 3 // :3c + ricochet_mod = 3 // :3c comon rubbers need their bounce can_ricochet = TRUE embed = FALSE sharp = FALSE diff --git a/code/modules/projectiles/projectile/hydrogen.dm b/code/modules/projectiles/projectile/hydrogen.dm index c08b11908fb..51ba7033700 100644 --- a/code/modules/projectiles/projectile/hydrogen.dm +++ b/code/modules/projectiles/projectile/hydrogen.dm @@ -4,7 +4,7 @@ mob_hit_sound = list('sound/effects/gore/sear.ogg') hitsound_wall = 'sound/weapons/guns/misc/laser_searwall.ogg' damage_types = list(BURN = 70) - armor_divisor = 2.25 + armor_penetration = 40 check_armour = ARMOR_ENERGY muzzle_type = /obj/effect/projectile/plasma/muzzle impact_type = /obj/effect/projectile/plasma/impact @@ -38,15 +38,15 @@ // Overcharged Shots /obj/item/projectile/hydrogen/max damage_types = list(BURN = 90) - armor_divisor = 2.75 + armor_penetration = 60 recoil = 40 /obj/item/projectile/hydrogen/pistol/max damage_types = list(BURN = 80) - armor_divisor = 2.5 + armor_penetration = 60 recoil = 20 /obj/item/projectile/hydrogen/cannon/max damage_types = list(BURN = 100) - armor_divisor = 3 + armor_penetration = 60 recoil = 60 diff --git a/code/modules/projectiles/projectile/plasma.dm b/code/modules/projectiles/projectile/plasma.dm index d54fa5f8023..3684d372c79 100644 --- a/code/modules/projectiles/projectile/plasma.dm +++ b/code/modules/projectiles/projectile/plasma.dm @@ -4,7 +4,7 @@ mob_hit_sound = list('sound/effects/gore/sear.ogg') hitsound_wall = 'sound/weapons/guns/misc/laser_searwall.ogg' damage_types = list(BURN = 28) - armor_divisor = 1.1 + armor_penetration = 15 check_armour = ARMOR_ENERGY fire_stacks = 1 //Blasma @@ -18,13 +18,13 @@ impact_type = /obj/effect/projectile/plasma/impact /obj/item/projectile/plasma/shell - damage_types = list(BURN = 40) + damage_types = list(BURN = 36) recoil = 12 /obj/item/projectile/plasma/light name = "light plasma bolt" - damage_types = list(BURN = 33) - armor_divisor = 0.65 + damage_types = list(BURN = 28) + armor_penetration = 1 recoil = 7 /obj/item/projectile/plasma/heavy @@ -36,7 +36,7 @@ fire_stacks = 1 damage_types = list(BURN = 30) - armor_divisor = 2.3 + armor_penetration = 30 /obj/item/projectile/plasma/heavy/shell damage_types = list(BURN = 42) @@ -190,7 +190,7 @@ mob_hit_sound = list('sound/effects/gore/sear.ogg') hitsound_wall = 'sound/weapons/guns/misc/ric4.ogg' damage_types = list(BRUTE = 54) - armor_divisor = 4 + armor_penetration = 65 check_armour = ARMOR_BULLET affective_damage_range = 16 affective_ap_range = 16 @@ -201,7 +201,7 @@ /obj/item/projectile/plasma/check_penetrate(var/atom/A) if(istype(A, /obj/item/shield)) var/obj/item/shield/S = A - var/loss = min(round(armor_divisor * 2 / S.durability), 1) + var/loss = round(S.durability / armor_penetration / 8) block_damage(loss, A) A.visible_message(SPAN_WARNING("\The [src] is weakened by the \the [A]!")) playsound(A.loc, 'sound/weapons/shield/shielddissipate.ogg', 50, 1) diff --git a/code/modules/projectiles/projectile/plasma_aoe.dm b/code/modules/projectiles/projectile/plasma_aoe.dm index 8c739fd3da0..173cba50851 100644 --- a/code/modules/projectiles/projectile/plasma_aoe.dm +++ b/code/modules/projectiles/projectile/plasma_aoe.dm @@ -1,7 +1,7 @@ /obj/item/projectile/plasma/aoe name = "default plasma aoe" icon_state = "ion" - armor_divisor = 1 + armor_penetration = 1 damage_types = list(BURN = 0) var/aoe_strong = 0 @@ -17,14 +17,14 @@ if(emp_strength) empulse(target.loc, aoe_strong, aoe_weak, strength=emp_strength) if(heat_damage) - heatwave(target.loc, aoe_strong, aoe_weak, heat_damage, fire_stacks, armor_divisor) + heatwave(target.loc, aoe_strong, aoe_weak, heat_damage, fire_stacks, armor_penetration) ..() /obj/item/projectile/plasma/aoe/ion name = "ion-plasma bolt" icon_state = "ion" - armor_divisor = 1 + armor_penetration = 1 damage_types = list(BURN = 27) aoe_strong = 1 @@ -37,7 +37,7 @@ /obj/item/projectile/plasma/aoe/ion/light name = "light ion-plasma bolt" - armor_divisor = 1 + armor_penetration = 1 damage_types = list(BURN = 20) aoe_strong = 0 @@ -50,7 +50,7 @@ /obj/item/projectile/plasma/aoe/heat name = "high-temperature plasma blast" - armor_divisor = 2.25 + armor_penetration = 50 damage_types = list(BURN = 20) aoe_strong = 1 @@ -63,7 +63,7 @@ /obj/item/projectile/plasma/aoe/heat/strong name = "high-temperature plasma blast" - armor_divisor = 1.25 + armor_penetration = 25 damage_types = list(BURN = 33) aoe_strong = 1 diff --git a/code/modules/projectiles/projectile/projectilegrenades.dm b/code/modules/projectiles/projectile/projectilegrenades.dm index 2a7918e6797..cca811d5695 100644 --- a/code/modules/projectiles/projectile/projectilegrenades.dm +++ b/code/modules/projectiles/projectile/projectilegrenades.dm @@ -3,7 +3,7 @@ icon_state = "grenade" damage_types = list(BRUTE = 20, HALLOSS = 100) check_armour = ARMOR_MELEE - armor_divisor = 1 + armor_penetration = 10 embed = TRUE //literally imagine being hit by this. can_ricochet = TRUE //It's rubber sharp = FALSE @@ -13,7 +13,7 @@ name = "grenade shell" icon_state = "grenade" damage_types = list(BRUTE = 10) - armor_divisor = 1 + armor_penetration = 1 embed = TRUE sharp = FALSE check_armour = ARMOR_BULLET diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 323e355b921..38788da25cc 100755 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -37,7 +37,7 @@ name = "high explosive rocket" icon_state = "rocket" damage_types = list(BRUTE = 70) - armor_divisor = 10 + armor_penetration = 100 check_armour = ARMOR_BULLET recoil = 75 @@ -67,7 +67,7 @@ name = "EMP rocket" icon_state = "rocket_e" damage_types = list(BRUTE = 10, BURN = 30) - armor_divisor = 10 + armor_penetration = 100 check_armour = ARMOR_BULLET var/heavy_emp_range = 3 var/light_emp_range = 8 @@ -270,7 +270,7 @@ damage_types = list(BRUTE = 12) //Intended to be brute agony = 20 icon_state = "declone" - armor_divisor = 10 + armor_penetration = 10 recoil = 2 /obj/item/projectile/IRKdebilitate/on_impact(atom/target) @@ -314,7 +314,7 @@ icon_state = "flare" damage_types = list(BURN = 12) //Legit deadlyest gun that you get in mass kill_count = 12 - armor_divisor = 1 + armor_penetration = 1 step_delay = 3 eyeblur = 2 // bright light slightly blurs your vision luminosity_range = 5 @@ -387,7 +387,7 @@ name = "sonic bolt" icon_state = "energy2" damage_types = list(BRUTE = 10) - armor_divisor = 3 // It is a sound-wave liquifing organs I guess + armor_penetration = 30 // It is a sound-wave liquifing organs I guess kill_count = 7 check_armour = ARMOR_ENERGY var/golem_damage_bonus = 20 // Damage multiplier against ameridians. @@ -421,7 +421,7 @@ /obj/item/projectile/tether/tail name = "tail lash" damage_types = list(BRUTE = 13) - armor_divisor = 2 + armor_penetration = 35 nodamage = FALSE stun = 2 //Horrors weaken = 2 //Unspeakable @@ -502,7 +502,7 @@ /obj/item/projectile/bullet/os_trurret_gauss name = "ferrous slug" damage_types = list(BRUTE = 15) - armor_divisor = 2 + armor_penetration = 25 penetrating = 2 recoil = 30 step_delay = 0.4 @@ -524,7 +524,7 @@ name = "plasma discharge bolt" icon_state = "ice_1" damage_types = list(BURN = 47) - armor_divisor = 2.5 + armor_penetration = 50 check_armour = ARMOR_ENERGY recoil = 8 diff --git a/code/modules/psionics/psionic_items/psi_Harmor.dm b/code/modules/psionics/psionic_items/psi_Harmor.dm index a5b07085a9f..34fbdee19e9 100644 --- a/code/modules/psionics/psionic_items/psi_Harmor.dm +++ b/code/modules/psionics/psionic_items/psi_Harmor.dm @@ -18,9 +18,9 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS //It has gloves, hood, and shoes for the rest of them slowdown = 2 //slightly faster then a juggernaut. But theres no point in upgrading it! armor_list = list( - melee = 15, - bullet = 15, - energy = 15, + melee = 60, + bullet = 60, + energy = 60, bomb = 100, bio = 100, rad = 90 @@ -61,9 +61,9 @@ item_flags = STOPPRESSUREDAMAGE|THICKMATERIAL|AIRTIGHT|COVER_PREVENT_MANIPULATION|BLOCK_GAS_SMOKE_EFFECT matter = list() armor_list = list( - melee = 15, - bullet = 15, - energy = 15, + melee = 60, + bullet = 60, + energy = 60, bomb = 60, bio = 100, rad = 90 @@ -108,9 +108,9 @@ siemens_coefficient = 0 //Insulated! matter = list() armor_list = list( - melee = 15, - bullet = 15, - energy = 15, + melee = 60, + bullet = 60, + energy = 60, bomb = 100, bio = 100, rad = 90 @@ -151,9 +151,9 @@ slot_flags = SLOT_FEET matter = list() armor_list = list( - melee = 15, - bullet = 15, - energy = 15, + melee = 60, + bullet = 60, + energy = 60, bomb = 100, bio = 100, rad = 90 diff --git a/code/modules/psionics/psionic_items/psi_Larmor.dm b/code/modules/psionics/psionic_items/psi_Larmor.dm index 43a107f05c3..96284a8f79b 100644 --- a/code/modules/psionics/psionic_items/psi_Larmor.dm +++ b/code/modules/psionics/psionic_items/psi_Larmor.dm @@ -17,9 +17,9 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS //It has gloves, hood, and shoes for the rest of them slowdown = -0.09 //with all three pieces figures out to 1.36 speed bonus, which is fairly high but also this shit is rare. armor_list = list( - melee =7, - bullet = 6, - energy = 7, + melee = 30, + bullet = 25, + energy = 30, bomb = 25, bio = 100, rad = 30 @@ -59,9 +59,9 @@ matter = list() slowdown = -0.09 armor_list = list( - melee =7, - bullet = 6, - energy = 7, + melee = 30, + bullet = 25, + energy = 30, bomb = 25, bio = 100, rad = 30 @@ -107,9 +107,9 @@ siemens_coefficient = 0 //Insulated! matter = list() armor_list = list( - melee =7, - bullet = 6, - energy = 7, + melee = 30, + bullet = 25, + energy = 30, bomb = 25, bio = 100, rad = 30 @@ -150,9 +150,9 @@ slowdown = -1.09 //1.36% speed up with all parts! No! Wrong! Humans are +1 slowdown by default so that you are slower without shoes, this is why shoes have -1 slowdown. Needs to have -1 slowdown as BASE can_hold_knife = 1 armor_list = list( - melee = 6, - bullet = 3, - energy = 5, + melee = 25, + bullet = 15, + energy = 20, bomb = 15, bio = 100, rad = 30 diff --git a/code/modules/psionics/psionic_items/psi_armor.dm b/code/modules/psionics/psionic_items/psi_armor.dm index 6e7f9e4d661..b1d7681bcbb 100644 --- a/code/modules/psionics/psionic_items/psi_armor.dm +++ b/code/modules/psionics/psionic_items/psi_armor.dm @@ -19,9 +19,9 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS //It has gloves, hood, and shoes for the rest of them slowdown = 0.3 //Slightly faster than the red suit. Maybe do it at 0.2? armor_list = list( - melee =8, - bullet = 8, - energy = 8, + melee = 35, + bullet = 35, + energy = 35, bomb = 30, bio = 100, rad = 50 @@ -61,9 +61,9 @@ slot_flags = SLOT_HEAD matter = list() armor_list = list( - melee =8, - bullet = 8, - energy = 8, + melee = 35, + bullet = 35, + energy = 35, bomb = 30, bio = 100, rad = 50 @@ -129,9 +129,9 @@ siemens_coefficient = 0 //Insulated! matter = list() armor_list = list( - melee =8, - bullet = 8, - energy = 8, + melee = 35, + bullet = 35, + energy = 35, bomb = 30, bio = 100, rad = 50 @@ -171,9 +171,9 @@ slot_flags = SLOT_FEET matter = list() armor_list = list( - melee = 8, - bullet = 8, - energy = 8, + melee = 35, + bullet = 35, + energy = 35, bomb = 30, bio = 100, rad = 50 diff --git a/code/modules/psionics/psionic_items/psi_artifacts.dm b/code/modules/psionics/psionic_items/psi_artifacts.dm index 10b777aee66..6efb09e898d 100644 --- a/code/modules/psionics/psionic_items/psi_artifacts.dm +++ b/code/modules/psionics/psionic_items/psi_artifacts.dm @@ -12,9 +12,9 @@ siemens_coefficient = 1 // Non-conductive matter = list(MATERIAL_BONE = 5, MATERIAL_BIOMATTER = 2) armor_list = list( - melee = 2, - bullet = 5, - energy = 1, + melee = 40, + bullet = 20, + energy = 5, bomb = 5, bio = 100, rad = 100 diff --git a/code/modules/psionics/psionic_items/psi_temp_items.dm b/code/modules/psionics/psionic_items/psi_temp_items.dm index 6341759b1ee..febd361b3b2 100644 --- a/code/modules/psionics/psionic_items/psi_temp_items.dm +++ b/code/modules/psionics/psionic_items/psi_temp_items.dm @@ -133,7 +133,7 @@ if(user.stats.getPerk(PERK_PSI_MANIA)) force = WEAPON_FORCE_BRUTAL whack_speed = 6 - armor_divisor = ARMOR_PEN_HALF + armor_penetration = ARMOR_PEN_HALF var/throwdir = get_dir(user,target) target.throw_at(get_edge_target_turf(target, throwdir),whack_speed,whack_speed) @@ -191,7 +191,7 @@ if(user.stats.getPerk(PERK_PSI_MANIA)) force = WEAPON_FORCE_BRUTAL - armor_divisor = ARMOR_PEN_HALF + armor_penetration = ARMOR_PEN_HALF ..() force = initial(force) // Reset the damage just in case @@ -219,7 +219,7 @@ max_durability = 80 //Can be made on mass and is meant to to be a light weak shield durability = 80 slowdown_time = 0 //Were crappy and mass made by the mind - armor_list = list(melee = 3, bullet = 3, energy = 2, bomb = 15, bio = 0, rad = 0) + armor_list = list(melee = 15, bullet = 15, energy = 35, bomb = 15, bio = 0, rad = 0) base_block_chance = 40 var/mob/living/carbon/holder // The one that prevent the blade from fading //Got to do a little more effort to make this block proj (min cost of 2 points) @@ -245,7 +245,7 @@ max_durability = 120 durability = 120 base_block_chance = 50 - armor_list = list(melee = 1, bullet = 5, energy = 2, bomb = 25, bio = 0, rad = 0) + armor_list = list(melee = 25, bullet = 20, energy = 40, bomb = 25, bio = 0, rad = 0) // Psionic gun. /obj/item/gun/kinetic_blaster @@ -289,7 +289,7 @@ if(holder.stats.getPerk(PERK_PSI_MANIA)) force = /obj/item/projectile/kinetic_blast/brutal - armor_divisor = ARMOR_PEN_HALF + armor_penetration = ARMOR_PEN_HALF projectile_type = force @@ -360,7 +360,7 @@ if(holder.stats.getPerk(PERK_PSI_MANIA)) force = /obj/item/projectile/kinetic_blast_electro/brutal - armor_divisor = ARMOR_PEN_HALF + armor_penetration = ARMOR_PEN_HALF projectile_type = force diff --git a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm index bd71569862b..1d2a5bbdde7 100644 --- a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm +++ b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm @@ -4,11 +4,11 @@ icon_state = "anomaly_suit" item_state = "anomaly_suit" slowdown = 0 - armor_list = list(melee = 5, bullet = 5, energy = 6, bomb = 0, bio = 100, rad = 100) + armor_list = list(melee = 5, bullet = 5, energy = 25, bomb = 0, bio = 100, rad = 100) /obj/item/clothing/head/helmet/space/anomaly name = "Expedition hood" desc = "A pressure resistant expedition hood partially capable of insulating against exotic alien energies and a myriad of other things. Much like a waterbear, it has defenses against many forms of nonconventional death- at the expense of zero defense against dying normally." icon_state = "cespace_helmet" item_state = "cespace_helmet" - armor_list = list(melee = 5, bullet = 5, energy = 6, bomb = 0, bio = 100, rad = 100) + armor_list = list(melee = 5, bullet = 5, energy = 25, bomb = 0, bio = 100, rad = 100) diff --git a/modular_sojourn/fencer.dm b/modular_sojourn/fencer.dm index a978ecc1458..f6fa26a67d2 100644 --- a/modular_sojourn/fencer.dm +++ b/modular_sojourn/fencer.dm @@ -15,7 +15,7 @@ melee_damage_lower = 15 melee_damage_upper = 15 - armor_divisor = 2 + armor_penetration = 35 deathmessage = "Gives a short wave and steps forwards into nothing..." armor = list(melee = 0, bullet = 0, energy = 0, bomb = 0, bio = 500, rad = 500, agony = 0) @@ -93,7 +93,7 @@ melee_damage_lower = 15 melee_damage_upper = 15 - armor_divisor = 2 * (coins + 1) //AP grows faster then raw damage + armor_penetration = 35 * (coins + 1) //AP grows faster then raw damage if(ishuman(A)) var/mob/living/carbon/human/H = A diff --git a/modular_sojourn/power_puncher.dm b/modular_sojourn/power_puncher.dm index de6bc9bdbfa..e7458927038 100644 --- a/modular_sojourn/power_puncher.dm +++ b/modular_sojourn/power_puncher.dm @@ -112,8 +112,8 @@ take_damage(dmg, dmg_type) if(P.agony) take_damage(P.agony, HALLOSS) - if(P.armor_divisor) - take_damage(P.armor_divisor * 10, HALLOSS) + if(P.armor_penetration) + take_damage(P.armor_penetration, HALLOSS) /obj/machinery/power/puncher/Destroy() return ..() diff --git a/nano/templates/clothing_stats.tmpl b/nano/templates/clothing_stats.tmpl index e5f63cc60af..52ed97418b0 100644 --- a/nano/templates/clothing_stats.tmpl +++ b/nano/templates/clothing_stats.tmpl @@ -8,7 +8,7 @@ {{:value.name}}
- {{:helper.displayBar(value.value, 0, 30, value.value <= 5 ? 'bad' : value.value < 10 ? 'average' : 'good', value.value)}} + {{:helper.displayBar(value.value, 0, 100, value.value <= 20 ? 'bad' : value.value < 60 ? 'average' : 'good', value.value)}}
{{/for}}
diff --git a/nano/templates/tool_stats.tmpl b/nano/templates/tool_stats.tmpl index 1ef26c79084..6338ffecbaa 100644 --- a/nano/templates/tool_stats.tmpl +++ b/nano/templates/tool_stats.tmpl @@ -96,7 +96,7 @@ Armor penetration:
- {{:data.armor_divisor}} + {{:data.armor_penetration}}
{{if data.extra_volume}} diff --git a/nano/templates/weapon_stats.tmpl b/nano/templates/weapon_stats.tmpl index f6e75c4089f..51b21b0cc4d 100644 --- a/nano/templates/weapon_stats.tmpl +++ b/nano/templates/weapon_stats.tmpl @@ -80,7 +80,7 @@ Armor penetration:
- {{:helper.displayBar(data.armor_divisor, 0, 100, '', data.armor_divisor + '%')}} + {{:helper.displayBar(data.armor_penetration, 0, 100, '', data.armor_penetration + '%')}}
{{if data.caliber}} From 108d20c5b2dc341c2d9dbfc80f4067927a341c66 Mon Sep 17 00:00:00 2001 From: Delams-The-SM <66973657+Delams-The-SM@users.noreply.github.com> Date: Thu, 29 Aug 2024 09:23:55 +0200 Subject: [PATCH 02/11] return synth injury types --- .../mob/living/carbon/human/species/station/station.dm | 8 ++++++++ code/modules/mob/living/living_defense.dm | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 1e12dff8f1a..fc28bb1b002 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -707,6 +707,7 @@ unarmed_types = list(/datum/unarmed_attack/punch, /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/bite) blurb = "no." reagent_tag = IS_SYNTHETIC + injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -757,6 +758,7 @@ unarmed_types = list(/datum/unarmed_attack/punch, /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/bite) blurb = "no" reagent_tag = IS_SYNTHETIC + injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -812,6 +814,7 @@ max_age = 110 siemens_coefficient = 2 reagent_tag = IS_SYNTHETIC + injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT slowdown = 0.3 @@ -876,6 +879,7 @@ max_age = 110 siemens_coefficient = 0 reagent_tag = IS_SYNTHETIC + injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -937,6 +941,7 @@ min_age = 18 max_age = 110 reagent_tag = IS_SYNTHETIC + injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -997,6 +1002,7 @@ min_age = 18 max_age = 110 reagent_tag = IS_SYNTHETIC + injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -1058,6 +1064,7 @@ min_age = 18 max_age = 110 reagent_tag = IS_SYNTHETIC + injury_type = INJURY_TYPE_UNLIVING hunger_factor = 0 flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON | NO_MINOR_CUT radiation_mod = 0 @@ -1120,6 +1127,7 @@ spawn_flags = CAN_JOIN min_age = 18 max_age = 200 + injury_type = INJURY_TYPE_HOMOGENOUS taste_sensitivity = TASTE_SENSITIVE nutrition_mod = 150 //Important for some perks diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index c130ca57422..e718ebdb479 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -40,6 +40,8 @@ post_pen_mult = 1 ) + visible_message("Attack ! [damage]") + if(armor_pen <= 0) armor_pen = 0.1 // if HYBRID armour system were to be chosen armour penetration of 0 could fuck up some calculations, negative one ... well I am expecting out of artists log_debug("[used_weapon] applied damage to [name] with a nonpositive armor penetration !!") @@ -129,7 +131,7 @@ armor_message(SPAN_NOTICE("[src] armor reduces the impact by a little."), SPAN_NOTICE("Your armor reduced the impact a little.")) - message_admins("total_dmg=[total_dmg] | final_dmg=[final_damage] | armor_effectiveness=[armor_effectiveness] | absolute_armor=[absolute_armor]") + visible_message("total_dmg=[total_dmg] | final_dmg=[final_damage] | armor_effectiveness=[armor_effectiveness] | absolute_armor=[absolute_armor]") From e200482d953d8aeba4eb2cb868887edab4fda0f4 Mon Sep 17 00:00:00 2001 From: Delams-The-SM <66973657+Delams-The-SM@users.noreply.github.com> Date: Thu, 29 Aug 2024 12:36:20 +0200 Subject: [PATCH 03/11] ranged attacks melee remains --- .../living/carbon/superior_animal/defense.dm | 4 +- code/modules/mob/living/living_defense.dm | 90 ++++++++++--------- code/modules/projectiles/projectile.dm | 10 ++- 3 files changed, 59 insertions(+), 45 deletions(-) diff --git a/code/modules/mob/living/carbon/superior_animal/defense.dm b/code/modules/mob/living/carbon/superior_animal/defense.dm index f11d9e8a6c4..3b38d57a584 100644 --- a/code/modules/mob/living/carbon/superior_animal/defense.dm +++ b/code/modules/mob/living/carbon/superior_animal/defense.dm @@ -407,8 +407,8 @@ penetration = L.armor_penetration // damage_through_armor(damage, BRUTE, attack_flag=ARMOR_MELEE, armor_penetration=penetration) - damage_through_armor(damage = damage, damagetype = damagetype, def_zone = null, attack_flag = ARMOR_MELEE, armour_pen = penetration, sharp = sharp, edge = sharp) -// damage_through_armor(damage = damage, damagetype = damagetype, attack_flag = ARMOR_MELEE, armour_pen = penetration, sharp = sharp, edge = sharp) + damage_through_armor(damage = damage, damagetype = damagetype, def_zone = null, attack_flag = ARMOR_MELEE, armor_pen = penetration, sharp = sharp, edge = sharp) +// damage_through_armor(damage = damage, damagetype = damagetype, attack_flag = ARMOR_MELEE, armor_pen = penetration, sharp = sharp, edge = sharp) user.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] was attacked by [user.name] ([user.ckey])") diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index e718ebdb479..de553c4d889 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -40,7 +40,7 @@ post_pen_mult = 1 ) - visible_message("Attack ! [damage]") + message_admins("Attack ! [damage]") if(armor_pen <= 0) armor_pen = 0.1 // if HYBRID armour system were to be chosen armour penetration of 0 could fuck up some calculations, negative one ... well I am expecting out of artists @@ -53,7 +53,7 @@ var/total_dmg = 0 for(var/dmg_type in dmg_types) total_dmg += dmg_types[dmg_type] - + message_admins("[used_weapon] VS [src] | [dmg_types[dmg_type]] : [dmg_type]") if(!total_dmg) return FALSE @@ -67,7 +67,7 @@ var/armor = getarmor(def_zone, attack_flag) var/guaranteed_damage_red = armor * ARMOR_GDR_COEFFICIENT var/armor_effectiveness = max(0, ((armor * armor_times_mod) - armor_pen) * RELATIVE_ARMOR_EFFICIENCY) - var/absolute_armor = max(0, ((((armor+1) * armor_times_mod) - armor_pen) * ABSOLUTE_ARMOR_EFFICIENCY) / armor_pen) + var/absolute_armor = max(0, ((((armor) * armor_times_mod) - armor_pen) * ABSOLUTE_ARMOR_EFFICIENCY) / armor_pen) var/ablative_armor = getarmorablative(def_zone, attack_flag) * (100 - armor_penetration) / 100 @@ -77,6 +77,8 @@ if(dmg) if(armor_effectiveness == 0)//No armor? Damage as usual apply_damage(dmg * post_pen_mult, dmg_type, def_zone, 1, wounding_multiplier, sharp, edge) + final_damage+=dmg * post_pen_mult + message_admins("[used_weapon] VS [src] | dmg=[dmg] | dmg_type=[dmg_type] | post_pen_mult=[post_pen_mult]") if(ishuman(src) && def_zone) var/mob/living/carbon/human/H = src var/obj/item/organ/external/o = H.get_organ(def_zone) @@ -95,7 +97,7 @@ //Actual part of the damage that passed through armor var/actual_damage = max(0,round ( ( dmg * ( 100 - armor_effectiveness ) ) / 100 - absolute_armor)) - message_admins("actual_damage=[actual_damage]") + message_admins("[used_weapon] VS [src] | dmg=[dmg] | dmg_type=[dmg_type] | post_pen_mult=[post_pen_mult] | actual_damage=[actual_damage]") apply_damage(actual_damage * post_pen_mult, dmg_type, def_zone, used_weapon, sharp, edge) if(ishuman(src) && def_zone && actual_damage >= 20) var/mob/living/carbon/human/H = src @@ -111,7 +113,7 @@ - var/effective_armor = (final_damage / total_dmg) * 100 + var/effective_armor = 100 - (final_damage / total_dmg) * 100 //Feedback @@ -127,11 +129,14 @@ if(49 to 74) armor_message(SPAN_NOTICE("[src] armor absorbs most of the damage!"), SPAN_NOTICE("Your armor protects you from the impact!")) + if(24 to 39) + armor_message(SPAN_NOTICE("[src] armor absorbs fair bit of the damage!"), + SPAN_NOTICE("Your armor reduced the impact!")) if(-INFINITY to 24) armor_message(SPAN_NOTICE("[src] armor reduces the impact by a little."), SPAN_NOTICE("Your armor reduced the impact a little.")) - visible_message("total_dmg=[total_dmg] | final_dmg=[final_damage] | armor_effectiveness=[armor_effectiveness] | absolute_armor=[absolute_armor]") + message_admins("[used_weapon] VS [src] | def_zone=[def_zone] | total_dmg=[total_dmg] | final_dmg=[final_damage] | armor=[armor] | absolute_armor=[absolute_armor] | armor_pen=[armor_pen] | armor_effectiveness=[armor_effectiveness] | effective_armor=[effective_armor]") @@ -321,33 +326,35 @@ shake_animation(damage) -/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone) + // return PROJECTILE_CONTINUE if bullet should continue flying +/mob/living/bullet_act(obj/item/projectile/P, var/def_zone_hit) + message_admins("Bullet is acting !") var/hit_dir = get_dir(P, src) - if (P.is_hot() >= HEAT_MOBIGNITE_THRESHOLD && (!(P.testing))) + if (P.is_hot() >= HEAT_MOBIGNITE_THRESHOLD) IgniteMob() //Being hit while using a deadman switch - if(istype(get_active_hand(),/obj/item/device/assembly/signaler) && (!(P.testing))) + if(istype(get_active_hand(),/obj/item/device/assembly/signaler)) var/obj/item/device/assembly/signaler/signaler = get_active_hand() if(signaler.deadman && prob(80)) log_and_message_admins("has triggered a signaler deadman's switch") src.visible_message(SPAN_WARNING("[src] triggers their deadman's switch!")) signaler.signal() + var/agony = P.damage_types[HALLOSS] ? P.damage_types[HALLOSS] : 0 //Stun Beams if(P.taser_effect) - if (!(P.testing)) - stun_effect_act(0, P.agony, def_zone, P) - to_chat(src, SPAN_WARNING("You have been hit by [P]!")) - else - P.on_impact(src, TRUE) //not sure if this will work + stun_effect_act(0, agony, def_zone_hit, P) + to_chat(src, SPAN_WARNING("You have been hit by [P]!")) qdel(P) return TRUE - if(P.knockback && hit_dir && (!(P.testing))) + if(P.knockback && hit_dir) throw_at(get_edge_target_turf(src, hit_dir), P.knockback, P.knockback) + P.on_hit(src, def_zone_hit) + //Armor and damage if(!P.nodamage) if (!(P.testing)) @@ -355,24 +362,15 @@ for(var/damage_type in P.damage_types) var/damage = P.damage_types[damage_type] var/dmult = 1 - if(LAZYLEN(P.effective_faction)) - if(faction in P.effective_faction) - dmult += P.damage_mult - if(LAZYLEN(P.supereffective_types)) - if(is_type_in_list(src, P.supereffective_types, TRUE)) - dmult += P.supereffective_mult + if(faction in P.effective_faction) + dmult += P.damage_mult + if(is_type_in_list(src, P.supereffective_types, TRUE)) + dmult += P.supereffective_mult damage *= dmult - if (!(P.testing)) - damage_through_armor(damage, damage_type, def_zone, P.check_armour, armor_pen = P.armor_penetration, used_weapon = P, sharp=is_sharp(P), edge=has_edge(P), post_pen_mult = P.post_penetration_dammult) - + hit_impact(P.get_structure_damage(), hit_dir) + return damage_through_armor(def_zone = def_zone_hit, attack_flag = P.check_armour, armor_pen = P.armor_penetration, used_weapon = P, sharp = is_sharp(P), edge = has_edge(P), wounding_multiplier = P.wounding_mult, dmg_types = P.damage_types, return_continuation = TRUE) - if(P.agony > 0 && istype(P,/obj/item/projectile/bullet)) - if (!(P.testing)) - hit_impact(P.agony, hit_dir) - damage_through_armor(P.agony, HALLOSS, def_zone, P.check_armour, armor_pen = P.armor_penetration, used_weapon = P, sharp = is_sharp(P), edge = has_edge(P)) - - ..() - return TRUE + return PROJECTILE_CONTINUE //Handles the effects of "stun" weapons /mob/living/proc/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null) @@ -394,6 +392,7 @@ apply_damage(agony_amount * armor_coefficient, HALLOSS, def_zone, 0, used_weapon) apply_effect(STUTTER, agony_amount * armor_coefficient) apply_effect(EYE_BLUR, agony_amount * armor_coefficient) + SEND_SIGNAL(src, COMSIG_LIVING_STUN_EFFECT) /mob/living/proc/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0) return 0 //only carbon liveforms have this proc @@ -409,7 +408,7 @@ //Called when the mob is hit with an item in combat. /mob/living/proc/hit_with_weapon(obj/item/I, mob/living/user, var/effective_force, var/hit_zone) - visible_message(SPAN_DANGER("[src] has been [I.attack_verb.len? pick(I.attack_verb) : "attacked"] with [I.name] by [user]!")) + visible_message(SPAN_DANGER("[src] has been [LAZYPICK(I.attack_verb) || "attacked"] with [I.name] by [user]!")) standard_weapon_hit_effects(I, user, effective_force, hit_zone) @@ -509,7 +508,7 @@ O.forceMove(src) src.embedded += O src.visible_message(SPAN_DANGER("\The [O] embeds in the [src]!")) - src.verbs += /mob/proc/yank_out_object + add_verb(src, /mob/proc/yank_out_object) O.on_embed(src) //This is called when the mob is thrown into a dense turf @@ -536,10 +535,17 @@ if(!damage || !istype(user)) return - if(damagetype == BRUTE) - adjustBruteLoss(damage) - else - adjustFireLoss(damage) + + var/used_penetration = 1 + if(isliving(user)) + var/mob/living/L = user + used_penetration = L.armor_penetration + var/attack_BP = BP_CHEST + if(prob(20)) + attack_BP = pick(list(BP_L_LEG, BP_R_LEG, BP_R_ARM, BP_L_ARM, BP_GROIN, BP_HEAD)) + + damage_through_armor(damage, damagetype, attack_BP, ARMOR_MELEE, used_penetration, sharp=sharp, edge=edge) + user.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] was attacked by [user.name] ([user.ckey])") src.visible_message(SPAN_DANGER("[user] has [attack_message] [src]!")) @@ -561,9 +567,10 @@ update_fire() /mob/living/proc/update_fire() - cut_overlay(image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing")) - if(on_fire) - add_overlay(image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing")) + return +// cut_overlay(image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing")) +// if(on_fire) +// add_overlay(image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing")) /mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person fire_stacks = CLAMP(fire_stacks + add_fire_stacks, FIRE_MIN_STACKS, FIRE_MAX_STACKS) @@ -637,7 +644,7 @@ I.action.arguments = I.action_button_arguments I.action.Grant(src) return - +/* /mob/living/update_action_buttons() if(!hud_used) return if(!client) return @@ -690,3 +697,4 @@ hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1) //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,button_number+1) client.screen += hud_used.hide_actions_toggle*/ +*/ \ No newline at end of file diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index bc38557e984..7e8eb00f1ea 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -231,8 +231,14 @@ return FALSE return TRUE -/obj/item/projectile/proc/get_structure_damage() - return ((damage_types[BRUTE] + damage_types[BURN]) * structure_damage_factor) +///obj/item/projectile/proc/get_structure_damage() +// return ((damage_types[BRUTE] + damage_types[BURN]) * structure_damage_factor) + +/obj/item/projectile/proc/get_structure_damage(var/injury_type) + if(!injury_type) // Assume homogenous + return (damage_types[BRUTE] + damage_types[BURN]) * wound_check(INJURY_TYPE_HOMOGENOUS, wounding_mult, edge, sharp) * 2 + else + return (damage_types[BRUTE] + damage_types[BURN]) * wound_check(injury_type, wounding_mult, edge, sharp) * 2 /obj/item/projectile/proc/get_ricochet_modifier() return (ricochet_mod - (armor_penetration * 0.01)) //Return ricochet mod(default 1) modified by AP. E.G 1 - (AP(10) * 0.01) = 0.1. Thus 10% less likely to bounce per 10ap. From 32a95dbc56a55a5b37157dd57dd2b4720ff19f96 Mon Sep 17 00:00:00 2001 From: Delams-The-SM <66973657+Delams-The-SM@users.noreply.github.com> Date: Thu, 29 Aug 2024 18:16:17 +0200 Subject: [PATCH 04/11] finished up melee working woho --- code/_onclick/item_attack.dm | 5 ++--- code/modules/mob/living/carbon/carbon_defense.dm | 2 +- .../mob/living/carbon/human/human_attackhand.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 11 +++++------ code/modules/mob/living/living_defense.dm | 14 ++++---------- .../mob/living/simple_animal/simple_animal.dm | 1 - 6 files changed, 13 insertions(+), 22 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index d1cc4692347..650fe54f0b9 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -357,7 +357,6 @@ avoid code duplication. This includes items that may sometimes act as a standard if (is_hot() >= HEAT_MOBIGNITE_THRESHOLD) target.IgniteMob() - var/power = force if(ishuman(user)) var/mob/living/carbon/human/H = user @@ -366,8 +365,8 @@ avoid code duplication. This includes items that may sometimes act as a standard power *= H.damage_multiplier if(H.holding_back) power /= 2 - if(HULK in user.mutations) - power *= 2 +// if(HULK in user.mutations) +// power *= 2 if(target.faction in effective_faction) // Is the mob's in our list of factions we're effective against? power *= damage_mult // Increase the damage target.hit_with_weapon(src, user, power, hit_zone) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 37e44734cef..c2d10f04294 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -25,7 +25,7 @@ weapon_edge = 0 hit_impact(effective_force, get_step(user, src), hit_zone) - damage_through_armor(effective_force, I.damtype, hit_zone, ARMOR_MELEE, armor_penetration = I.armor_penetration, used_weapon = I, sharp = weapon_sharp, edge = weapon_edge) + damage_through_armor(effective_force, I.damtype, hit_zone, ARMOR_MELEE, I.armor_penetration, used_weapon = I, sharp = is_sharp(I), edge = has_edge(I), post_pen_mult = I.post_penetration_dammult) /*Its entirely possible that we were gibbed or dusted by the above. Check if we still exist before continuing. Being gibbed or dusted has a 1.5 second delay, during which it sets the transforming var to diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index d740b8b7589..cb37b82ed59 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -331,7 +331,7 @@ var/dam_zone = pick(organs_by_name) var/obj/item/organ/external/affecting = get_organ(ran_zone(dam_zone)) - var/dam = damage_through_armor(damage = damage, damagetype = damagetype, def_zone = affecting, attack_flag = ARMOR_MELEE, armor_penetration = penetration, sharp = sharp, edge = sharp) + var/dam = damage_through_armor(damage = damage, damagetype = damagetype, def_zone = affecting, attack_flag = ARMOR_MELEE, armor_pen = penetration, sharp = sharp, edge = sharp) // ran_zone might pick a zone that we don't actually have an organ in if(dam > 0 && affecting) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 7d47d08d2d2..6c1115821a5 100755 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -263,18 +263,15 @@ uniquic_armor_act return FALSE//should be prevented by attacked_with_item() but for sanity. - visible_message("[src] has been [LAZYPICK(I.attack_verb) || "attacked"] in the [affecting.name] with [I.name] by [user]!") + visible_message("|[I.name]|[src]|[user]| has been [LAZYPICK(I.attack_verb) || "attacked"] in the [affecting.name] with [I.name] by [user]!") var/EF = unique_armor_check(I, user, effective_force) if(EF) effective_force = EF - if(ishuman(user)) var/mob/living/carbon/human/H = user H.stop_blocking() - standard_weapon_hit_effects(I, user, effective_force, hit_zone) - return TRUE /mob/living/carbon/human/standard_weapon_hit_effects(obj/item/I, mob/living/user, var/effective_force, var/hit_zone) @@ -372,8 +369,10 @@ uniquic_armor_act adjustOxyLoss(10) adjustHalLoss(5) - - return TRUE + if (damage_through_armor(effective_force, I.damtype, hit_zone, ARMOR_MELEE, I.armor_penetration, used_weapon = I, sharp = is_sharp(I), edge = has_edge(I), post_pen_mult = I.post_penetration_dammult)) + return TRUE + else + return FALSE /mob/living/carbon/human/proc/attack_joint(var/obj/item/organ/external/organ, var/obj/item/W) if(!organ || (organ.nerve_struck == 2) || (organ.nerve_struck == -1)) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index de553c4d889..623987e171d 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -40,7 +40,6 @@ post_pen_mult = 1 ) - message_admins("Attack ! [damage]") if(armor_pen <= 0) armor_pen = 0.1 // if HYBRID armour system were to be chosen armour penetration of 0 could fuck up some calculations, negative one ... well I am expecting out of artists @@ -53,7 +52,6 @@ var/total_dmg = 0 for(var/dmg_type in dmg_types) total_dmg += dmg_types[dmg_type] - message_admins("[used_weapon] VS [src] | [dmg_types[dmg_type]] : [dmg_type]") if(!total_dmg) return FALSE @@ -78,7 +76,6 @@ if(armor_effectiveness == 0)//No armor? Damage as usual apply_damage(dmg * post_pen_mult, dmg_type, def_zone, 1, wounding_multiplier, sharp, edge) final_damage+=dmg * post_pen_mult - message_admins("[used_weapon] VS [src] | dmg=[dmg] | dmg_type=[dmg_type] | post_pen_mult=[post_pen_mult]") if(ishuman(src) && def_zone) var/mob/living/carbon/human/H = src var/obj/item/organ/external/o = H.get_organ(def_zone) @@ -97,7 +94,6 @@ //Actual part of the damage that passed through armor var/actual_damage = max(0,round ( ( dmg * ( 100 - armor_effectiveness ) ) / 100 - absolute_armor)) - message_admins("[used_weapon] VS [src] | dmg=[dmg] | dmg_type=[dmg_type] | post_pen_mult=[post_pen_mult] | actual_damage=[actual_damage]") apply_damage(actual_damage * post_pen_mult, dmg_type, def_zone, used_weapon, sharp, edge) if(ishuman(src) && def_zone && actual_damage >= 20) var/mob/living/carbon/human/H = src @@ -125,7 +121,7 @@ SPAN_NOTICE("Your armor absorbed the impact!")) if(74 to 90) armor_message(SPAN_NOTICE("[src] armor easily absorbs the blow!"), - SPAN_NOTICE("Your armor reduced the impact greatly!")) + SPAN_NOTICE("Your armor greatly reduced the impact!")) if(49 to 74) armor_message(SPAN_NOTICE("[src] armor absorbs most of the damage!"), SPAN_NOTICE("Your armor protects you from the impact!")) @@ -136,7 +132,7 @@ armor_message(SPAN_NOTICE("[src] armor reduces the impact by a little."), SPAN_NOTICE("Your armor reduced the impact a little.")) - message_admins("[used_weapon] VS [src] | def_zone=[def_zone] | total_dmg=[total_dmg] | final_dmg=[final_damage] | armor=[armor] | absolute_armor=[absolute_armor] | armor_pen=[armor_pen] | armor_effectiveness=[armor_effectiveness] | effective_armor=[effective_armor]") + //message_admins("[used_weapon] VS [src] | def_zone=[def_zone] | total_dmg=[total_dmg] | final_dmg=[final_damage] | armor=[armor] | absolute_armor=[absolute_armor] | armor_pen=[armor_pen] | armor_effectiveness=[armor_effectiveness] | effective_armor=[effective_armor]") @@ -328,7 +324,6 @@ // return PROJECTILE_CONTINUE if bullet should continue flying /mob/living/bullet_act(obj/item/projectile/P, var/def_zone_hit) - message_admins("Bullet is acting !") var/hit_dir = get_dir(P, src) if (P.is_hot() >= HEAT_MOBIGNITE_THRESHOLD) @@ -422,10 +417,9 @@ /mob/living/proc/standard_weapon_hit_effects(obj/item/I, mob/living/user, var/effective_force, var/hit_zone) if(!effective_force) return FALSE - //Hulk modifier - if(HULK in user.mutations) - effective_force *= 2 +// if(HULK in user.mutations) +// effective_force *= 2 //Apply weapon damage if (damage_through_armor(effective_force, I.damtype, hit_zone, ARMOR_MELEE, I.armor_penetration, used_weapon = I, sharp = is_sharp(I), edge = has_edge(I), post_pen_mult = I.post_penetration_dammult)) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index e96802b26eb..4a57238efab 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -503,7 +503,6 @@ O.attack(src, user, user.targeted_organ) /mob/living/simple_animal/hit_with_weapon(obj/item/O, mob/living/user, effective_force, hit_zone) - if(effective_force <= resistance) to_chat(user, SPAN_DANGER("This weapon is ineffective, it does no damage.")) return 2 From 257e5d1a108a99eadce44daa71bce9da6e752015 Mon Sep 17 00:00:00 2001 From: Delams-The-SM <66973657+Delams-The-SM@users.noreply.github.com> Date: Fri, 30 Aug 2024 06:01:40 +0200 Subject: [PATCH 05/11] Overpen(works)/Hallos(mostly broken) in PVE the fucking STUN beam and STUN shotgun shells use some snowflake code I can't track down but it does not call damage_through_armour in living defence Also there is something funky with damage values for HALLOS into dmg for mobs so a step forwards, two back --- code/modules/mob/living/living_defense.dm | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 623987e171d..f6910823f24 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -40,10 +40,10 @@ post_pen_mult = 1 ) - if(armor_pen <= 0) armor_pen = 0.1 // if HYBRID armour system were to be chosen armour penetration of 0 could fuck up some calculations, negative one ... well I am expecting out of artists - log_debug("[used_weapon] applied damage to [name] with a nonpositive armor penetration !!") + //log_debug("[used_weapon] applied damage to [name] with a nonpositive armor penetration !!") + //this will flood logs until we change armour pen to be above 0 if(damage) // If damage is defined, we add it to the list if(!dmg_types[damagetype]) @@ -67,9 +67,21 @@ var/armor_effectiveness = max(0, ((armor * armor_times_mod) - armor_pen) * RELATIVE_ARMOR_EFFICIENCY) var/absolute_armor = max(0, ((((armor) * armor_times_mod) - armor_pen) * ABSOLUTE_ARMOR_EFFICIENCY) / armor_pen) - var/ablative_armor = getarmorablative(def_zone, attack_flag) * (100 - armor_penetration) / 100 + var/ablative_armor = getarmorablative(def_zone, attack_flag) * (100 - armor_pen) / 100 var/final_damage = 0 //final summary of damage after all the calculations, for armour message + + if(istype(src,/mob/living/simple_animal/) || istype(src,/mob/living/carbon/superior_animal/)) //PVE extra damages + if(armor + 1 < armor_pen) //overpen damage + for(var/dmg_type in dmg_types) + dmg_types[dmg_type] += (armor_pen - armor) / dmg_types.len + if(dmg_types[HALLOSS]>0) + if(dmg_types.len <= 1) //if we have no other damage types other than HALLOSS we doin BRUTE, TODO: give every weapon with just HALLOSS a secondary damage type set to 0 + dmg_types[BRUTE]=0 + for(var/dmg_type in dmg_types) + dmg_types[dmg_type] += dmg_types[HALLOSS] / dmg_types.len-1 + dmg_types[HALLOSS] = 0 + for(var/dmg_type in dmg_types) var/dmg = dmg_types[dmg_type] if(dmg) @@ -452,7 +464,7 @@ if(isitem(O)) var/obj/item/thingytocheck = O ppd = thingytocheck.post_penetration_dammult - damage_through_armor(throw_damage, dtype, null, ARMOR_MELEE, null, used_weapon = O, sharp = is_sharp(O), edge = has_edge(O), post_pen_mult = ppd) + damage_through_armor(throw_damage, dtype, null, ARMOR_MELEE, null, used_weapon = O, armor_pen = O.armor_penetration, sharp = is_sharp(O), edge = has_edge(O), post_pen_mult = ppd) O.throwing = 0 //it hit, so stop moving From eab45af544765b089487ab6d9f4debaf2958e432 Mon Sep 17 00:00:00 2001 From: Takykardi Date: Wed, 4 Sep 2024 11:08:31 -0500 Subject: [PATCH 06/11] emergency measures to clear errors and runtimes --- code/modules/mob/living/simple_animal/simple_animal.dm | 2 +- code/modules/surgery/mods.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 4a57238efab..ff46ac1eb16 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -415,7 +415,7 @@ dmult += Proj.supereffective_mult damage *= dmult if (!(Proj.testing)) - return damage_through_armor(damage, def_zone, attack_flag = Proj.check_armour, armor_penetration = Proj.armor_penetration, used_weapon = Proj, sharp = is_sharp(Proj), edge = has_edge(Proj), wounding_multiplier = Proj.wounding_mult, dmg_types = Proj.damage_types, return_continuation = TRUE) + return damage_through_armor(damage, def_zone, attack_flag = Proj.check_armour, armor_pen = Proj.armor_penetration, used_weapon = Proj, sharp = is_sharp(Proj), edge = has_edge(Proj), wounding_multiplier = Proj.wounding_mult, dmg_types = Proj.damage_types, return_continuation = TRUE) return FALSE /mob/living/simple_animal/rejuvenate() diff --git a/code/modules/surgery/mods.dm b/code/modules/surgery/mods.dm index faad5ccdd5a..f265d72b41f 100644 --- a/code/modules/surgery/mods.dm +++ b/code/modules/surgery/mods.dm @@ -37,7 +37,7 @@ SPAN_WARNING("[user]'s hand slips, damaging [organ.get_surgery_name()] with \the [mod]!"), SPAN_WARNING("Your hand slips, damaging [organ.get_surgery_name()] with \the [mod]!") ) - organ.take_damage(rand(24, 32), BRUTE, edge = TRUE) + organ.take_damage(rand(24, 32), BRUTE) //Equinox edit. Removed ", edge = TRUE" due to bad keyword argument error. Stopgap, gets an urgent PR working quicker. /datum/surgery_step/remove_mod required_tool_quality = QUALITY_LASER_CUTTING From f0d99144c711e0e062d8b964dbfa52cf448a8032 Mon Sep 17 00:00:00 2001 From: Delams-The-SM <66973657+Delams-The-SM@users.noreply.github.com> Date: Wed, 4 Sep 2024 21:43:14 +0200 Subject: [PATCH 07/11] fixes tazer_effect weapons not properly applying their full range of damages weapons with tazer_effect should properly apply their damage besides just halloss --- code/modules/mob/living/living_defense.dm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index f6910823f24..d2800d3fa9a 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -352,7 +352,8 @@ var/agony = P.damage_types[HALLOSS] ? P.damage_types[HALLOSS] : 0 //Stun Beams if(P.taser_effect) - stun_effect_act(0, agony, def_zone_hit, P) + stun_effect_act(0, agony, def_zone_hit, P, armor_pen = P.armor_penetration, damage_already_applied = TRUE) + damage_through_armor(def_zone = def_zone_hit, attack_flag = P.check_armour, armor_pen = P.armor_penetration, used_weapon = P, sharp = is_sharp(P), edge = has_edge(P), wounding_multiplier = P.wounding_mult, dmg_types = P.damage_types) to_chat(src, SPAN_WARNING("You have been hit by [P]!")) qdel(P) return TRUE @@ -380,11 +381,12 @@ return PROJECTILE_CONTINUE //Handles the effects of "stun" weapons -/mob/living/proc/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null) +/mob/living/proc/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null, var/armor_pen=1, var/damage_already_applied=FALSE) flash_pain() //For not bloating damage_through_armor here is simple armor calculation for stun time var/armor_coefficient = max(0, 1 - getarmor(def_zone, ARMOR_ENERGY) / 100) + var/armor_absolut=max(0, (((getarmor(def_zone, ARMOR_ENERGY) - armor_pen) * ABSOLUTE_ARMOR_EFFICIENCY) / armor_pen)) // TODO use it //If armor is 100 or more, we just skeeping it if (stun_amount && armor_coefficient) @@ -394,9 +396,11 @@ apply_effect(STUTTER, stun_amount * armor_coefficient) apply_effect(EYE_BLUR, stun_amount * armor_coefficient) +// if (agony_amount && armor_coefficient && agony_amount * armor_coefficient > armor_absolut) if (agony_amount && armor_coefficient) + if(damage_already_applied == FALSE) + apply_damage(agony_amount * armor_coefficient - armor_absolut, HALLOSS, def_zone, 0, used_weapon) - apply_damage(agony_amount * armor_coefficient, HALLOSS, def_zone, 0, used_weapon) apply_effect(STUTTER, agony_amount * armor_coefficient) apply_effect(EYE_BLUR, agony_amount * armor_coefficient) SEND_SIGNAL(src, COMSIG_LIVING_STUN_EFFECT) From 8b5cd818d27c0157fb8ef71edefb6f030812d149 Mon Sep 17 00:00:00 2001 From: Takykardi Date: Wed, 4 Sep 2024 21:27:52 -0500 Subject: [PATCH 08/11] makes linters stop freaking out. again. --- code/modules/mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/living/silicon/silicon.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 6c1115821a5..eca08404029 100755 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -68,7 +68,7 @@ uniquic_armor_act step(src, pick(cardinal - hit_dirs)) visible_message(SPAN_WARNING("[src] stumbles around.")) -/mob/living/carbon/human/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone) +/mob/living/carbon/human/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/armor_pen, var/damage_already_applied) var/obj/item/organ/external/affected = get_organ(check_zone(def_zone)) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 9925766a076..e9e29df37dc 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -111,7 +111,7 @@ to_chat(src, SPAN_DANGER("Warning: Electromagnetic pulse detected.")) ..() -/mob/living/silicon/stun_effect_act(var/stun_amount, var/agony_amount) +/mob/living/silicon/stun_effect_act(var/stun_amount, var/agony_amount, var/armor_pen, var/damage_already_applied) return //immune /mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0) From 256b8d4415d8fdeb0d4228b96be8d2065677b1dc Mon Sep 17 00:00:00 2001 From: Delams-The-SM <66973657+Delams-The-SM@users.noreply.github.com> Date: Sat, 7 Sep 2024 14:51:52 +0200 Subject: [PATCH 09/11] PVE agony armour plus minimum damage --- code/modules/mob/living/living_defense.dm | 212 ++++------------------ 1 file changed, 31 insertions(+), 181 deletions(-) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 1b836456438..a86eefde787 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -59,11 +59,10 @@ var/armor_times_mod = 1 if(istype(src,/mob/living/simple_animal/) || istype(src,/mob/living/carbon/superior_animal/)) - armor_times_mod = 0.5 + armor_times_mod = 0.5 // a thing from the past . . . why do we have this ? //GDR - guaranteed damage reduction. It's a value that deducted from damage before all calculations var/armor = getarmor(def_zone, attack_flag) - var/guaranteed_damage_red = armor * ARMOR_GDR_COEFFICIENT var/armor_effectiveness = max(0, ((armor * armor_times_mod) - armor_pen) * RELATIVE_ARMOR_EFFICIENCY) var/absolute_armor = max(0, ((((armor) * armor_times_mod) - armor_pen) * ABSOLUTE_ARMOR_EFFICIENCY) / armor_pen) @@ -71,15 +70,26 @@ var/final_damage = 0 //final summary of damage after all the calculations, for armour message +//this will trigger with EVERY ATTACK, kill NPC's via debug verbs +// message_admins("##########################################") +// for(var/dmg_type in dmg_types) +// message_admins("dmg_type [dmg_type] = dmg [dmg_types[dmg_type]]") + if(istype(src,/mob/living/simple_animal/) || istype(src,/mob/living/carbon/superior_animal/)) //PVE extra damages if(armor + 1 < armor_pen) //overpen damage for(var/dmg_type in dmg_types) - dmg_types[dmg_type] += (armor_pen - armor) / dmg_types.len - if(dmg_types[HALLOSS]>0) - if(dmg_types.len <= 1) //if we have no other damage types other than HALLOSS we doin BRUTE, TODO: give every weapon with just HALLOSS a secondary damage type set to 0 - dmg_types[BRUTE]=0 - for(var/dmg_type in dmg_types) - dmg_types[dmg_type] += dmg_types[HALLOSS] / dmg_types.len-1 + dmg_types[dmg_type] += (armor_pen - armor) / dmg_types.len //we split overpen damage into other damage types equally, this might need adjustment if we chose to have a more ABSOLUTE heavy armor system + if(dmg_types[HALLOSS]>0) //PvE hallos damage + var/agony_armor_effectiveness = max(0, ((armor * armor_times_mod) - armor_pen) * RELATIVE_ARMOR_EFFICIENCY) + var/agony_absolute_armor = max(0, (((armor * armor_times_mod) - armor_pen) * ABSOLUTE_ARMOR_EFFICIENCY) / armor_pen) + var/mob_agony_gamage = max(dmg_types[HALLOSS] * ARMOR_GDR_COEFFICIENT,round ( ( dmg_types[HALLOSS] * ( 100 - agony_armor_effectiveness ) ) / 100 - agony_absolute_armor)) + adjustHalLoss(mob_agony_gamage) + final_damage+=mob_agony_gamage +// alternative way of doing it similiar to overpen above +// if(dmg_types.len <= 1) //if we have no other damage types other than HALLOSS we doin BRUTE, TODO: give every weapon with just HALLOSS a secondary damage type set to 0 +// dmg_types[BRUTE]=0 +// for(var/dmg_type in dmg_types) +// dmg_types[dmg_type] += dmg_types[HALLOSS] / dmg_types.len-1 dmg_types[HALLOSS] = 0 for(var/dmg_type in dmg_types) @@ -101,11 +111,11 @@ //Pain part of the damage, meaning that it is the pain caused by brute/burn/etc, that simulates impact from armor absorbtion //For balance purposes, it's lowered by ARMOR_HALLOS_COEFFICIENT if(!(dmg_type == HALLOSS)) - var/agony_gamage = max(0,round( ( dmg * armor_effectiveness * ARMOR_HALLOS_COEFFICIENT * clamp((get_specific_organ_efficiency(OP_NERVE, def_zone) / 100), 0.5, 1.5) / 100) - absolute_armor * ARMOR_HALLOS_COEFFICIENT)) + var/agony_gamage = max(dmg * ARMOR_GDR_COEFFICIENT * ARMOR_HALLOS_COEFFICIENT,round( ( dmg * armor_effectiveness * ARMOR_HALLOS_COEFFICIENT * clamp((get_specific_organ_efficiency(OP_NERVE, def_zone) / 100), 0.5, 1.5) / 100) - absolute_armor * ARMOR_HALLOS_COEFFICIENT)) adjustHalLoss(agony_gamage) //Actual part of the damage that passed through armor - var/actual_damage = max(0,round ( ( dmg * ( 100 - armor_effectiveness ) ) / 100 - absolute_armor)) + var/actual_damage = max(dmg * ARMOR_GDR_COEFFICIENT,round ( ( dmg * ( 100 - armor_effectiveness ) ) / 100 - absolute_armor)) apply_damage(actual_damage * post_pen_mult, dmg_type, def_zone, used_weapon, sharp, edge) if(ishuman(src) && def_zone && actual_damage >= 20) var/mob/living/carbon/human/H = src @@ -128,188 +138,28 @@ //In order to show both target and everyone around that armor is actually working, we are going to send message for both of them //Goon/tg chat should take care of spam issue on this one switch(effective_armor) - if(90 to INFINITY) + if(89 to INFINITY) armor_message(SPAN_NOTICE("[src] armor absorbs the blow!"), SPAN_NOTICE("Your armor absorbed the impact!")) - if(74 to 90) + if(74 to 89) armor_message(SPAN_NOTICE("[src] armor easily absorbs the blow!"), SPAN_NOTICE("Your armor greatly reduced the impact!")) if(49 to 74) armor_message(SPAN_NOTICE("[src] armor absorbs most of the damage!"), SPAN_NOTICE("Your armor protects you from the impact!")) - if(24 to 39) + if(24 to 49) armor_message(SPAN_NOTICE("[src] armor absorbs fair bit of the damage!"), SPAN_NOTICE("Your armor reduced the impact!")) - if(-INFINITY to 24) + if(10 to 24) armor_message(SPAN_NOTICE("[src] armor reduces the impact by a little."), SPAN_NOTICE("Your armor reduced the impact a little.")) + if(-INFINITY to 10) + armor_message(SPAN_NOTICE("[src] armor was pierced !"), + SPAN_NOTICE("Your armor didn't affect the impact at all !")) - //message_admins("[used_weapon] VS [src] | def_zone=[def_zone] | total_dmg=[total_dmg] | final_dmg=[final_damage] | armor=[armor] | absolute_armor=[absolute_armor] | armor_pen=[armor_pen] | armor_effectiveness=[armor_effectiveness] | effective_armor=[effective_armor]") - - - - - - - - - - - - - - -/* - - if(istype(src,/mob/living/simple_animal/) || istype(src,/mob/living/carbon/superior_animal/)) //overpen damage, relative armour not modified by armour effectiveness TODO fix it ??? - var/mob_brute_armor = src.getarmor(def_zone, "bullet") //All brute over-pen checks bullet rather then melee for simple mobs to keep melee viable - var/mob_laser_armor = src.getarmor(def_zone, "energy") - var/mob_agony_armor = src.getarmor(def_zone, "agony") - - //message_admins("mob_brute_armor = [mob_brute_armor]!") - //message_admins("mob_laser_armor = [mob_laser_armor]!") - //message_admins("mob_agony_armor = [mob_agony_armor]!") - - //We take the armor pen and baseline armor for calulating the armor pen rather then the reduction so that we get correct values - var/burns_armor_overpenetration = armor_pen - mob_laser_armor - var/brute_armor_overpenetration = armor_pen - mob_brute_armor - - //This is put here rather then above over-pen as we want to keep over-pen being with baseline armor rather then halfed. - mob_brute_armor = mob_brute_armor * armor_times_mod - mob_laser_armor = mob_laser_armor * armor_times_mod - - //message_admins("brute_armor_overpenetration = [brute_armor_overpenetration]!") - //message_admins("burns_armor_overpenetration = [burns_armor_overpenetration]!") - - //message_admins("overpen_dmg = [overpen_dmg]!") - - if(damagetype == HALLOSS) - overpen_dmg = max(0,round(overpen_dmg - mob_agony_armor) - absolute_armor * ARMOR_HALLOS_COEFFICIEN) - - if(brute_armor_overpenetration > 0 && damagetype == BRUTE) - overpen_dmg += max(0,round(brute_armor_overpenetration) - absolute_armor * ARMOR_HALLOS_COEFFICIEN) - - if(burns_armor_overpenetration > 0 && damagetype == BURN) - overpen_dmg += max(0,round(burns_armor_overpenetration) - absolute_armor * ARMOR_HALLOS_COEFFICIEN) - - //message_admins("post math mob overpen overpen_dmg = [overpen_dmg]!") -*/ - - - - - - - -/* - var/remaining_armor = armor - var/remaining_ablative = ablative_armor - - for(var/dmg_type in dmg_types) - var/dmg = dmg_types[dmg_type] - if(dmg) - var/used_armor = 0 // Used for agony calculation, as well as reduction in armour before follow-up attacks - - if(dmg_type in list(BRUTE, BURN, TOX, BLAST)) // Some damage types do not help penetrate armor - if(remaining_armor) - var/dmg_armor_difference = dmg - remaining_armor - var/is_difference_positive = dmg_armor_difference > 0 - used_armor += is_difference_positive ? dmg - dmg_armor_difference : dmg - remaining_armor = is_difference_positive ? 0 : -dmg_armor_difference - dmg = is_difference_positive ? dmg_armor_difference : 0 - if(remaining_ablative && dmg) - var/ablative_difference - ablative_difference = dmg - remaining_ablative - var/is_difference_positive = ablative_difference > 0 - used_armor += is_difference_positive ? dmg - ablative_difference : dmg - remaining_ablative = is_difference_positive ? 0 : -ablative_difference - dmg = is_difference_positive ? ablative_difference : 0 - else - dmg = max(dmg - remaining_armor - remaining_ablative, 0) - - - - - dmg_types[dmg_type] = dmg // Finally, we adjust the damage passing through - if(dmg) - dealt_damage += dmg - - if(dmg_type == HALLOSS && ishuman(src)) //We already did this for mobs - dmg = round(dmg * clamp((get_specific_organ_efficiency(OP_NERVE, def_zone) / 100), 0.5, 1.5)) - var/pain_armor = max(0, (src.getarmor(def_zone, "bullet") + src.getarmor(def_zone, "melee") / armor_divisor))//All brute over-pen checks bullet rather then melee for simple mobs to keep melee viable - var/pain_no_matter_what = (dmg * 0.15) //we deal 15% of are pain, this is to stop rubbers being *completely* uses with basic armor - Its not perfect in melee - dmg = max(pain_no_matter_what, (dmg - pain_armor)) - if(ishuman(src)) - var/mob/living/carbon/human/victim = src - if(prob(25 + (dmg * 2))) - if(!victim.stat && !(victim.has_shield())) - if(victim.headcheck(def_zone)) - //Harder to score a stun but if you do it lasts a bit longer - if(prob(dmg)) - visible_message(SPAN_DANGER("[src] [victim.form.knockout_message]")) - apply_effect(5, PARALYZE, getarmor(def_zone, ARMOR_MELEE) ) - else - //Easier to score a stun but lasts less time - if(prob(dmg + 10)) - visible_message(SPAN_DANGER("[src] has been knocked down!")) - apply_effect(1, WEAKEN, getarmor(def_zone, ARMOR_MELEE) ) - - if(dmg_type == BRUTE) - - if ( (sharp || edge) && prob ( (1 - dmg / dmg_types[dmg_type]) * 100 ) ) // If enough of the brute damage is blocked, sharpness is lost from all followup attacks, this converts damage into crushing as well - if(wounding_multiplier) - wounding_multiplier = step_wounding_double(wounding_multiplier) // Implied piercing damage, degrade by two steps (prevents damage duping from <1 multiplier) - else - wounding_multiplier = 1 // Crushing multiplier forced - sharp = FALSE - edge = FALSE - armor_message(SPAN_NOTICE("[src] armor deflected the strike!"), // No cut (strike), only bash - SPAN_NOTICE("Your armor deflects the strike!")) - - apply_damage(dmg, dmg_type, def_zone, armor_divisor, wounding_multiplier, sharp, edge, used_weapon) - if(ishuman(src) && def_zone && dmg >= 20) - var/mob/living/carbon/human/H = src - var/obj/item/organ/external/o = H.get_organ(def_zone) - if (o && o.status & ORGAN_SPLINTED) - visible_message(SPAN_WARNING("The splints break off [src] after being hit!"), - SPAN_WARNING("Your splints break off after being hit!")) - o.status &= ~ORGAN_SPLINTED - var/effective_armor = (1 - dealt_damage / total_dmg) * 100 - - - - - -*/ - - - - -/* else//shelving this for a moment, will most likely shufffle it around - - if(damagetype == HALLOSS) - //First we get the nervs! - effective_damage = round(effective_damage * clamp((get_specific_organ_efficiency(OP_NERVE, def_zone) / 100), 0.5, 1.5)) - var/pain_armor = max(0, (src.getarmor(def_zone, "bullet") + src.getarmor(def_zone, "melee") - armor_pen))//All brute over-pen checks bullet rather then melee for simple mobs to keep melee viable - var/pain_no_matter_what = (effective_damage * 0.15) //we deal 15% of are pain, this is to stop rubbers being *completely* uses with basic armor - Its not perfect in melee - effective_damage = max(pain_no_matter_what, (effective_damage - pain_armor)) - if(ishuman(src)) - var/mob/living/carbon/human/victim = src - if(prob(25 + (effective_damage * 2))) - if(!victim.stat && !(victim.has_shield())) - if(victim.headcheck(def_zone)) - //Harder to score a stun but if you do it lasts a bit longer - if(prob(effective_damage)) - visible_message(SPAN_DANGER("[src] [victim.form.knockout_message]")) - apply_effect(5, PARALYZE, getarmor(def_zone, ARMOR_MELEE) ) - else - //Easier to score a stun but lasts less time - if(prob(effective_damage + 10)) - visible_message(SPAN_DANGER("[src] has been knocked down!")) - apply_effect(1, WEAKEN, getarmor(def_zone, ARMOR_MELEE) ) -*/ - - +//this will trigger with EVERY ATTACK, kill NPC's via debug verbs +// message_admins("[used_weapon] VS [src] | def_zone=[def_zone] | total_dmg=[total_dmg] | final_dmg=[final_damage] | armor=[armor] | absolute_armor=[absolute_armor] | armor_pen=[armor_pen] | armor_effectiveness=[armor_effectiveness] | effective_armor=[effective_armor]") +// message_admins("##########################################") //if null is passed for def_zone, then this should return something appropriate for all zones (e.g. area effect damage) @@ -399,7 +249,7 @@ // if (agony_amount && armor_coefficient && agony_amount * armor_coefficient > armor_absolut) if (agony_amount && armor_coefficient) if(damage_already_applied == FALSE) - apply_damage(agony_amount * armor_coefficient - armor_absolut, HALLOSS, def_zone, 0, used_weapon) + apply_damage(max(agony_amount * ARMOR_GDR_COEFFICIENT , agony_amount * armor_coefficient - armor_absolut), HALLOSS, def_zone, 0, used_weapon) apply_effect(STUTTER, agony_amount * armor_coefficient) apply_effect(EYE_BLUR, agony_amount * armor_coefficient) From a3a45874b3ca5fc51c7838b040523e4c83655bb9 Mon Sep 17 00:00:00 2001 From: Delams-The-SM <66973657+Delams-The-SM@users.noreply.github.com> Date: Sat, 7 Sep 2024 14:55:51 +0200 Subject: [PATCH 10/11] small fixes --- code/_onclick/item_attack.dm | 2 +- .../mob/living/carbon/superior_animal/roach/types/fuhrer.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 650fe54f0b9..5cfd68cb883 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -285,7 +285,7 @@ avoid code duplication. This includes items that may sometimes act as a standard if(!i==0) T = get_step(T, get_dir(user, A)) force = force * 0.8 //20% less damage each step forwards - armor_penetration -= 10 //Lower AD a little, per tile + armor_penetration -= 10 //Lower AP a little, per tile //else //message_admins("0th tile bypassed") diff --git a/code/modules/mob/living/carbon/superior_animal/roach/types/fuhrer.dm b/code/modules/mob/living/carbon/superior_animal/roach/types/fuhrer.dm index a36754fee29..826a3ada5ea 100644 --- a/code/modules/mob/living/carbon/superior_animal/roach/types/fuhrer.dm +++ b/code/modules/mob/living/carbon/superior_animal/roach/types/fuhrer.dm @@ -22,7 +22,7 @@ flash_resistances = 5 //half stuns by flash, so we can still get up and be in the fight! - armor = list(melee = 3, bullet = 1, energy = 0, bomb = 5, bio = 20, rad = 0, agony = 0) + armor = list(melee = 15, bullet = 15, energy = 5, bomb = 5, bio = 20, rad = 0, agony = 0) armor_penetration = 25 meat_type = /obj/item/reagent_containers/food/snacks/meat/roachmeat/fuhrer From 4ed1023788f17737a2b2093eb7bdaca45f36ce29 Mon Sep 17 00:00:00 2001 From: Delams-The-SM <66973657+Delams-The-SM@users.noreply.github.com> Date: Sun, 8 Sep 2024 00:27:33 +0200 Subject: [PATCH 11/11] do we need mobs having half of their armour ? fuck no, it's obstructed in some fuck off file, just fix it by having armour values be defines, one set of defines for mobs, another for players --- code/modules/mob/living/living_defense.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index a86eefde787..3dcca7d1ceb 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -58,8 +58,8 @@ //Used for simple/super mobs do to their armor being checked twice var/armor_times_mod = 1 - if(istype(src,/mob/living/simple_animal/) || istype(src,/mob/living/carbon/superior_animal/)) - armor_times_mod = 0.5 // a thing from the past . . . why do we have this ? +// if(istype(src,/mob/living/simple_animal/) || istype(src,/mob/living/carbon/superior_animal/)) +// armor_times_mod = 0.5 // a thing from the past . . . why do we have this ? //GDR - guaranteed damage reduction. It's a value that deducted from damage before all calculations var/armor = getarmor(def_zone, attack_flag)