From 26b99bfb91a9e04eadfb5992a3021e948da8b85d Mon Sep 17 00:00:00 2001 From: NanakoAC Date: Tue, 2 Aug 2016 19:40:28 +0100 Subject: [PATCH] Bombsuit and Specialised Armour Tweaks (#585) An overhaul of the EOD suit to make it more believable and suitable for purpose, plus a little tweak to riot/bulletproof/ablative suits rscadd: "Bomb suit and hood are now far more robust, and resistant to all types of damage" rscadd: "Bomb suits now protect all bodyparts except the hands" tweak: "Bomb suit slowdown significantly increased" rscadd: "Bomb suits now cause the wearer to gradually overheat and will eventually cause heatstroke, their materials are very bad for dissipating bodyheat" rscadd: "Bomb hoods now restrict peripheral vision like welding goggles, but do not protect your eyes from light" tweak: "Bomb suits and bomb hoods are now too large to fit in a backpack" rscadd: "Bulletproof, ablative and riot suits are no longer cripplingly overspecialised, their resistance to the non-primary damage types has been increased" --- code/modules/clothing/suits/armor.dm | 6 +- code/modules/clothing/suits/utility.dm | 99 ++++++++++++++++++-- html/changelogs/Nanako-SpecialisedArmour.yml | 42 +++++++++ 3 files changed, 136 insertions(+), 11 deletions(-) create mode 100644 html/changelogs/Nanako-SpecialisedArmour.yml diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 4c6a16b4a53..4026649c70d 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -90,7 +90,7 @@ item_state = "swat_suit" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS slowdown = 1 - armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 80, bullet = 20, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) flags_inv = HIDEJUMPSUIT siemens_coefficient = 0.5 pocket_slots = 4//Fullbody suit, so more slots @@ -102,7 +102,7 @@ icon_state = "bulletproof" item_state = "armor" blood_overlay_type = "armor" - armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 25, bullet = 80, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.7 /obj/item/clothing/suit/armor/laserproof @@ -111,7 +111,7 @@ icon_state = "armor_reflec" item_state = "armor_reflec" blood_overlay_type = "armor" - armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 25, bullet = 25, laser = 80, energy = 10, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0 /obj/item/clothing/suit/armor/swat diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 13ec0e26355..4695a51224c 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -53,27 +53,105 @@ name = "bomb hood" desc = "Use in case of bomb." icon_state = "bombsuit" - flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0) + w_class = 5//Too large to fit in a backpack + flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|STOPPRESSUREDAMAGE|THICKMATERIAL|BLOCK_GAS_SMOKE_EFFECT + armor = list(melee = 30, bullet = 20, laser = 25,energy = 30, bomb = 100, bio = 60, rad = 60) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES body_parts_covered = HEAD|FACE|EYES siemens_coefficient = 0 + +//Changes by Nanako +//Bomb suits should huge and robust. They used to have 100 bomb protection and nothing in other categories +//Bomb suits now have decent resistance in all categories, but with two major ergonomic drawbacks: +//1. Heavy. really heavy, massive slowdown on movement +//2. Bomb suit materials don't allow permeability of body heat, thus the wearer tends to overheat and can't wear them for long /obj/item/clothing/suit/bomb_suit name = "bomb suit" - desc = "A suit designed for safety when handling explosives." + desc = "A suit designed for safety when handling explosives. It looks heavy and uncomfortable to wear for even a short time." icon_state = "bombsuit" item_state = "bombsuit" - w_class = 4//bulky item + w_class = 7//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - slowdown = 2 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0) + slowdown = 8 + armor = list(melee = 55, bullet = 55, laser = 55,energy = 60, bomb = 100, bio = 60, rad = 60) + flags = STOPPRESSUREDAMAGE|THICKMATERIAL flags_inv = HIDEJUMPSUIT|HIDETAIL - heat_protection = UPPER_TORSO|LOWER_TORSO - max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE + heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS + cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS + max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE siemens_coefficient = 0 + var/mob/living/carbon/human/wearer = null + var/suit_temp = T20C + +/obj/item/clothing/suit/bomb_suit/equipped(var/mob/user, var/slot) + if (slot == slot_wear_suit) + var/mob/living/carbon/human/H = user + H.visible_message("[H] starts putting on \the [src]...", "You start putting on \the [src]...") + if(!do_after(H,50)) + if(H && H.wear_suit == src) + H.wear_suit = null + H.drop_from_inventory(src) + src.forceMove(get_turf(H)) + return + + wearer = user + wearer << "You struggle into the [src]. It feels hot, heavy and uncomfortable" + if(!(src in processing_objects)) + processing_objects.Add(src) + else + wearer = null + + + ..(user, slot) + +#define BOMBSUIT_THERMAL 0.27 +#define BOMBHOOD_THERMAL 0.12 +#define BOMBSUIT_MAX_TEMPERATURE 420 //heat 2 for humans, heat 1 for unathi +/obj/item/clothing/suit/bomb_suit/process() + if (!checkworn())//If nobody's wearing the suit, then it cools down + suit_temp -= 0.5 + if (suit_temp < T20C) + suit_temp = T20C + processing_objects.Remove(src) + return + else + var/amount = BOMBSUIT_THERMAL + if (istype(wearer.head, /obj/item/clothing/head/bomb_hood))//wearing both parts heats up faster + amount += BOMBHOOD_THERMAL + + suit_temp = min(suit_temp+amount, BOMBSUIT_MAX_TEMPERATURE) + + if (wearer.bodytemperature < suit_temp) + wearer.bodytemperature += (suit_temp - wearer.bodytemperature)*0.5//Bodytemperature damps towards the suit temp + if (wearer.bodytemperature >= wearer.species.heat_discomfort_level) + wearer.species.get_environment_discomfort(wearer,"heat") + //This is added here because normal discomfort messages proc off of breath rather than bodytemperature. + //Since the surrounding environment isnt heated, they don't happen without it being specifically called here + +/obj/item/clothing/suit/bomb_suit/proc/checkworn() + if (wearer) + if (wearer.wear_suit == src) + return 1 + + if (istype(loc, /mob/living/carbon/human)) + wearer = loc + if (wearer.wear_suit == src) + return 1 + else + return 0 + + else + wearer = null + return 0 + + +/obj/item/clothing/suit/bomb_suit/Destroy() + processing_objects.Remove(src) + ..() /obj/item/clothing/head/bomb_hood/security @@ -112,3 +190,8 @@ slowdown = 1.5 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) flags_inv = HIDEJUMPSUIT|HIDETAIL + + +#undef BOMBSUIT_THERMAL +#undef BOMBHOOD_THERMAL +#undef BOMBSUIT_MAX_TEMPERATURE \ No newline at end of file diff --git a/html/changelogs/Nanako-SpecialisedArmour.yml b/html/changelogs/Nanako-SpecialisedArmour.yml new file mode 100644 index 00000000000..08a9405aefc --- /dev/null +++ b/html/changelogs/Nanako-SpecialisedArmour.yml @@ -0,0 +1,42 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Nanako + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Bomb suit and hood are now far more robust, and resistant to all types of damage" + - rscadd: "Bomb suits now protect all bodyparts except the hands" + - tweak: "Bomb suit slowdown significantly increased" + - rscadd: "Bomb suits now cause the wearer to gradually overheat and will eventually cause heatstroke, their materials are very bad for dissipating bodyheat" + - rscadd: "Bomb hoods now restrict peripheral vision like welding goggles, but do not protect your eyes from light" + - tweak: "Bomb suits and bomb hoods are now too large to fit in a backpack" + - rscadd: "Bulletproof, ablative and riot suits are no longer cripplingly overspecialised, their resistance to the non-primary damage types has been increased" \ No newline at end of file