Security modsuit update (#67131)

This commit is contained in:
Fikou
2022-05-26 12:24:06 -07:00
committed by GitHub
parent 721bd9d5b6
commit ccbd002c61
20 changed files with 369 additions and 153 deletions
@@ -166,7 +166,7 @@
mob_storage_capacity = 1
contents_pressure_protection = 0.8
contents_thermal_insulation = 0.5
foldedbag_path = /obj/item/bodybag/environmental/
foldedbag_path = /obj/item/bodybag/environmental
var/list/weather_protection = list(TRAIT_ASHSTORM_IMMUNE, TRAIT_RADSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE, TRAIT_VOIDSTORM_IMMUNE) // Does not protect against lava or the The Floor Is Lava spell.
/obj/structure/closet/body_bag/environmental/Initialize(mapload)
@@ -181,7 +181,7 @@
icon_state = "ntenvirobag"
contents_pressure_protection = 1
contents_thermal_insulation = 1
foldedbag_path = /obj/item/bodybag/environmental/nanotrasen/
foldedbag_path = /obj/item/bodybag/environmental/nanotrasen
weather_protection = list(TRAIT_WEATHER_IMMUNE)
/// Securable enviro. bags
@@ -191,7 +191,7 @@
desc = "Intended for transport of prisoners through hazardous environments, this environmental protection bag comes with straps to keep an occupant secure."
icon = 'icons/obj/bodybag.dmi'
icon_state = "prisonerenvirobag"
foldedbag_path = /obj/item/bodybag/environmental/prisoner/
foldedbag_path = /obj/item/bodybag/environmental/prisoner
breakout_time = 4 MINUTES // because it's probably about as hard to get out of this as it is to get out of a straightjacket.
/// How long it takes to sinch the bag.
var/sinch_time = 10 SECONDS
@@ -301,7 +301,55 @@
log_game("[key_name(user)] [sinched ? "sinched":"unsinched"] secure environmental bag [src] at [AREACOORD(src)]")
update_appearance()
/obj/structure/closet/body_bag/environmental/prisoner/syndicate
/obj/structure/closet/body_bag/environmental/prisoner/pressurized
name = "pressurized prisoner transport bag"
foldedbag_path = /obj/item/bodybag/environmental/prisoner/pressurized
/// The contents of the gas to be distributed to an occupant once sinched down. Set in Initialize()
var/datum/gas_mixture/air_contents = null
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/Initialize(mapload)
. = ..()
refresh_air()
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/proc/refresh_air()
air_contents = null
air_contents = new(50) //liters
air_contents.temperature = T20C
air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/nitrogen)
air_contents.gases[/datum/gas/oxygen][MOLES] = (ONE_ATMOSPHERE*50)/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
air_contents.gases[/datum/gas/nitrogen][MOLES] = (ONE_ATMOSPHERE*50)/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/Destroy()
if(air_contents)
QDEL_NULL(air_contents)
return ..()
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/return_air()
if(sinched)
refresh_air()
return air_contents
return ..()
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/remove_air(amount)
if(sinched)
refresh_air()
return air_contents.remove(amount) // The internals for this bag are bottomless.
return ..(amount)
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/return_analyzable_air()
if(sinched)
refresh_air()
return air_contents
return ..()
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/togglelock(mob/living/user, silent)
. = ..()
if(sinched)
for(var/mob/living/target in contents)
to_chat(target, span_warning("You hear a faint hiss, and a white mist fills your vision..."))
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/syndicate
name = "syndicate prisoner transport bag"
desc = "An alteration of Nanotrasen's environmental protection bag which has been used in several high-profile kidnappings. Designed to keep a victim unconscious, alive, and secured during transport."
icon = 'icons/obj/bodybag.dmi'
@@ -312,14 +360,8 @@
weather_protection = list(TRAIT_WEATHER_IMMUNE)
breakout_time = 8 MINUTES
sinch_time = 20 SECONDS
// The contents of the gas to be distributed to an occupant once sinched down. Set in Initialize()
var/datum/gas_mixture/air_contents = null
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/Initialize(mapload)
. = ..()
refresh_air()
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/proc/refresh_air()
/obj/structure/closet/body_bag/environmental/prisoner/pressurized/syndicate/refresh_air()
air_contents = null
air_contents = new(50) //liters
air_contents.temperature = T20C
@@ -327,33 +369,3 @@
air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/nitrous_oxide)
air_contents.gases[/datum/gas/oxygen][MOLES] = (ONE_ATMOSPHERE*50)/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
air_contents.gases[/datum/gas/nitrous_oxide][MOLES] = (ONE_ATMOSPHERE*50)/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/Destroy()
if(air_contents)
QDEL_NULL(air_contents)
return ..()
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/return_air()
if(sinched)
refresh_air()
return air_contents
return ..()
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/remove_air(amount)
if(sinched)
refresh_air()
return air_contents.remove(amount) // The internals for this bag are bottomless. Syndicate bluespace trickery.
return ..(amount)
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/return_analyzable_air()
if(sinched)
refresh_air()
return air_contents
return ..()
/obj/structure/closet/body_bag/environmental/prisoner/syndicate/togglelock(mob/living/user, silent)
. = ..()
if(sinched)
for(var/mob/living/target in contents)
to_chat(target, span_warning("You hear a faint hiss, and a white mist fills your vision..."))