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 ![image](https://github.com/Skyrat-SS13/Skyrat-tg/assets/59709059/3bfdf559-5824-410e-b77c-d355544c0abf)
## 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