diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index a16b3d8b868..c1291bb68d3 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -436,6 +436,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// The person with this trait always appears as 'unknown'. #define TRAIT_UNKNOWN "unknown" +/// If the mob has this trait and die, their bomb implant doesn't detonate automatically. It must be consciously activated. +#define TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION "prevent_implant_auto_explosion" + // METABOLISMS // Various jobs on the station have historically had better reactions // to various drinks and foodstuffs. Security liking donuts is a classic diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 1eba23a4b3f..5db02b3c961 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -180,6 +180,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_CANNOT_BE_UNBUCKLED" = TRAIT_CANNOT_BE_UNBUCKLED, "TRAIT_GAMER" = TRAIT_GAMER, "TRAIT_UNKNOWN" = TRAIT_UNKNOWN, + "TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION" = TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION, ), /obj/item/bodypart = list( "TRAIT_PARALYSIS" = TRAIT_PARALYSIS, diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm index c854beeac6f..2145cd93f48 100644 --- a/code/game/objects/items/implants/implant_explosive.dm +++ b/code/game/objects/items/implants/implant_explosive.dm @@ -35,7 +35,7 @@ /obj/item/implant/explosive/activate(cause) . = ..() if(!cause || !imp_in || active) - return 0 + return FALSE if(cause == "action_button") if(popup) return FALSE @@ -43,7 +43,9 @@ var/response = tgui_alert(imp_in, "Are you sure you want to activate your [name]? This will cause you to explode!", "[name] Confirmation", list("Yes", "No")) popup = FALSE if(response != "Yes") - return 0 + return FALSE + if(cause == "death" && HAS_TRAIT(imp_in, TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION)) + return FALSE heavy = round(heavy) medium = round(medium) weak = round(weak) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 94824104ad2..59af8b37d71 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -651,10 +651,10 @@ new /obj/item/clothing/glasses/thermal/syndi(src) /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle - desc = "A large duffel bag containing a medical equipment, a Donksoft LMG, a big jumbo box of riot darts, and a knock-off pair of magboots." + desc = "A large duffel bag containing a medical equipment, a Donksoft LMG, a big jumbo box of riot darts, and a magboot MODsuit module." /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle/PopulateContents() - new /obj/item/clothing/shoes/magboots/syndie(src) + new /obj/item/mod/module/magboot(src) new /obj/item/storage/medkit/tactical(src) new /obj/item/gun/ballistic/automatic/l6_saw/toy(src) new /obj/item/ammo_box/foambox/riot(src) diff --git a/code/game/objects/items/storage/boxes/job_boxes.dm b/code/game/objects/items/storage/boxes/job_boxes.dm index d85eff68342..b02aa31a6d3 100644 --- a/code/game/objects/items/storage/boxes/job_boxes.dm +++ b/code/game/objects/items/storage/boxes/job_boxes.dm @@ -88,18 +88,37 @@ // Syndie survival box /obj/item/storage/box/survival/syndie name = "operation-ready survival box" - desc = "A box with the essentials of your operation. This one is labelled to contain an extended-capacity tank." + desc = "A box with the essentials of your operation. This one is labelled to contain an extended-capacity tank and a handy guide on survival." icon_state = "syndiebox" illustration = "extendedtank" mask_type = /obj/item/clothing/mask/gas/syndicate internal_type = /obj/item/tank/internals/emergency_oxygen/engi - medipen_type = null + medipen_type = /obj/item/reagent_containers/hypospray/medipen/atropine /obj/item/storage/box/survival/syndie/PopulateContents() ..() - new /obj/item/crowbar/red(src) - new /obj/item/screwdriver/red(src) - new /obj/item/weldingtool/mini(src) + new /obj/item/tool_parcel(src) + new /obj/item/paper/fluff/operative(src) + +/obj/item/tool_parcel + name = "operative toolkit care package" + desc = "A small parcel. It contains a few items every operative needs." + w_class = WEIGHT_CLASS_SMALL + icon = 'icons/obj/storage/storage.dmi' + icon_state = "deliverypackage2" + +/obj/item/tool_parcel/attack_self(mob/user) + . = ..() + new /obj/item/crowbar/red(get_turf(user)) + new /obj/item/screwdriver/red(get_turf(user)) + new /obj/item/weldingtool/mini(get_turf(user)) + new /obj/effect/decal/cleanable/wrapping(get_turf(user)) + if(prob(5)) + new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(get_turf(user)) + new /obj/item/lighter(get_turf(user)) + to_chat(user, span_notice("...oh, someone left some cigarettes in here.")) + playsound(loc, 'sound/items/poster_ripped.ogg', 20, TRUE) + qdel(src) /obj/item/storage/box/survival/centcom name = "emergency response survival box" diff --git a/code/game/objects/items/storage/boxes/medical_boxes.dm b/code/game/objects/items/storage/boxes/medical_boxes.dm index ca1116dff25..ad0fd9b37f5 100644 --- a/code/game/objects/items/storage/boxes/medical_boxes.dm +++ b/code/game/objects/items/storage/boxes/medical_boxes.dm @@ -111,3 +111,21 @@ /obj/item/stack/sheet/iron/ten = 1, ) generate_items_inside(items_inside, src) + +/obj/item/storage/box/evilmeds + name = "box of premium medicine" + desc = "Contains a large number of beakers filled with premium medical supplies. Straight from Interdyne Pharmaceutics!" + icon_state = "syndiebox" + illustration = "beaker" + +/obj/item/storage/box/evilmeds/PopulateContents() + var/static/list/items_inside = list( + /obj/item/reagent_containers/cup/beaker/meta/omnizine = 1, + /obj/item/reagent_containers/cup/beaker/meta/sal_acid = 1, + /obj/item/reagent_containers/cup/beaker/meta/oxandrolone = 1, + /obj/item/reagent_containers/cup/beaker/meta/pen_acid = 1, + /obj/item/reagent_containers/cup/beaker/meta/atropine = 1, + /obj/item/reagent_containers/cup/beaker/meta/salbutamol = 1, + /obj/item/reagent_containers/cup/beaker/meta/rezadone = 1, + ) + generate_items_inside(items_inside, src) diff --git a/code/game/objects/items/storage/medkit.dm b/code/game/objects/items/storage/medkit.dm index fbbc01d0d42..dd4f78e2696 100644 --- a/code/game/objects/items/storage/medkit.dm +++ b/code/game/objects/items/storage/medkit.dm @@ -269,19 +269,53 @@ /obj/item/storage/medkit/tactical/Initialize(mapload) . = ..() atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL + atom_storage.max_slots = 12 + atom_storage.max_total_storage = 24 /obj/item/storage/medkit/tactical/PopulateContents() if(empty) return - new /obj/item/stack/medical/gauze(src) - new /obj/item/stack/medical/splint(src) //SKYRAT EDIT ADDITION - MEDICAL - new /obj/item/defibrillator/compact/combat/loaded(src) - new /obj/item/reagent_containers/hypospray/combat(src) - new /obj/item/reagent_containers/pill/patch/libital(src) - new /obj/item/reagent_containers/pill/patch/libital(src) - new /obj/item/reagent_containers/pill/patch/aiuri(src) - new /obj/item/reagent_containers/pill/patch/aiuri(src) - new /obj/item/clothing/glasses/hud/health/night(src) + var/static/list/items_inside = list( + /obj/item/stack/medical/suture/medicated = 2, + /obj/item/stack/medical/mesh/advanced = 2, + /obj/item/reagent_containers/pill/patch/libital = 4, + /obj/item/reagent_containers/pill/patch/aiuri = 4, + /obj/item/stack/medical/gauze = 2, + /obj/item/stack/medical/splint = 2, //SKYRAT EDIT ADDITION - MEDICAL + /obj/item/reagent_containers/hypospray/medipen/atropine = 2, + /obj/item/reagent_containers/medigel/sterilizine = 1, + /obj/item/surgical_drapes = 1, + /obj/item/scalpel = 1, + /obj/item/hemostat = 1, + /obj/item/cautery = 1, + ) + generate_items_inside(items_inside,src) + +/obj/item/storage/medkit/tactical/premium + name = "premium combat medical kit" + desc = "May or may not contain traces of lead." + grind_results = list(/datum/reagent/lead = 10) + +/obj/item/storage/medkit/tactical/premium/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/stack/medical/suture/medicated = 2, + /obj/item/stack/medical/mesh/advanced = 2, + /obj/item/reagent_containers/pill/patch/libital = 3, + /obj/item/reagent_containers/pill/patch/aiuri = 3, + /obj/item/stack/medical/gauze = 2, + /obj/item/stack/medical/splint = 2, //SKYRAT EDIT ADDITION - MEDICAL + /obj/item/mod/module/thread_ripper = 1, + /obj/item/mod/module/surgical_processor/preloaded = 1, + /obj/item/mod/module/defibrillator/combat = 1, + /obj/item/autosurgeon/syndicate/emaggedsurgerytoolset = 1, + /obj/item/reagent_containers/hypospray/combat/empty = 1, + /obj/item/storage/box/evilmeds = 1, + /obj/item/reagent_containers/medigel/sterilizine = 1, + /obj/item/clothing/glasses/hud/health/night/science = 1, + ) + generate_items_inside(items_inside,src) //medibot assembly /obj/item/storage/medkit/attackby(obj/item/bodypart/bodypart, mob/user, params) diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 3a8c1b639f6..b1bec010151 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -64,7 +64,7 @@ /obj/item/clothing/glasses/hud/health/night name = "night vision health scanner HUD" - desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness." + desc = "An advanced medical heads-up display that allows doctors to find patients in complete darkness." icon_state = "healthhudnight" inhand_icon_state = "glasses" darkness_view = 8 @@ -72,6 +72,12 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE glass_colour_type = /datum/client_colour/glass_colour/green +/obj/item/clothing/glasses/hud/health/night/science + name = "night vision medical science scanner HUD" + desc = "An clandestine medical science heads-up display that allows operatives to find \ + dying captains and the perfect poison to finish them off in complete darkness." + clothing_traits = list(TRAIT_REAGENT_SCANNER) + /obj/item/clothing/glasses/hud/health/sunglasses name = "medical HUDSunglasses" desc = "Sunglasses with a medical HUD." diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm index 639b90f56ca..167dd0291bc 100644 --- a/code/modules/mod/modules/modules_medical.dm +++ b/code/modules/mod/modules/modules_medical.dm @@ -241,6 +241,8 @@ complexity = 2 use_power_cost = DEFAULT_CHARGE_DRAIN * 25 device = /obj/item/shockpaddles/mod + overlay_state_inactive = "module_defibrillator" + overlay_state_active = "module_defibrillator_active" incompatible_modules = list(/obj/item/mod/module/defibrillator) cooldown_time = 0.5 SECONDS var/defib_cooldown = 5 SECONDS @@ -255,8 +257,36 @@ return COMPONENT_DEFIB_STOP /obj/item/shockpaddles/mod - name = "MOD defibrillator paddles" + name = "MOD defibrillator gauntlets" req_defib = FALSE + icon_state = "defibgauntlets0" + inhand_icon_state = "defibgauntlets0" + base_icon_state = "defibgauntlets" + +/obj/item/mod/module/defibrillator/combat + name = "MOD combat defibrillator module" + desc = "A module built into the gauntlets of the suit; commonly known as the 'Healing Hands' by medical professionals. \ + The user places their palms above the patient. Onboard computers in the suit calculate the necessary voltage, \ + and a modded targeting computer determines the best position for the user to push. \ + Twenty five pounds of force are applied to the patient's skin. Shocks travel from the suit's gloves \ + and counter-shock the heart, and the wearer returns to Medical a hero. \ + Interdyne Pharmaceutics marketed the domestic version of the Healing Hands as foolproof and unusable as a weapon. \ + But when it came time to provide their operatives with usable medical equipment, they didn't hesitate to remove \ + those in-built safeties. Operatives in the field can benefit from what they dub as 'Stun Gloves', able to apply shocks \ + straight to a victims heart to disable them, or maybe even outright stop their heart with enough power." + complexity = 1 + module_type = MODULE_ACTIVE + overlay_state_inactive = "module_defibrillator_combat" + overlay_state_active = "module_defibrillator_combat_active" + device = /obj/item/shockpaddles/syndicate/mod + defib_cooldown = 2.5 SECONDS + +/obj/item/shockpaddles/syndicate/mod + name = "MOD combat defibrillator gauntlets" + req_defib = FALSE + icon_state = "syndiegauntlets0" + inhand_icon_state = "syndiegauntlets0" + base_icon_state = "syndiegauntlets" ///Thread Ripper - Temporarily rips apart clothing to make it not cover the body. /obj/item/mod/module/thread_ripper @@ -352,3 +382,23 @@ /obj/item/surgical_processor/mod name = "MOD surgical processor" + +/obj/item/mod/module/surgical_processor/preloaded + desc = "A module using an onboard surgical computer which can be connected to other computers to download and \ + perform advanced surgeries on the go. This one came pre-loaded with some advanced surgeries." + device = /obj/item/surgical_processor/mod/preloaded + +/obj/item/surgical_processor/mod/preloaded + loaded_surgeries = list( + /datum/surgery/advanced/pacify, + /datum/surgery/healing/combo/upgraded/femto, + /datum/surgery/advanced/brainwashing, + /datum/surgery/advanced/bioware/nerve_splicing, + /datum/surgery/advanced/bioware/nerve_grounding, + /datum/surgery/advanced/bioware/vein_threading, + /datum/surgery/advanced/bioware/muscled_veins, + /datum/surgery/advanced/bioware/ligament_hook, + /datum/surgery/advanced/bioware/ligament_reinforcement, + /datum/surgery/advanced/bioware/cortex_imprint, + /datum/surgery/advanced/bioware/cortex_folding, + ) diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm index a3d62867d7d..eebb3a3436d 100644 --- a/code/modules/paperwork/paper_premade.dm +++ b/code/modules/paperwork/paper_premade.dm @@ -135,3 +135,37 @@

