mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 03:55:11 +01:00
medical/security modsuit updates and modules (#69194)
tweaks the colors on the security modsuit to be lighter, i think i did that on the original pr but it got reverted due to merge conflicts makes the standard quick carry module have nitrile level carrying instead of latex level environmental bodybags are now always pressurized adds medical and security hardlight bags, which are environmental bags you can use to move people through space, security ones can be sinched to prevent escape adds a medical version of the prisoner capture module, for patient transport, prisoner capture and patient transport now use the medical/security holobags, medical one deploying them faster. when you move too far out of range the holobag dissipates adds a defibrillator module, extends shock paddles adds a thread ripper module, this module temporarily rips away the matter of clothing, to allow stuff like injections, surgery, defibrillation etc through it adds a surgery processor module, essentially a portable surgery computer like borgs have fixes a bug where you can unwield defibrillator paddles just after starting the do_after to defib onehanded fixes a bug where the modsuit gps would have a broken name when renamed
This commit is contained in:
@@ -70,7 +70,7 @@
|
||||
if(tagged)
|
||||
. += "bodybag_label"
|
||||
|
||||
/obj/structure/closet/body_bag/close()
|
||||
/obj/structure/closet/body_bag/close(mob/living/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
set_density(FALSE)
|
||||
@@ -182,12 +182,47 @@
|
||||
contents_pressure_protection = 0.8
|
||||
contents_thermal_insulation = 0.5
|
||||
foldedbag_path = /obj/item/bodybag/environmental
|
||||
/// The list of weathers we protect from.
|
||||
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.
|
||||
/// The contents of the gas to be distributed to an occupant. Set in Initialize()
|
||||
var/datum/gas_mixture/air_contents = null
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/trait in weather_protection)
|
||||
ADD_TRAIT(src, trait, ROUNDSTART_TRAIT)
|
||||
refresh_air()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/Destroy()
|
||||
if(air_contents)
|
||||
QDEL_NULL(air_contents)
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/return_air()
|
||||
refresh_air()
|
||||
return air_contents
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/remove_air(amount)
|
||||
refresh_air()
|
||||
return air_contents.remove(amount)
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/return_analyzable_air()
|
||||
refresh_air()
|
||||
return air_contents
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/togglelock(mob/living/user, silent)
|
||||
. = ..()
|
||||
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/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/nanotrasen
|
||||
name = "elite environmental protection bag"
|
||||
@@ -227,19 +262,12 @@
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/can_open(mob/living/user, force = FALSE)
|
||||
if(force)
|
||||
return TRUE
|
||||
if(sinched)
|
||||
to_chat(user, span_danger("The buckles on [src] are sinched down, preventing it from opening."))
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/open(mob/living/user, force = FALSE)
|
||||
if(!can_open(user, force))
|
||||
return
|
||||
if(sinched && !force)
|
||||
to_chat(user, span_danger("The buckles on [src] are sinched down, preventing it from opening."))
|
||||
return TRUE
|
||||
if(opened)
|
||||
return
|
||||
return FALSE
|
||||
sinched = FALSE
|
||||
playsound(loc, open_sound, open_sound_volume, TRUE, -3)
|
||||
opened = TRUE
|
||||
@@ -316,55 +344,7 @@
|
||||
user.log_message("[sinched ? "sinched":"unsinched"] secure environmental bag [src]", LOG_GAME)
|
||||
update_appearance()
|
||||
|
||||
/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
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/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'
|
||||
@@ -384,3 +364,27 @@
|
||||
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/hardlight
|
||||
name = "hardlight bodybag"
|
||||
desc = "A hardlight bag for storing bodies. Resistant to space."
|
||||
icon_state = "holobag_med"
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
foldedbag_path = null
|
||||
weather_protection = list(TRAIT_VOIDSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE)
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/hardlight/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||
if(damage_type in list(BRUTE, BURN))
|
||||
playsound(src, 'sound/weapons/egloves.ogg', 80, TRUE)
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/hardlight
|
||||
name = "hardlight prisoner bodybag"
|
||||
desc = "A hardlight bag for storing bodies. Resistant to space, can be sinched to prevent escape."
|
||||
icon_state = "holobag_sec"
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
foldedbag_path = null
|
||||
weather_protection = list(TRAIT_VOIDSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE)
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/hardlight/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||
if(damage_type in list(BRUTE, BURN))
|
||||
playsound(src, 'sound/weapons/egloves.ogg', 80, TRUE)
|
||||
|
||||
Reference in New Issue
Block a user