From d30f031ebaa5837fbbdaca5e9dfe43c82d5759e9 Mon Sep 17 00:00:00 2001
From: nikothedude <59709059+nikothedude@users.noreply.github.com>
Date: Thu, 21 Mar 2024 12:53:23 -0400
Subject: [PATCH] [MANUAL MIRROR] [MODULAR] Gives roboticists a medkit
containing synthetic treatment items, adds general synth medkits, rebalances
some synth medicine-centric cargo packs, and more (#1263)
## About The Pull Request
Manual mirror of https://github.com/Skyrat-SS13/Skyrat-tg/pull/26677
Honey, its the end of the month, time for your monthly synthetic wound
PR!
Title. See proof of testing for screenshots.
## How This Contributes To The Skyrat Roleplay Experience
When I added things like chilled hercuri or analyzers to the robo
vendor, they were added because I wanted robos to have them at
roundstart. I have since realized I can use the outfit to give them
these things. This PR does that.
There are currently _no_ normal synth medkits. This is an issue, since a
synth trauma kit, being a dufflebag, is not portable. This fills the
gap.
The synth burns kit was given 2 more bottles of each, to make it worth
it compared to the synthetic treatment kits.
## Proof of Testing
Screenshots/Videos

## Changelog
:cl:
add: Roboticists now spawn with synthetic medkits to make their jobs a
bit easier
add: New cargo packs for synthetic medkits
balance: Roboticists now spawn with diag huds, welding helmets, and
black gloves
balance: Synthetic burn kits now have extra bottles
/:cl:
Co-authored-by: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
---
.../code/modules/jobs/job_types/roboticist.dm | 11 +++
.../modules/medical/code/cargo/packs.dm | 22 ++++-
.../modules/medical/code/medical_lefthand.dmi | Bin 0 -> 382 bytes
.../medical/code/medical_righthand.dmi | Bin 0 -> 369 bytes
modular_skyrat/modules/medical/code/medkit.dm | 78 ++++++++++++++++++
.../modules/medical/code/medkit.dmi | Bin 0 -> 520 bytes
6 files changed, 109 insertions(+), 2 deletions(-)
create mode 100644 modular_skyrat/modules/medical/code/medical_lefthand.dmi
create mode 100644 modular_skyrat/modules/medical/code/medical_righthand.dmi
create mode 100644 modular_skyrat/modules/medical/code/medkit.dmi
diff --git a/modular_skyrat/master_files/code/modules/jobs/job_types/roboticist.dm b/modular_skyrat/master_files/code/modules/jobs/job_types/roboticist.dm
index 1c1212b0154..a2b0767ce97 100644
--- a/modular_skyrat/master_files/code/modules/jobs/job_types/roboticist.dm
+++ b/modular_skyrat/master_files/code/modules/jobs/job_types/roboticist.dm
@@ -4,10 +4,21 @@
duffelbag = /obj/item/storage/backpack/duffelbag/science/robo
messenger = /obj/item/storage/backpack/messenger/science/robo
+ glasses = /obj/item/clothing/glasses/hud/diagnostic
+ gloves = /obj/item/clothing/gloves/color/black
+
+ l_hand = /obj/item/storage/medkit/mechanical/roboticist
+
/datum/job/roboticist
description = "Build cyborgs, mechs, AIs, and maintain them all. Create MODsuits for those that wish. Try to remind medical that you're \
actually a lot better at treating synthetic crew members than them."
+/datum/outfit/job/roboticist/New()
+ . = ..()
+
+ LAZYINITLIST(backpack_contents)
+ backpack_contents[/obj/item/clothing/head/utility/welding] = 1
+
/datum/job/roboticist/New()
. = ..()
diff --git a/modular_skyrat/modules/medical/code/cargo/packs.dm b/modular_skyrat/modules/medical/code/cargo/packs.dm
index a7a84c600f4..58259bc4568 100644
--- a/modular_skyrat/modules/medical/code/cargo/packs.dm
+++ b/modular_skyrat/modules/medical/code/cargo/packs.dm
@@ -1,8 +1,8 @@
/datum/supply_pack/science/synthetic_burns
name = "Synthetic Burns Kit"
- desc = "Contains a bottle of pre-chilled hercuri and a bottle of dinitrogen plasmide, perfect for treating synthetic burns!"
+ desc = "Contains bottles of pre-chilled hercuri and dinitrogen plasmide, perfect for treating synthetic burns!"
cost = CARGO_CRATE_VALUE * 2.5
- contains = list(/obj/item/reagent_containers/spray/hercuri/chilled = 1, /obj/item/reagent_containers/spray/dinitrogen_plasmide = 1)
+ contains = list(/obj/item/reagent_containers/spray/hercuri/chilled = 3, /obj/item/reagent_containers/spray/dinitrogen_plasmide = 3)
crate_name = "chilled hercuri crate"
access_view = FALSE
@@ -34,3 +34,21 @@
access_view = FALSE
access = FALSE
access_any = FALSE
+
+/datum/supply_pack/science/synth_medkits
+ name = "Mechanical Repair Kits"
+ desc = "Contains a few low-grade portable synthetic medkits, useful for distributing to the crew."
+ cost = CARGO_CRATE_VALUE * 4.5 // same as treatment kits
+ contains = list(/obj/item/storage/medkit/mechanical/regular = 4)
+
+ crate_name = "synthetic repair kits crate"
+
+ access_view = FALSE
+ access = FALSE
+ access_any = FALSE
+
+/datum/supply_pack/goody/mechanical_repair_kit_single
+ name = "Mechanical Repair Kit Single-Pack"
+ desc = "A single mechanical repair kit, fit for fixing most robotic injuries."
+ cost = PAYCHECK_CREW * 3
+ contains = list(/obj/item/storage/medkit/mechanical/regular)
diff --git a/modular_skyrat/modules/medical/code/medical_lefthand.dmi b/modular_skyrat/modules/medical/code/medical_lefthand.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..5c5e34a5e68d6e5562636444924ec8a187a7dcf1
GIT binary patch
literal 382
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|exd5LK*8>L*IJrk8q?P9xwDx3N
zeE8}^jqApPXRjVRd)b~LN%pXqHc%yFNswPKgTu2MX+Ta{RY*jMOKNd)QD#9&W_}(6
zL&conu!5q}?_YuoK7M_o<*loA?#%h%4WR}XjUPPHIq#!+lA)-lcZY>>knv?>FNHae
zCLNg+q7bZUZmMd%S;fxW)Kb|{-`LX7y|dd`b@K{|6bAA1sKBH=t&ZFiOV>Pj^_*!N
z6T_8cxevZ)6uN;f=<#%M4DskpPLN<-oN$4OQNbm30aGfgTPmx8v*0NQW-UcMMJ^2<
z6NRvAVQLMB9Kr)GGKMlFPsnkKl=5+u3S*r!%h)tfa&dx457VIr!KsHk^v>&~v^+47
zdXE)GY44$rjF6*2UngBIEh|2%~
literal 0
HcmV?d00001
diff --git a/modular_skyrat/modules/medical/code/medical_righthand.dmi b/modular_skyrat/modules/medical/code/medical_righthand.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..569d3665f5c11bb1f5862286a6aecc2dd8ff0587
GIT binary patch
literal 369
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|exd5LK*8>L*IJrk8q?P9xwDx3N
zeE8}^jqApPXRjVRd)b~LN%pXqHc%yFNswPKgTu2MX+Ta{RY*jMOKNd)QD#9&W_}(6
zL&conu!5q}?_YuoK7M_o<*loA?#%h%4WR}XjUPPHIq#!+lA)-lcZY>>knv?>FNHae
zCLNg+q7bZUZmMd%S;fxW)Kb|{-`LX7y|dd`b@K{|6bAA1sKBH=t&ZFiOV>Pj^_*!N
z6T_8cxevZ)6uN;fsP}Yn4DskpPLN<-obZ8>QQ?UCnl&dDtZC3(zvcvoXc%W9=fOn`
ziaKG}!rG4VwQPuRWe;O5NIaxAWocqKgYdH}b5?e0_Ip=|^fU!BuxGfkxVbq`VGUTv
zIE!hEl9TEYMqkD#Huj>6q6@?X9rRABfhnNeCWaHK5mdK
II;Vst0Gwimb^rhX
literal 0
HcmV?d00001
diff --git a/modular_skyrat/modules/medical/code/medkit.dm b/modular_skyrat/modules/medical/code/medkit.dm
index a641932619d..fe496ea8f76 100644
--- a/modular_skyrat/modules/medical/code/medkit.dm
+++ b/modular_skyrat/modules/medical/code/medkit.dm
@@ -178,3 +178,81 @@
/obj/item/storage/backpack/duffelbag/synth_treatment_kit/trauma/advanced/unzipped
zipped_up = FALSE
+
+// basetype, do not use
+/obj/item/storage/medkit/mechanical
+ name = "mechanical medkit"
+ desc = "For those mechanical booboos."
+
+ icon = 'modular_skyrat/modules/medical/code/medkit.dmi'
+ icon_state = "medkit_mechanical"
+ inhand_icon_state = "medkit_mechanical"
+ lefthand_file = 'modular_skyrat/modules/medical/code/medical_lefthand.dmi'
+ righthand_file = 'modular_skyrat/modules/medical/code/medical_righthand.dmi'
+
+/obj/item/storage/medkit/mechanical/Initialize(mapload)
+ . = ..()
+
+ var/static/list/list_of_everything_mechanical_medkits_can_hold = list_of_everything_medkits_can_hold + list(
+ /obj/item/stack/cable_coil,
+ /obj/item/crowbar,
+ /obj/item/screwdriver,
+ /obj/item/wrench,
+ /obj/item/weldingtool,
+ /obj/item/wirecutters,
+ /obj/item/multitool,
+ /obj/item/plunger,
+ /obj/item/clothing/head/utility/welding,
+ /obj/item/clothing/glasses/welding,
+ )
+ var/static/list/exception_cache = typecacheof(
+ /obj/item/clothing/head/utility/welding
+ )
+
+ atom_storage.set_holdable(list_of_everything_mechanical_medkits_can_hold)
+ LAZYINITLIST(atom_storage.exception_hold)
+ atom_storage.exception_hold = atom_storage.exception_hold + exception_cache
+
+/obj/item/storage/medkit/mechanical/regular
+ name = "mechanical repair kit"
+ desc = "Used to treat injuries sustained by mechanical limbs/lifeforms."
+
+/obj/item/storage/medkit/mechanical/regular/PopulateContents()
+ if(empty)
+ return
+ var/static/items_inside = list(
+ /obj/item/stack/medical/gauze = 1,
+ /obj/item/stack/cable_coil = 2,
+ /obj/item/weldingtool/mini = 1,
+ /obj/item/clothing/head/utility/welding = 1,
+ /obj/item/reagent_containers/hypospray/medipen = 1, // treats electrical damage
+ /obj/item/healthanalyzer/simple = 1,
+ )
+ generate_items_inside(items_inside,src)
+
+/obj/item/storage/medkit/mechanical/roboticist
+ name = "intensive repair kit"
+ desc = "A high capacity repair kit for roboticists, used to treat injuries sustained by mechanical lifeforms."
+ icon_state = "medkit_robo"
+
+/obj/item/storage/medkit/mechanical/roboticist/Initialize(mapload)
+ . = ..()
+ atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL //holds the same equipment as a medibelt
+ atom_storage.max_slots = 12
+ atom_storage.max_total_storage = 24
+
+/obj/item/storage/medkit/mechanical/roboticist/PopulateContents()
+ if(empty)
+ return
+ var/static/items_inside = list(
+ /obj/item/stack/medical/gauze = 2,
+ /obj/item/stack/cable_coil = 4,
+ /obj/item/storage/pill_bottle/nanite_slurry = 1,
+ /obj/item/storage/pill_bottle/system_cleaner = 1,
+ /obj/item/reagent_containers/spray/hercuri/chilled = 1,
+ /obj/item/reagent_containers/spray/dinitrogen_plasmide = 1,
+ /obj/item/reagent_containers/hypospray/medipen = 1, // treats electrical damage
+ /obj/item/healthanalyzer/simple = 1,
+ /obj/item/healthanalyzer/no_medibot = 1, // no welding tool since we assume you already have one
+ )
+ generate_items_inside(items_inside,src)
diff --git a/modular_skyrat/modules/medical/code/medkit.dmi b/modular_skyrat/modules/medical/code/medkit.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..451d8587d14693f06a8c218faf6e5bbb3418d9b4
GIT binary patch
literal 520
zcmV+j0{8uiP)zjhU}oB$g#6
zGCbNE5Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1
zHmlPM|gY+Bf7@6o8Vwh2spOlYFx3Yq(
zp9|Q50LpAI+dA!C-v9sr=1D|BR7i>KlF<&rAPhxmyE0&mq5uD}0^3wrolbqzn?Tc?
zazY47{qxWF0!Tz%N3<3Mi7(l5*4S5q9yJU6DrmSe8m+a?S-Te0M&Qm3gA@3j!0ijl
z`8|Ov>!Dyi|NaezIlF>qZ%{5F2>jRxMsEaud&HXO0jvbL5n%O*4Oi^P6kqnGcoz7Q
z4Oc;L1Ud-(PEc_bfSRvN5Cnev$~8{|6VU{E&fJ6pT!lEDPE%Y{ns9*Ufh0B2B%1cz
zw1Qo(&Y468zV6YS5AZaR!_aZy4!CrO_!5R3me5N)P2_yQe>4}~h8bo5z`hs&0000<
KMNUMnLSTZV_~6d~
literal 0
HcmV?d00001