Best of luck!
Josh."} + +/// instructions for nuclear operatives on how to use their medipen + +/obj/item/paper/fluff/operative + name = "ATTENTION: How to prevent your untimely demise." + color = "#b94030" + desc = "Seems important. That's why it's red." + default_raw_text = {" +Greetings operative. + +
As you may be aware, since your financial backers do not wish to provide our collective enemies access to any trace of you or your physical form, we've had to augment +you with an explosive located in the base of your neck: a microbomb implant. This implant activates a blood-based explosive the moment your heart stops beating, destroying all +evidence of your physical body and brain, eradicating you permanently so those freaks at Nanotrasen can't interrogate your brain. Or worse, clone you and mindwipe you. +We much prefer you free to die red than a slave to the corporation. I'm sure you agree. Right, comrade? +
+
Now, don't fret. While this is beneficial for our needs, we understand that operatives sometimes would prefer themselves to be able to have more +precise control over their own total oblivion. This is why our microbomb implants come equipped with a few useful features. +
+
Firstly, the bombs autodetonation is neutralized by atropine. So, if you have atropine in your system when your heart stops beating, your implant does not automatically detonate. +This is why you are equipped with an atropine autoinjector. If you see a fellow operative fall, immediately inject them with the autoinjector before they expire. If you're lucky, +you'll potentially be able to recover their body for revival. Atropine also just so happens to be an incredibly powerful stablizer, so maybe use it before you fall. You might just +be able to save yourself for a few seconds and keep fighting. +
+
Secondly, the bomb can be activated posthumously. There is a small onboard, low-level AI built into the microbomb. Based on a series of arbitrary factors, the bomb can still be activated +despite the presence of atropine by releasing a failsafe vial of monkey blood (notoriously volatile), the timing of which is determined by the onboard AI. +
The only factor is whether or not, and for give me for what I'm about to write, your 'animating spirit' still resides within your body to guide the AI and activate the bomb manually. +
Please, do not ask your fellow operatives what this means. +
+
They'll probably say something absurd like 'your ghost needs to still be in your body to use the microbomb'. That's stupid, do not listen to these ridiculous assertions. It is likely Nanotrasen propaganda. +
+
Ghosts are not real. Necromancy is bullshit. +
+
Anyway, best of luck on your mission, operative. + "} diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 9b211090a70..de8d3d1c56c 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -765,7 +765,7 @@ /datum/reagent/medicine/atropine name = "Atropine" - description = "If a patient is in critical condition, rapidly heals all damage types as well as regulating oxygen in the body. Excellent for stabilizing wounded patients." + description = "If a patient is in critical condition, rapidly heals all damage types as well as regulating oxygen in the body. Excellent for stabilizing wounded patients, and said to neutralize blood-activated internal explosives found amongst clandestine black op agents." reagent_state = LIQUID color = "#1D3535" //slightly more blue, like epinephrine metabolization_rate = 0.25 * REAGENTS_METABOLISM @@ -773,6 +773,14 @@ ph = 12 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED +/datum/reagent/medicine/atropine/on_mob_add(mob/living/owner) + . = ..() + ADD_TRAIT(owner, TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION, "[type]") + +/datum/reagent/medicine/atropine/on_mob_delete(mob/living/owner) + REMOVE_TRAIT(owner, TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION, "[type]") + return ..() + /datum/reagent/medicine/atropine/on_mob_life(mob/living/carbon/M, delta_time, times_fired) if(M.health <= M.crit_threshold) M.adjustToxLoss(-2 * REM * delta_time, 0) diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index efed397b887..342ef73b7f7 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -278,6 +278,27 @@ amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300) +/obj/item/reagent_containers/cup/beaker/meta/omnizine + list_reagents = list(/datum/reagent/medicine/omnizine = 180) + +/obj/item/reagent_containers/cup/beaker/meta/sal_acid + list_reagents = list(/datum/reagent/medicine/sal_acid = 180) + +/obj/item/reagent_containers/cup/beaker/meta/oxandrolone + list_reagents = list(/datum/reagent/medicine/oxandrolone = 180) + +/obj/item/reagent_containers/cup/beaker/meta/pen_acid + list_reagents = list(/datum/reagent/medicine/pen_acid = 180) + +/obj/item/reagent_containers/cup/beaker/meta/atropine + list_reagents = list(/datum/reagent/medicine/atropine = 180) + +/obj/item/reagent_containers/cup/beaker/meta/salbutamol + list_reagents = list(/datum/reagent/medicine/salbutamol = 180) + +/obj/item/reagent_containers/cup/beaker/meta/rezadone + list_reagents = list(/datum/reagent/medicine/rezadone = 180) + /obj/item/reagent_containers/cup/beaker/cryoxadone list_reagents = list(/datum/reagent/medicine/cryoxadone = 30) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 9298cb7f881..89249add81a 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -74,6 +74,9 @@ ignore_flags = 1 // So they can heal their comrades. list_reagents = list(/datum/reagent/medicine/epinephrine = 30, /datum/reagent/medicine/omnizine = 30, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/atropine = 15) +/obj/item/reagent_containers/hypospray/combat/empty + list_reagents = null + /obj/item/reagent_containers/hypospray/combat/nanites name = "experimental combat stimulant injector" desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with experimental medical nanites and a stimulant for rapid healing and a combat boost." diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 026b5b5ceb2..4c1a4e96e92 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -227,8 +227,14 @@ /obj/item/organ/internal/cyberimp/arm/toolset name = "integrated toolset implant" desc = "A stripped-down version of the engineering cyborg toolset, designed to be installed on subject's arm. Contain advanced versions of every tool." - items_to_create = list(/obj/item/screwdriver/cyborg, /obj/item/wrench/cyborg, /obj/item/weldingtool/largetank/cyborg, - /obj/item/crowbar/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/cyborg) + items_to_create = list( + /obj/item/screwdriver/cyborg, + /obj/item/wrench/cyborg, + /obj/item/weldingtool/largetank/cyborg, + /obj/item/crowbar/cyborg, + /obj/item/wirecutters/cyborg, + /obj/item/multitool/cyborg, + ) /obj/item/organ/internal/cyberimp/arm/toolset/l zone = BODY_ZONE_L_ARM @@ -285,7 +291,12 @@ /obj/item/organ/internal/cyberimp/arm/combat name = "combat cybernetics implant" desc = "A powerful cybernetic implant that contains combat modules built into the user's arm." - items_to_create = list(/obj/item/melee/energy/blade/hardlight, /obj/item/gun/medbeam, /obj/item/borg/stun, /obj/item/assembly/flash/armimplant) + items_to_create = list( + /obj/item/melee/energy/blade/hardlight, + /obj/item/gun/medbeam, + /obj/item/borg/stun, + /obj/item/assembly/flash/armimplant, + ) /obj/item/organ/internal/cyberimp/arm/combat/Initialize(mapload) . = ..() @@ -299,4 +310,26 @@ /obj/item/organ/internal/cyberimp/arm/surgery name = "surgical toolset implant" desc = "A set of surgical tools hidden behind a concealed panel on the user's arm." - items_to_create = list(/obj/item/retractor/augment, /obj/item/hemostat/augment, /obj/item/cautery/augment, /obj/item/surgicaldrill/augment, /obj/item/scalpel/augment, /obj/item/circular_saw/augment, /obj/item/surgical_drapes) + items_to_create = list( + /obj/item/retractor/augment, + /obj/item/hemostat/augment, + /obj/item/cautery/augment, + /obj/item/surgicaldrill/augment, + /obj/item/scalpel/augment, + /obj/item/circular_saw/augment, + /obj/item/surgical_drapes, + ) + +/obj/item/organ/internal/cyberimp/arm/surgery/emagged + name = "hacked surgical toolset implant" + desc = "A set of surgical tools hidden behind a concealed panel on the user's arm. This one seems to have been tampered with." + items_to_create = list( + /obj/item/retractor/augment, + /obj/item/hemostat/augment, + /obj/item/cautery/augment, + /obj/item/surgicaldrill/augment, + /obj/item/scalpel/augment, + /obj/item/circular_saw/augment, + /obj/item/surgical_drapes, + /obj/item/knife/combat/cyborg, + ) diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm index 6870a3fc53e..a171aec016a 100644 --- a/code/modules/surgery/organs/autosurgeon.dm +++ b/code/modules/surgery/organs/autosurgeon.dm @@ -160,7 +160,9 @@ modified this one to only insert... tongues. Horrifying." starting_organ = /obj/item/organ/internal/tongue - /obj/item/autosurgeon/syndicate/commsagent/Initialize(mapload) . = ..() organ_whitelist += /obj/item/organ/internal/tongue + +/obj/item/autosurgeon/syndicate/emaggedsurgerytoolset + starting_organ = /obj/item/organ/internal/cyberimp/arm/surgery/emagged diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm index 99318c4e5cc..8b9fcff8806 100644 --- a/code/modules/uplink/uplink_items/nukeops.dm +++ b/code/modules/uplink/uplink_items/nukeops.dm @@ -23,9 +23,9 @@ /datum/uplink_item/bundles_tc/medical name = "Medical bundle" desc = "The support specialist: Aid your fellow operatives with this medical bundle. Contains a tactical medkit, \ - a Donksoft LMG, a box of riot darts and a pair of magboots to rescue your friends in no-gravity environments." + a Donksoft LMG, a box of riot darts and a magboot MODsuit module to rescue your friends in no-gravity environments." item = /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle - cost = 15 // normally 20 + cost = 25 // normally 31 purchasable_from = UPLINK_NUKE_OPS /datum/uplink_item/bundles_tc/sniper @@ -659,13 +659,23 @@ /datum/uplink_item/device_tools/medkit name = "Syndicate Combat Medic Kit" - desc = "This first aid kit is a suspicious brown and red. Included is a combat stimulant injector \ - for rapid healing, a medical night vision HUD for quick identification of injured personnel, \ - and other supplies helpful for a field medic." + desc = "This first aid kit is a suspicious black and red. Included is a number of atropine medipens \ + for rapid stabilization and detonation prevention, sutures and regenerative mesh for wound treatment, and patches \ + for faster healing on the field. Also comes with basic medical tools and sterlizer." item = /obj/item/storage/medkit/tactical cost = 4 purchasable_from = UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS +/datum/uplink_item/device_tools/medkit/premium + name = "Syndicate Combat Medical Suite" + desc = "This first aid kit is a suspicious black and red. Included is an unloaded combat chemical injector \ + for suit-penetrative chem delivery, a medical science night vision HUD for quick identification of injured personnel and chemical supplies, \ + improved medical supplies, including Interdyne-approved pharmaceuticals, a hacked cybernetic surgery toolset arm implant, \ + and some helpful MODsuit modules for for field medical use and operative physiopharmaceutical augmentation." + item = /obj/item/storage/medkit/tactical/premium + cost = 15 + purchasable_from = UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS + /datum/uplink_item/device_tools/potion name = "Syndicate Sentience Potion" item = /obj/item/slimepotion/slime/sentience/nuclear diff --git a/icons/mob/clothing/modsuit/mod_modules.dmi b/icons/mob/clothing/modsuit/mod_modules.dmi index b195aea49a1..1001ae77d2d 100644 Binary files a/icons/mob/clothing/modsuit/mod_modules.dmi and b/icons/mob/clothing/modsuit/mod_modules.dmi differ diff --git a/icons/mob/inhands/equipment/medical_lefthand.dmi b/icons/mob/inhands/equipment/medical_lefthand.dmi index e7965575bd0..99a9adaa242 100644 Binary files a/icons/mob/inhands/equipment/medical_lefthand.dmi and b/icons/mob/inhands/equipment/medical_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/medical_righthand.dmi b/icons/mob/inhands/equipment/medical_righthand.dmi index 918e465493e..2c27f086b1e 100644 Binary files a/icons/mob/inhands/equipment/medical_righthand.dmi and b/icons/mob/inhands/equipment/medical_righthand.dmi differ diff --git a/icons/obj/medical/defib.dmi b/icons/obj/medical/defib.dmi index ed4f921c809..1e707f529ce 100644 Binary files a/icons/obj/medical/defib.dmi and b/icons/obj/medical/defib.dmi differ diff --git a/modular_skyrat/master_files/code/modules/uplink/uplink_items.dm b/modular_skyrat/master_files/code/modules/uplink/uplink_items.dm index 352df251884..c7e1d7a989c 100644 --- a/modular_skyrat/master_files/code/modules/uplink/uplink_items.dm +++ b/modular_skyrat/master_files/code/modules/uplink/uplink_items.dm @@ -170,9 +170,9 @@ /datum/uplink_item/device_tools/medkit_traitor name = "Syndicate Combat Medic Kit" - desc = "This first aid kit is a suspicious brown and red. Included is a combat stimulant injector \ - for rapid healing, a medical night vision HUD for quick identification of injured personnel, \ - and other supplies helpful for a field medic." + desc = "This first aid kit is a suspicious black and red. Included is a number of atropine medipens \ + for rapid stabilization, sutures and regenerative mesh for wound treatment, and patches \ + for faster healing on the field. Also comes with basic medical tools and sterlizer." item = /obj/item/storage/medkit/tactical cost = 4 progression_minimum = 15 MINUTES diff --git a/modular_skyrat/modules/opposing_force/code/equipment/utility.dm b/modular_skyrat/modules/opposing_force/code/equipment/utility.dm index fda22065ce7..ba1784ab4e8 100644 --- a/modular_skyrat/modules/opposing_force/code/equipment/utility.dm +++ b/modular_skyrat/modules/opposing_force/code/equipment/utility.dm @@ -135,9 +135,17 @@ /datum/opposing_force_equipment/gear/combatmedkit name = "Syndicate Combat Medic Kit" item_type = /obj/item/storage/medkit/tactical - description = "This first aid kit is a suspicious brown and red. Included is a combat stimulant injector \ - for rapid healing, a medical night vision HUD for quick identification of injured personnel, \ - and other supplies helpful for a field medic." + description = "This first aid kit is a suspicious black and red. Included is a number of atropine medipens \ + for rapid stabilization, sutures and regenerative mesh for wound treatment, and patches \ + for faster healing on the field. Also comes with basic medical tools and sterlizer." + +/datum/opposing_force_equipment/gear/combatmedkit_premium + name = "Syndicate Combat Medical Suite" + item_type = /obj/item/storage/medkit/tactical/premium + description = "This first aid kit is a suspicious black and red. Included is an unloaded combat chemical injector \ + for suit-penetrative chem delivery, a medical science night vision HUD for quick identification of injured personnel and chemical supplies, \ + improved medical supplies, including Interdyne-approved pharmaceuticals, a hacked cybernetic surgery toolset arm implant, \ + and some helpful MODsuit modules for for field medical use and operative physiopharmaceutical augmentation." /datum/opposing_force_equipment/gear/ai_module name = "Syndicate AI Law Module"