diff --git a/code/datums/supplypacks/security.dm b/code/datums/supplypacks/security.dm index b4bad53657..18d3f66028 100644 --- a/code/datums/supplypacks/security.dm +++ b/code/datums/supplypacks/security.dm @@ -281,10 +281,7 @@ name = "Armor - Riot plates" contains = list( /obj/item/clothing/head/helmet/riot, - /obj/item/clothing/suit/armor/pcarrier, - /obj/item/clothing/accessory/armor/armorplate/riot, - /obj/item/clothing/accessory/armor/armguards/riot, - /obj/item/clothing/accessory/armor/legguards/riot + /obj/item/clothing/suit/armor/pcarrier/riot/full ) cost = 40 containertype = /obj/structure/closet/crate/secure/lawson @@ -308,10 +305,7 @@ name = "Armor - Ablative plates" contains = list( /obj/item/clothing/head/helmet/laserproof, - /obj/item/clothing/suit/armor/pcarrier, - /obj/item/clothing/accessory/armor/armorplate/laserproof, - /obj/item/clothing/accessory/armor/armguards/laserproof, - /obj/item/clothing/accessory/armor/legguards/laserproof + /obj/item/clothing/suit/armor/pcarrier/laserproof/full ) cost = 50 containertype = /obj/structure/closet/crate/secure/lawson @@ -335,10 +329,7 @@ name = "Armor - Ballistic plates" contains = list( /obj/item/clothing/head/helmet/bulletproof, - /obj/item/clothing/suit/armor/pcarrier, - /obj/item/clothing/accessory/armor/armorplate/bulletproof, - /obj/item/clothing/accessory/armor/armguards/bulletproof, - /obj/item/clothing/accessory/armor/legguards/bulletproof + /obj/item/clothing/suit/armor/pcarrier/bulletproof/full ) cost = 50 containertype = /obj/structure/closet/crate/secure/heph diff --git a/code/game/objects/items/weapons/material/material_armor.dm b/code/game/objects/items/weapons/material/material_armor.dm index 3d3f7a3c38..96496d2f8f 100644 --- a/code/game/objects/items/weapons/material/material_armor.dm +++ b/code/game/objects/items/weapons/material/material_armor.dm @@ -31,7 +31,9 @@ Protectiveness | Armor % var/applies_material_color = TRUE var/unbreakable = FALSE var/default_material = null // Set this to something else if you want material attributes on init. - var/material_armor_modifer = 1 // Adjust if you want seperate types of armor made from the same material to have different protectiveness (e.g. makeshift vs real armor) + var/material_armor_modifier = 1 // Adjust if you want seperate types of armor made from the same material to have different protectiveness (e.g. makeshift vs real armor) + var/material_slowdown_modifier = 0 + var/material_slowdown_multiplier = 1 /obj/item/clothing/New(var/newloc, var/material_key) ..(newloc) @@ -138,7 +140,7 @@ Protectiveness | Armor % return ..() var/reflectchance = (40 * material.reflectivity) - round(damage/3) - reflectchance *= material_armor_modifer + reflectchance *= material_armor_modifier if(!(def_zone in list(BP_TORSO, BP_GROIN))) reflectchance /= 2 if(P.starting && prob(reflectchance)) @@ -166,17 +168,17 @@ Protectiveness | Armor % if(material) var/melee_armor = 0, bullet_armor = 0, laser_armor = 0, energy_armor = 0, bomb_armor = 0 - melee_armor = calculate_material_armor(material.protectiveness * material_armor_modifer) + melee_armor = calculate_material_armor(material.protectiveness * material_armor_modifier) - bullet_armor = calculate_material_armor((material.protectiveness * (material.hardness / 100) * material_armor_modifer) * 0.7) + bullet_armor = calculate_material_armor((material.protectiveness * (material.hardness / 100) * material_armor_modifier) * 0.7) - laser_armor = calculate_material_armor((material.protectiveness * (material.reflectivity + 1) * material_armor_modifer) * 0.7) + laser_armor = calculate_material_armor((material.protectiveness * (material.reflectivity + 1) * material_armor_modifier) * 0.7) if(material.opacity != 1) laser_armor *= max(material.opacity - 0.3, 0) // Glass and such has an opacity of 0.3, but lasers should go through glass armor entirely. - energy_armor = calculate_material_armor((material.protectiveness * material_armor_modifer) * 0.4) + energy_armor = calculate_material_armor((material.protectiveness * material_armor_modifier) * 0.4) - bomb_armor = calculate_material_armor((material.protectiveness * material_armor_modifer) * 0.5) + bomb_armor = calculate_material_armor((material.protectiveness * material_armor_modifier) * 0.5) // Makes sure the numbers stay capped. for(var/number in list(melee_armor, bullet_armor, laser_armor, energy_armor, bomb_armor)) @@ -190,7 +192,12 @@ Protectiveness | Armor % if(!isnull(material.conductivity)) siemens_coefficient = between(0, material.conductivity / 10, 10) - slowdown = between(0, round(material.weight / 10, 0.1), 6) + + var/slowdownModified = between(0, round(material.weight / 10, 0.1), 6) + + var/slowdownUncapped = (material_slowdown_multiplier * slowdownModified) - material_slowdown_modifier + + slowdown = max(slowdownUncapped, 0) /obj/item/clothing/suit/armor/material name = "armor" @@ -201,6 +208,67 @@ Protectiveness | Armor % desc = "This appears to be two 'sheets' of a material held together by cable. If the sheets are strong, this could be rather protective." icon_state = "material_armor_makeshift" +/obj/item/clothing/accessory/material/makeshift/light //Craftable with 4 material sheets, less slowdown, less armour + name = "light armor plate" + desc = "A thin plate of padded material, designed to fit into a plate carrier. Attaches to a plate carrier." + icon = 'icons/obj/clothing/modular_armor.dmi' + icon_state = "armor_light" + body_parts_covered = UPPER_TORSO|LOWER_TORSO + slot = ACCESSORY_SLOT_ARMOR_C + material_armor_modifier = 0.8 + material_slowdown_modifier = 0.5 //Subtracted from total slowdown + material_slowdown_multiplier = 0.8 //Multiplied by total slowdown + +/obj/item/clothing/accessory/material/makeshift/heavy //Craftable with 8 material sheets, more slowdown, more armour + name = "heavy armor plate" + desc = "A thick plate of padded material, designed to fit into a plate carrier. Attaches to a plate carrier." + icon = 'icons/obj/clothing/modular_armor.dmi' + icon_state = "armor_medium" + body_parts_covered = UPPER_TORSO|LOWER_TORSO + slot = ACCESSORY_SLOT_ARMOR_C + material_armor_modifier = 1.2 + material_slowdown_modifier = 0 + material_slowdown_multiplier = 1 + +/obj/item/clothing/accessory/material/custom //Not yet craftable, advanced version made with science! + name = "custom armor plate" + desc = "A composite plate of custom machined material, designed to fit into a plate carrier. Attaches to a plate carrier." + icon = 'icons/obj/clothing/modular_armor.dmi' + icon_state = "armor_tactical" + body_parts_covered = UPPER_TORSO|LOWER_TORSO + slot = ACCESSORY_SLOT_ARMOR_C + material_armor_modifier = 1.2 + material_slowdown_modifier = 0.5 + material_slowdown_multiplier = 0.8 + +/obj/item/clothing/accessory/material/makeshift/armguards + name = "arm guards" + desc = "A pair of arm pads reinforced with material. Attaches to a plate carrier." +// accessory_icons = list(slot_tie_str = 'icons/mob/modular_armor.dmi', slot_wear_suit_str = 'icons/mob/modular_armor.dmi') + icon = 'icons/obj/clothing/modular_armor.dmi' + icon_override = 'icons/mob/modular_armor.dmi' + icon_state = "armguards_material" + gender = PLURAL + body_parts_covered = ARMS + slot = ACCESSORY_SLOT_ARMOR_A + material_armor_modifier = 0.8 + material_slowdown_modifier = 0.8 + material_slowdown_multiplier = 0.8 + +/obj/item/clothing/accessory/material/makeshift/legguards + name = "leg guards" + desc = "A pair of leg guards reinforced with material. Attaches to a plate carrier." +// accessory_icons = list(slot_tie_str = 'icons/mob/modular_armor.dmi', slot_wear_suit_str = 'icons/mob/modular_armor.dmi') + icon = 'icons/obj/clothing/modular_armor.dmi' + icon_override = 'icons/mob/modular_armor.dmi' + icon_state = "legguards_material" + gender = PLURAL + body_parts_covered = LEGS + slot = ACCESSORY_SLOT_ARMOR_L + material_armor_modifier = 0.8 + material_slowdown_modifier = 0.8 + material_slowdown_multiplier = 0.8 + /obj/item/clothing/suit/armor/material/makeshift/durasteel default_material = "durasteel" @@ -218,6 +286,9 @@ Protectiveness | Armor % thrown_force_divisor = 0.2 var/wired = FALSE +/obj/item/weapon/material/armor_plating/insert + unbreakable = FALSE + /obj/item/weapon/material/armor_plating/attackby(var/obj/O, mob/user) if(istype(O, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/S = O @@ -249,6 +320,54 @@ Protectiveness | Armor % else ..() +//Make plating inserts for modular armour. +/obj/item/weapon/material/armor_plating/insert/attackby(var/obj/O, mob/user) + + . = ..() + + if(istype(O, /obj/item/weapon/weldingtool)) + var /obj/item/weapon/weldingtool/S = O + if(S.remove_fuel(0,user)) + if(!src || !S.isOn()) return + to_chat(user, "You trim down the edges to size.") + user.drop_from_inventory(src) + var/obj/item/clothing/accessory/material/makeshift/light/new_armor = new(null, src.material.name) + user.put_in_hands(new_armor) + qdel(src) + return + + if(istype(O, /obj/item/weapon/material/armor_plating/insert)) + var/obj/item/weapon/material/armor_plating/insert/second_plate = O + if(second_plate.material != src.material) + to_chat(user, "Both plates need to be the same type of material.") + return + to_chat(user, "You bond the two plates together.") + user.drop_from_inventory(src) + user.drop_from_inventory(second_plate) + var/obj/item/clothing/accessory/material/makeshift/heavy/new_armor = new(null, src.material.name) + user.put_in_hands(new_armor) + qdel(second_plate) + qdel(src) + return + + if(istype(O, /obj/item/weapon/tool/wirecutters)) + to_chat(user, "You split the plate down the middle, and joint it at the elbow.") + user.drop_from_inventory(src) + var/obj/item/clothing/accessory/material/makeshift/armguards/new_armor = new(null, src.material.name) + user.put_in_hands(new_armor) + qdel(src) + return + + if(istype(O, /obj/item/stack/material)) + var/obj/item/stack/material/S = O + if(S.material == get_material_by_name("leather")) + if(S.use(2)) + to_chat(user, "You curve the plate inwards, and add a strap for adjustment.") + user.drop_from_inventory(src) + var/obj/item/clothing/accessory/material/makeshift/legguards/new_armor = new(null, src.material.name) + user.put_in_hands(new_armor) + qdel(src) + return // Used to craft the makeshift helmet /obj/item/clothing/head/helmet/bucket diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index a617717576..8cf8a6292e 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -117,6 +117,15 @@ min_cold_protection_temperature = T0C - 20 cold_protection = HEAD +/obj/item/clothing/head/helmet/explorer + name = "explorer hood" + desc = "An armoured hood for exploring harsh environments." + icon_state = "explorer" + flags = THICKMATERIAL + min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE + siemens_coefficient = 0.9 + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 35, bio = 75, rad = 35) + /obj/item/clothing/head/helmet/swat name = "\improper SWAT helmet" desc = "They're often used by highly trained SWAT Officers." diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index e12cef7303..450db31f36 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -539,6 +539,14 @@ return 0 return 1 +/obj/item/clothing/suit/armor/pcarrier/explorer + name = "explorer suit" + desc = "A lightweight explorer plate carrier. It can be equipped with armor plates, but only protects from the cold on it's own." + icon_state = "explorer" + flags = THICKMATERIAL + min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE + cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + /obj/item/clothing/suit/armor/pcarrier/light starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate) @@ -593,6 +601,30 @@ desc = "A lightweight tan plate carrier vest. It can be equipped with armor plates, but provides no protection of its own." icon_state = "pcarrier_tan" +/obj/item/clothing/suit/armor/pcarrier/laserproof + name = "ablative plate carrier" + desc = "A specialist laser resistant plate carrier. It can be equipped with armour plates, but provides very little protection of its own." + icon_state = "ablative" + armor = list(melee = 0, bullet = 0, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0) + starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/laserproof) + +/obj/item/clothing/suit/armor/pcarrier/bulletproof + name = "ballistic plate carrier" + desc = "A specialist bullet resistant plate carrier. It can be equipped with armour plates, but provides very little protection of its own." + icon_state = "ballistic" + armor = list(melee = 0, bullet = 5, laser = 0, energy = 0, bomb = 5, bio = 0, rad = 0) + starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/bulletproof) + +/obj/item/clothing/suit/armor/pcarrier/riot + name = "riot plate carrier" + desc = "A specialist melee resistant plate carrier. It can be equipped with armour plates, but provides very little protection of its own." + icon_state = "riot" + armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/riot) + +/obj/item/clothing/suit/armor/pcarrier/explorer/light + starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/explorer, /obj/item/clothing/accessory/armor/armguards/explorer, /obj/item/clothing/accessory/armor/legguards/explorer, /obj/item/clothing/accessory/storage/pouches/green) + /obj/item/clothing/suit/armor/pcarrier/tan/tactical name = "tactical plate carrier" starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/tactical, /obj/item/clothing/accessory/storage/pouches/large/tan) @@ -600,3 +632,11 @@ /obj/item/clothing/suit/armor/pcarrier/merc starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/merc, /obj/item/clothing/accessory/armor/armguards/merc, /obj/item/clothing/accessory/armor/legguards/merc, /obj/item/clothing/accessory/storage/pouches/large) +/obj/item/clothing/suit/armor/pcarrier/laserproof/full + starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/laserproof, /obj/item/clothing/accessory/armor/armguards/laserproof, /obj/item/clothing/accessory/armor/legguards/laserproof, /obj/item/clothing/accessory/storage/pouches/blue) + +/obj/item/clothing/suit/armor/pcarrier/bulletproof/full + starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/bulletproof, /obj/item/clothing/accessory/armor/armguards/bulletproof, /obj/item/clothing/accessory/armor/legguards/bulletproof, /obj/item/clothing/accessory/storage/pouches) + +/obj/item/clothing/suit/armor/pcarrier/riot/full + starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/riot, /obj/item/clothing/accessory/armor/armguards/riot, /obj/item/clothing/accessory/armor/legguards/riot, /obj/item/clothing/accessory/storage/pouches) \ No newline at end of file diff --git a/code/modules/clothing/under/accessories/armor.dm b/code/modules/clothing/under/accessories/armor.dm index 9ef80846ee..e20fac493a 100644 --- a/code/modules/clothing/under/accessories/armor.dm +++ b/code/modules/clothing/under/accessories/armor.dm @@ -92,6 +92,12 @@ armor = list(melee = 30, bullet = 15, laser = 40, energy = 10, bomb = 25, bio = 0, rad = 0) slot = ACCESSORY_SLOT_ARMOR_C +/obj/item/clothing/accessory/armor/armorplate/explorer + name = "explorer armor plate" + desc = "A flexible plate made of synthetic fibers, designed to protect from the Sivian fauna. Attaches to a plate carrier." + icon_state = "armor_light" + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 35, bio = 75, rad = 35) + /obj/item/clothing/accessory/armor/armorplate/stab name = "mesh armor plate" desc = "A mesh armor plate made of steel-reinforced synthetic fibers, great for dealing with small blades. Attaches to a plate carrier." @@ -145,7 +151,7 @@ /obj/item/clothing/accessory/armor/armorplate/laserproof name = "ablative armor plate" desc = "A durasteel-scaled synthetic armor plate, providing good protection against lasers. Attaches to a plate carrier." - icon_state = "armor_medium" + icon_state = "armor_ablative" slowdown = 0.6 armor = list(melee = 10, bullet = 10, laser = 70, energy = 50, bomb = 0, bio = 0, rad = 0) armorsoak = list(melee = 0, bullet = 0, laser = 10, energy = 15, bomb = 0, bio = 0, rad = 0) @@ -203,6 +209,12 @@ desc = "A pair of tan arm pads reinforced with armor plating. Attaches to a plate carrier." icon_state = "armguards_tan" +/obj/item/clothing/accessory/armor/armguards/explorer + name = "explorer arm guards" + desc = "A pair of green arm pads reinforced with armor plating. Attaches to a plate carrier." + icon_state = "armguards_green" + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 35, bio = 75, rad = 35) + /obj/item/clothing/accessory/armor/armguards/merc name = "heavy arm guards" desc = "A pair of red-trimmed black arm pads reinforced with heavy armor plating. Attaches to a plate carrier." @@ -262,6 +274,12 @@ desc = "A pair of armored leg pads in tan. Attaches to a plate carrier." icon_state = "legguards_tan" +/obj/item/clothing/accessory/armor/legguards/explorer + name = "explorer leg guards" + desc = "A pair of armored leg pads in green. Attaches to a plate carrier." + icon_state = "legguards_green" + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 35, bio = 75, rad = 35) + /obj/item/clothing/accessory/armor/legguards/merc name = "heavy leg guards" desc = "A pair of heavily armored leg pads in red-trimmed black. Attaches to a plate carrier." diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index 093eb5bc2e..e9e7d461c3 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -11,6 +11,7 @@ recipes += new/datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) recipes += new/datum/stack_recipe("[display_name] spoon", /obj/item/weapon/material/kitchen/utensil/spoon/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) recipes += new/datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) + recipes += new/datum/stack_recipe("[display_name] armor plate insert", /obj/item/weapon/material/armor_plating/insert, 2, time = 40, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) recipes += new/datum/stack_recipe("[display_name] grave marker", /obj/item/weapon/material/gravemarker, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE) recipes += new/datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) recipes += new/datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index 60b52def87..f8792846b6 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -1057,9 +1057,10 @@ var/list/name_to_material icon_base = "solid" icon_reinf = "reinf_mesh" integrity = 60 + weight = 10 ignition_point = T0C+400 melting_point = T0C+500 - protectiveness = 25 + protectiveness = 20 conductive = 0 supply_conversion_value = 4 diff --git a/icons/mob/modular_armor.dmi b/icons/mob/modular_armor.dmi index f6fef773e7..b7965b2ca3 100644 Binary files a/icons/mob/modular_armor.dmi and b/icons/mob/modular_armor.dmi differ diff --git a/icons/obj/clothing/modular_armor.dmi b/icons/obj/clothing/modular_armor.dmi index 119f56d6b5..feb87b3293 100644 Binary files a/icons/obj/clothing/modular_armor.dmi and b/icons/obj/clothing/modular_armor.dmi differ diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm index 6c8e531244..2d672e6eee 100644 --- a/maps/southern_cross/southern_cross-3.dmm +++ b/maps/southern_cross/southern_cross-3.dmm @@ -6324,13 +6324,9 @@ /turf/simulated/floor/tiled, /area/surface/outpost/main) "nC" = ( -/obj/item/device/radio/intercom{ - dir = 8; - name = "Station Intercom (General)"; - pixel_x = -21 - }, -/turf/simulated/floor/tiled/freezer, -/area/surface/outpost/main/restroom) +/obj/machinery/smartfridge/drying_rack, +/turf/simulated/floor/plating, +/area/surface/outpost/main/garage) "nD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -8780,15 +8776,14 @@ /turf/simulated/floor/tiled/freezer, /area/surface/outpost/main/pool) "sa" = ( -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 }, +/obj/machinery/washing_machine, /turf/simulated/floor/tiled/freezer, -/area/surface/outpost/main/pool) +/area/surface/outpost/main/restroom) "sb" = ( /obj/machinery/light/spot{ dir = 1 @@ -14229,6 +14224,16 @@ }, /turf/simulated/floor/tiled/steel/sif/planetuse, /area/surface/outside/path/plains) +"Eq" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/surface/outpost/main/pool) (1,1,1) = {" aa @@ -51038,7 +51043,7 @@ pQ qB qZ rD -sa +Eq sw sS ti @@ -53075,7 +53080,7 @@ hk hF ic iF -iH +nC jt qU kg @@ -53343,7 +53348,7 @@ ll lW mD nd -nC +sa nE nE nE diff --git a/maps/southern_cross/structures/closets/misc.dm b/maps/southern_cross/structures/closets/misc.dm index d9ad3e76fc..ee1baf6e52 100644 --- a/maps/southern_cross/structures/closets/misc.dm +++ b/maps/southern_cross/structures/closets/misc.dm @@ -41,6 +41,8 @@ starts_with = list( /obj/item/clothing/under/explorer, + /obj/item/clothing/suit/armor/pcarrier/explorer/light, + /obj/item/clothing/head/helmet/explorer, /obj/item/clothing/suit/storage/hooded/explorer, /obj/item/clothing/mask/gas/explorer, /obj/item/clothing/shoes/boots/winter/explorer,