diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 5c04a89b20c..509d6e3bb43 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -1923,7 +1923,7 @@ /area/awaymission/research/interior/security) "eq" = ( /obj/structure/rack, -/obj/item/clothing/suit/armor/laserproof, +/obj/item/clothing/suit/hooded/ablative, /obj/effect/turf_decal/tile/red{ dir = 1 }, diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 5e242ad2dad..22bda46006e 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -800,7 +800,7 @@ }, /obj/item/gun/energy/ionrifle, /obj/item/gun/energy/temperature/security, -/obj/item/clothing/suit/armor/laserproof, +/obj/item/clothing/suit/hooded/ablative, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 3ea35232b7d..1a7821008f2 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -54762,7 +54762,7 @@ "bXR" = ( /obj/structure/rack, /obj/item/gun/energy/ionrifle, -/obj/item/clothing/suit/armor/laserproof, +/obj/item/clothing/suit/hooded/ablative, /obj/item/gun/energy/temperature/security, /obj/effect/turf_decal/tile/neutral{ dir = 1 diff --git a/_maps/map_files/Donutstation/Donutstation.dmm b/_maps/map_files/Donutstation/Donutstation.dmm index ecaaf683192..cc42441d333 100644 --- a/_maps/map_files/Donutstation/Donutstation.dmm +++ b/_maps/map_files/Donutstation/Donutstation.dmm @@ -49289,7 +49289,7 @@ /obj/structure/rack, /obj/item/gun/energy/ionrifle, /obj/item/gun/energy/temperature/security, -/obj/item/clothing/suit/armor/laserproof, +/obj/item/clothing/suit/hooded/ablative, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 0e569030193..a920dd1567d 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1961,7 +1961,7 @@ dir = 1 }, /obj/item/gun/energy/temperature/security, -/obj/item/clothing/suit/armor/laserproof, +/obj/item/clothing/suit/hooded/ablative, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index e705dfa4ed9..fa531abd635 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2808,7 +2808,7 @@ /obj/structure/rack, /obj/item/gun/energy/ionrifle, /obj/item/gun/energy/temperature/security, -/obj/item/clothing/suit/armor/laserproof, +/obj/item/clothing/suit/hooded/ablative, /obj/machinery/light{ dir = 8; light_color = "#e8eaff" diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index b5383d88b4f..84dbcf8f59e 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -77,8 +77,8 @@ return !N.fake /datum/objective_item/steal/reflector - name = "a reflector vest." - targetitem = /obj/item/clothing/suit/armor/laserproof + name = "a reflector trenchcoat." + targetitem = /obj/item/clothing/suit/hooded/ablative difficulty = 3 excludefromjob = list("Head of Security", "Warden") diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index c6bbf75bd5e..4af7eb79a8b 100755 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -268,7 +268,7 @@ /obj/structure/closet/secure_closet/armory1/PopulateContents() ..() - new /obj/item/clothing/suit/armor/laserproof(src) + new /obj/item/clothing/suit/hooded/ablative(src) for(var/i in 1 to 3) new /obj/item/clothing/suit/armor/riot(src) for(var/i in 1 to 3) diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 68b97dd80c2..5949a29d179 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -625,6 +625,54 @@ armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/miner +/obj/item/clothing/head/hooded/ablative + name = "ablative hood" + desc = "Hood hopefully belonging to an ablative trenchcoat. Includes a visor for cool-o-vision." + icon_state = "ablativehood" + armor = list("melee" = 10, "bullet" = 10, "laser" = 60, "energy" = 50, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) + strip_delay = 30 + var/hit_reflect_chance = 50 + +/obj/item/clothing/head/hooded/ablative/equipped(mob/living/carbon/human/user, slot) + ..() + to_chat(user, "As you put on the hood, a visor shifts into place and starts analyzing the people around you. Neat!") + ADD_TRAIT(user, TRAIT_SECURITY_HUD, CLOTHING_TRAIT) + +/obj/item/clothing/head/hooded/ablative/dropped(mob/living/carbon/human/user) + ..() + to_chat(user, "You take off the hood, removing the visor in the process and disabling its integrated hud.") + REMOVE_TRAIT(user, TRAIT_SECURITY_HUD, CLOTHING_TRAIT) + +/obj/item/clothing/head/hooded/ablative/IsReflect(def_zone) + if(!(def_zone in BODY_ZONE_HEAD)) //If not shot where ablative is covering you, you don't get the reflection bonus! + return FALSE + if (prob(hit_reflect_chance)) + return TRUE + +/obj/item/clothing/suit/hooded/ablative + name = "ablative trenchcoat" + desc = "Experimental trenchcoat specially crafted to reflect and absorb laser and disabler shots. Don't expect it to do all that much against an ax or a shotgun, however." + icon_state = "ablativecoat" + item_state = "ablativecoat" + body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + armor = list("melee" = 10, "bullet" = 10, "laser" = 60, "energy" = 50, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) + hoodtype = /obj/item/clothing/head/hooded/ablative + strip_delay = 30 + equip_delay_other = 40 + var/hit_reflect_chance = 50 + +/obj/item/clothing/suit/hooded/ablative/Initialize() + . = ..() + allowed = GLOB.security_vest_allowed + +/obj/item/clothing/suit/hooded/ablative/IsReflect(def_zone) + if(!(def_zone in list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))) //If not shot where ablative is covering you, you don't get the reflection bonus! + return FALSE + if (prob(hit_reflect_chance)) + return TRUE + /obj/item/clothing/head/hooded/winterhood/miner icon_state = "winterhood_miner" diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index f9882a55b17..0b8296b2e6b 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index 252f10aeec0..36d71b45c2d 100644 Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index b6fa2f99f40..7b36ded1a12 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 27cee74ce4b..23cd0e32793 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