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:
Fikou
2022-08-31 16:59:39 -07:00
committed by GitHub
parent d5ffb6ae68
commit e82f728b09
22 changed files with 430 additions and 190 deletions
+5 -8
View File
@@ -70,14 +70,11 @@
if(requires_tech)
. = FALSE
if(iscyborg(user))
var/mob/living/silicon/robot/robo_surgeon = user
var/obj/item/surgical_processor/surgical_processor = locate() in robo_surgeon.model.modules
if(surgical_processor) //no early return for !surgical_processor since we want to check optable should this not exist.
if(replaced_by in surgical_processor.advanced_surgeries)
return FALSE
if(type in surgical_processor.advanced_surgeries)
return TRUE
var/surgery_signal = SEND_SIGNAL(user, COMSIG_SURGERY_STARTING, src, patient)
if(surgery_signal & COMPONENT_FORCE_SURGERY)
return TRUE
if(surgery_signal & COMPONENT_CANCEL_SURGERY)
return FALSE
var/turf/patient_turf = get_turf(patient)
+35 -17
View File
@@ -245,30 +245,48 @@
/obj/item/surgical_processor //allows medical cyborgs to scan and initiate advanced surgeries
name = "\improper Surgical Processor"
name = "surgical processor"
desc = "A device for scanning and initiating surgeries from a disk or operating computer."
icon = 'icons/obj/device.dmi'
icon_state = "spectrometer"
item_flags = NOBLUDGEON
var/list/advanced_surgeries = list()
var/list/loaded_surgeries = list()
/obj/item/surgical_processor/afterattack(obj/item/design_holder, mob/user, proximity)
/obj/item/surgical_processor/equipped(mob/user, slot, initial)
. = ..()
if(!proximity)
if(slot != ITEM_SLOT_HANDS)
UnregisterSignal(user, COMSIG_SURGERY_STARTING)
return
if(istype(design_holder, /obj/item/disk/surgery))
to_chat(user, span_notice("You load the surgery protocol from [design_holder] into [src]."))
var/obj/item/disk/surgery/surgery_disk = design_holder
if(do_after(user, 10, target = design_holder))
advanced_surgeries |= surgery_disk.surgeries
return TRUE
if(istype(design_holder, /obj/machinery/computer/operating))
to_chat(user, span_notice("You copy surgery protocols from [design_holder] into [src]."))
var/obj/machinery/computer/operating/OC = design_holder
if(do_after(user, 10, target = design_holder))
advanced_surgeries |= OC.advanced_surgeries
return TRUE
return
RegisterSignal(user, COMSIG_SURGERY_STARTING, .proc/check_surgery)
/obj/item/surgical_processor/dropped(mob/user, silent)
. = ..()
UnregisterSignal(user, COMSIG_SURGERY_STARTING)
/obj/item/surgical_processor/afterattack(atom/design_holder, mob/user, proximity)
if(!proximity)
return ..()
if(!istype(design_holder, /obj/item/disk/surgery) && !istype(design_holder, /obj/machinery/computer/operating))
return ..()
balloon_alert(user, "copying designs...")
playsound(src, 'sound/machines/terminal_processing.ogg', 25, TRUE)
if(do_after(user, 1 SECONDS, target = design_holder))
if(istype(design_holder, /obj/item/disk/surgery))
var/obj/item/disk/surgery/surgery_disk = design_holder
loaded_surgeries |= surgery_disk.surgeries
else
var/obj/machinery/computer/operating/surgery_computer = design_holder
loaded_surgeries |= surgery_computer.advanced_surgeries
playsound(src, 'sound/machines/terminal_success.ogg', 25, TRUE)
return TRUE
/obj/item/surgical_processor/proc/check_surgery(mob/user, datum/surgery/surgery, mob/patient)
SIGNAL_HANDLER
if(surgery.replaced_by in loaded_surgeries)
return COMPONENT_CANCEL_SURGERY
if(surgery.type in loaded_surgeries)
return COMPONENT_FORCE_SURGERY
/obj/item/scalpel/advanced
name = "laser scalpel"