From 170a38a3a72c1034bf64781177809612de2bd239 Mon Sep 17 00:00:00 2001
From: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Date: Wed, 17 Jun 2020 02:22:56 +0300
Subject: [PATCH] Porting sutures and meshes from /TG/ (#12532)
* Porting sutures and meshes from /TG/
* Recipes fix
---
.../lavaland_surface_biodome_winter.dmm | 4 +-
_maps/RandomRuins/SpaceRuins/TheDerelict.dmm | 8 +-
_maps/RandomRuins/SpaceRuins/oldstation.dmm | 2 +-
_maps/RandomZLevels/away_mission/wildwest.dmm | 2 +-
_maps/map_files/CogStation/CogStation.dmm | 4 +-
.../map_files/Deltastation/DeltaStation2.dmm | 20 +--
_maps/map_files/KiloStation/KiloStation.dmm | 10 +-
_maps/map_files/LambdaStation/lambda.dmm | 16 +--
_maps/map_files/MetaStation/MetaStation.dmm | 22 ++--
_maps/map_files/PubbyStation/PubbyStation.dmm | 6 +-
_maps/map_files/generic/CentCom.dmm | 8 +-
_maps/shuttles/emergency_meta.dmm | 4 +-
_maps/shuttles/emergency_russiafightpit.dmm | 4 +-
_maps/shuttles/infiltrator_basic.dmm | 4 +-
code/_globalvars/lists/maintenance_loot.dm | 2 +-
.../crafting/recipes/recipes_misc.dm | 10 +-
.../game/objects/effects/spawners/lootdrop.dm | 2 +-
code/game/objects/items/stacks/medical.dm | 122 +++++++++++++++++-
code/game/objects/items/storage/boxes.dm | 4 +-
code/game/objects/items/storage/firstaid.dm | 20 +--
.../objects/structures/ghost_role_spawners.dm | 2 +-
code/modules/holiday/halloween/bartholomew.dm | 2 +-
.../chemistry/reagents/medicine_reagents.dm | 4 +-
23 files changed, 201 insertions(+), 81 deletions(-)
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
index f48801c199..b71b6838b0 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
@@ -3,9 +3,9 @@
/turf/template_noop,
/area/template_noop)
"ac" = (
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/mesh,
/obj/structure/table,
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/suture,
/turf/open/floor/plating,
/area/ruin/powered/snow_biodome)
"ad" = (
diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm
index 1464dd9529..ac1d1ca4d8 100644
--- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm
+++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm
@@ -2368,7 +2368,7 @@
/turf/open/floor/plasteel/airless/white,
/area/ruin/space/derelict/medical)
"hW" = (
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/suture,
/turf/open/floor/plasteel/airless/white,
/area/ruin/space/derelict/medical)
"hX" = (
@@ -2610,13 +2610,13 @@
/turf/open/floor/plasteel/airless/white,
/area/ruin/space/derelict/medical)
"iM" = (
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/suture,
/turf/open/floor/plasteel/airless{
icon_state = "damaged2"
},
/area/ruin/space/derelict/medical)
"iN" = (
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/mesh,
/turf/open/floor/plasteel/airless{
icon_state = "damaged3"
},
@@ -2866,7 +2866,7 @@
/turf/open/floor/plasteel/airless/white,
/area/ruin/space/derelict/medical)
"jB" = (
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/mesh,
/turf/open/floor/plasteel/airless/white,
/area/ruin/space/derelict/medical)
"jC" = (
diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index 89e2c553b9..343c79a895 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -843,7 +843,7 @@
/area/ruin/space/has_grav/ancientstation/deltacorridor)
"cx" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/suture,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation/deltacorridor)
diff --git a/_maps/RandomZLevels/away_mission/wildwest.dmm b/_maps/RandomZLevels/away_mission/wildwest.dmm
index 064be0907a..76c59a8e1d 100644
--- a/_maps/RandomZLevels/away_mission/wildwest.dmm
+++ b/_maps/RandomZLevels/away_mission/wildwest.dmm
@@ -1610,7 +1610,7 @@
/turf/open/floor/plasteel/cafeteria,
/area/awaymission/wildwest/mines)
"fi" = (
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/suture,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm
index 5025a99ec4..ce96e027ef 100644
--- a/_maps/map_files/CogStation/CogStation.dmm
+++ b/_maps/map_files/CogStation/CogStation.dmm
@@ -15264,8 +15264,8 @@
},
/obj/item/stack/medical/gauze,
/obj/item/reagent_containers/blood,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/obj/structure/extinguisher_cabinet{
pixel_x = -26
},
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index 5a630f05ef..8a4b5f8130 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -77360,8 +77360,8 @@
"cBx" = (
/obj/structure/rack,
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/obj/item/reagent_containers/syringe/epinephrine{
pixel_x = -3;
pixel_y = 3
@@ -85495,8 +85495,8 @@
"cPs" = (
/obj/structure/table,
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
@@ -91727,8 +91727,8 @@
"cZH" = (
/obj/structure/table/glass,
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/obj/machinery/camera{
c_tag = "Medbay - Sleepers";
name = "medbay camera";
@@ -94026,8 +94026,8 @@
"ddp" = (
/obj/structure/table/glass,
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/obj/structure/sign/warning/nosmoking{
pixel_y = 32
},
@@ -101144,8 +101144,8 @@
"dqj" = (
/obj/structure/table,
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm
index 1c3741c18e..b205e7c324 100644
--- a/_maps/map_files/KiloStation/KiloStation.dmm
+++ b/_maps/map_files/KiloStation/KiloStation.dmm
@@ -25243,7 +25243,7 @@
pixel_y = 4
},
/obj/item/lighter,
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/suture,
/turf/open/floor/plasteel/dark,
/area/maintenance/port)
"aPO" = (
@@ -27105,8 +27105,8 @@
"aSy" = (
/obj/structure/table,
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/ointment,
-/obj/item/stack/medical/bruise_pack{
+/obj/item/stack/medical/mesh,
+/obj/item/stack/medical/suture{
pixel_x = 4
},
/obj/item/storage/firstaid/regular,
@@ -55554,10 +55554,10 @@
/obj/structure/table,
/obj/item/storage/firstaid/regular,
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/ointment{
+/obj/item/stack/medical/mesh{
pixel_y = 4
},
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/suture,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
diff --git a/_maps/map_files/LambdaStation/lambda.dmm b/_maps/map_files/LambdaStation/lambda.dmm
index 901824a5de..825bc3c2aa 100644
--- a/_maps/map_files/LambdaStation/lambda.dmm
+++ b/_maps/map_files/LambdaStation/lambda.dmm
@@ -16073,11 +16073,11 @@
pixel_y = -1
},
/obj/item/reagent_containers/dropper,
-/obj/item/stack/medical/bruise_pack{
+/obj/item/stack/medical/suture{
pixel_x = -2;
pixel_y = 6
},
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/mesh,
/obj/item/healthanalyzer,
/turf/open/floor/plasteel/white,
/area/science/explab)
@@ -34517,8 +34517,8 @@
/area/gateway)
"bmm" = (
/obj/structure/rack,
-/obj/item/stack/medical/ointment,
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/mesh,
+/obj/item/stack/medical/suture,
/obj/item/reagent_containers/syringe/charcoal,
/obj/item/reagent_containers/syringe/epinephrine{
pixel_x = -1;
@@ -64186,8 +64186,8 @@
pixel_y = -32
},
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/obj/structure/table/glass,
/turf/open/floor/plating,
/area/medical/abandoned)
@@ -75822,11 +75822,11 @@
/obj/item/folder,
/obj/item/folder,
/obj/structure/table/reinforced,
-/obj/item/stack/medical/ointment{
+/obj/item/stack/medical/mesh{
pixel_x = 3;
pixel_y = -2
},
-/obj/item/stack/medical/bruise_pack{
+/obj/item/stack/medical/suture{
pixel_x = -3;
pixel_y = 2
},
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index e8af6a21b5..c08670c2c0 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -4919,11 +4919,11 @@
/area/maintenance/solars/port/fore)
"ajj" = (
/obj/structure/table,
-/obj/item/stack/medical/ointment{
+/obj/item/stack/medical/mesh{
pixel_x = 3;
pixel_y = -2
},
-/obj/item/stack/medical/bruise_pack{
+/obj/item/stack/medical/suture{
pixel_x = -3;
pixel_y = 2
},
@@ -46804,8 +46804,8 @@
/area/bridge/showroom/corporate)
"bOG" = (
/obj/structure/rack,
-/obj/item/stack/medical/ointment,
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/mesh,
+/obj/item/stack/medical/suture,
/obj/item/reagent_containers/syringe/charcoal,
/obj/item/reagent_containers/syringe/epinephrine{
pixel_x = -1;
@@ -52251,8 +52251,8 @@
"cap" = (
/obj/structure/table,
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/ointment,
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/mesh,
+/obj/item/stack/medical/suture,
/obj/effect/turf_decal/tile/blue{
dir = 1
},
@@ -58829,11 +58829,11 @@
pixel_y = -1
},
/obj/item/reagent_containers/dropper,
-/obj/item/stack/medical/bruise_pack{
+/obj/item/stack/medical/suture{
pixel_x = -2;
pixel_y = 6
},
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/mesh,
/obj/item/healthanalyzer,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
@@ -60419,9 +60419,9 @@
/obj/effect/decal/cleanable/blood/gibs/limb,
/obj/structure/rack,
/obj/item/storage/firstaid/regular,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/obj/item/clothing/glasses/hud/health,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index fabb2b7217..18d1b115a4 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -34525,8 +34525,8 @@
/area/maintenance/department/engine)
"bBY" = (
/obj/structure/closet/crate/medical,
-/obj/item/stack/medical/ointment,
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/mesh,
+/obj/item/stack/medical/suture,
/turf/open/floor/plating,
/area/maintenance/department/engine)
"bBZ" = (
@@ -40238,7 +40238,7 @@
},
/area/maintenance/department/chapel/monastery)
"bNF" = (
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/suture,
/turf/open/floor/plasteel/dark,
/area/maintenance/department/engine)
"bNG" = (
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index 66072817f4..f82ba2d735 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -49,7 +49,7 @@
/area/holodeck/rec_center/bunker)
"ak" = (
/obj/structure/table,
-/obj/item/stack/medical/ointment{
+/obj/item/stack/medical/mesh{
heal_burn = 10
},
/turf/open/floor/holofloor/asteroid,
@@ -355,7 +355,7 @@
/area/holodeck/rec_center/lounge)
"bc" = (
/obj/structure/table,
-/obj/item/stack/medical/bruise_pack{
+/obj/item/stack/medical/suture{
heal_brute = 10
},
/turf/open/floor/holofloor/asteroid,
@@ -10568,8 +10568,8 @@
/area/wizard_station)
"yD" = (
/obj/structure/table/wood,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/turf/open/floor/engine/cult,
/area/wizard_station)
"yE" = (
diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency_meta.dmm
index 8df487714e..cae3139c41 100644
--- a/_maps/shuttles/emergency_meta.dmm
+++ b/_maps/shuttles/emergency_meta.dmm
@@ -333,8 +333,8 @@
"aT" = (
/obj/structure/table,
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/obj/machinery/light{
dir = 4
},
diff --git a/_maps/shuttles/emergency_russiafightpit.dmm b/_maps/shuttles/emergency_russiafightpit.dmm
index 65fc7e30a2..206ebc4687 100644
--- a/_maps/shuttles/emergency_russiafightpit.dmm
+++ b/_maps/shuttles/emergency_russiafightpit.dmm
@@ -365,11 +365,11 @@
/area/shuttle/escape)
"bi" = (
/obj/structure/table,
-/obj/item/stack/medical/bruise_pack{
+/obj/item/stack/medical/suture{
pixel_x = 5;
pixel_y = 5
},
-/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/suture,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/escape)
"bj" = (
diff --git a/_maps/shuttles/infiltrator_basic.dmm b/_maps/shuttles/infiltrator_basic.dmm
index f5861fab32..42fe684e05 100644
--- a/_maps/shuttles/infiltrator_basic.dmm
+++ b/_maps/shuttles/infiltrator_basic.dmm
@@ -608,8 +608,8 @@
"bu" = (
/obj/structure/table/reinforced,
/obj/item/stack/medical/gauze,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/ointment,
+/obj/item/stack/medical/suture,
+/obj/item/stack/medical/mesh,
/obj/effect/turf_decal/bot_white,
/turf/open/floor/plasteel/dark,
/area/shuttle/syndicate/medical)
diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm
index 396eb87723..69d4794e87 100644
--- a/code/_globalvars/lists/maintenance_loot.dm
+++ b/code/_globalvars/lists/maintenance_loot.dm
@@ -51,7 +51,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
/obj/item/airlock_painter = 1,
/obj/item/stack/cable_coil/random = 4,
/obj/item/stack/cable_coil/random/five = 6,
- /obj/item/stack/medical/bruise_pack = 1,
+ /obj/item/stack/medical/suture = 1,
/obj/item/stack/rods/ten = 9,
/obj/item/stack/rods/twentyfive = 1,
/obj/item/stack/rods/fifty = 1,
diff --git a/code/datums/components/crafting/recipes/recipes_misc.dm b/code/datums/components/crafting/recipes/recipes_misc.dm
index 1ad53aae67..b076407efc 100644
--- a/code/datums/components/crafting/recipes/recipes_misc.dm
+++ b/code/datums/components/crafting/recipes/recipes_misc.dm
@@ -124,9 +124,9 @@
category = CAT_MISC
subcategory = CAT_TOOL
-/datum/crafting_recipe/bruise_pack
- name = "Bruise Pack"
- result = /obj/item/stack/medical/bruise_pack/one
+/datum/crafting_recipe/brute_pack
+ name = "Suture Pack"
+ result = /obj/item/stack/medical/suture/one
time = 1
reqs = list(/obj/item/stack/medical/gauze = 1,
/datum/reagent/medicine/styptic_powder = 10)
@@ -134,8 +134,8 @@
subcategory = CAT_TOOL
/datum/crafting_recipe/burn_pack
- name = "Burn Ointment"
- result = /obj/item/stack/medical/ointment/one
+ name = "Regenerative Mesh"
+ result = /obj/item/stack/medical/mesh/one
time = 1
reqs = list(/obj/item/stack/medical/gauze = 1,
/datum/reagent/medicine/silver_sulfadiazine = 10)
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index 5b2006b6f3..57b25a8901 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -491,7 +491,7 @@
/obj/item/kitchen/knife = 5,
/obj/item/screwdriver = 5,
/obj/item/crowbar/red = 1, //Dont you need a crowbar to open this?
- /obj/item/stack/medical/bruise_pack = 3,
+ /obj/item/stack/medical/suture = 3,
/obj/item/reagent_containers/food/drinks/bottle/vodka = 2,
/obj/item/radio = 5,
/obj/item/flashlight = 4,
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 98bf02906b..e6403e83cc 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -13,18 +13,33 @@
novariants = FALSE
item_flags = NOBLUDGEON
var/self_delay = 50
+ var/other_delay = 0
+ var/repeating = FALSE
/obj/item/stack/medical/attack(mob/living/M, mob/user)
. = ..()
+ try_heal(M, user)
+
+
+/obj/item/stack/medical/proc/try_heal(mob/living/M, mob/user, silent = FALSE)
if(!M.can_inject(user, TRUE))
return
if(M == user)
- user.visible_message("[user] starts to apply \the [src] on [user.p_them()]self...", "You begin applying \the [src] on yourself...")
+ if(!silent)
+ user.visible_message("[user] starts to apply \the [src] on [user.p_them()]self...", "You begin applying \the [src] on yourself...")
if(!do_mob(user, M, self_delay, extra_checks=CALLBACK(M, /mob/living/proc/can_inject, user, TRUE)))
return
+ else if(other_delay)
+ if(!silent)
+ user.visible_message("[user] starts to apply \the [src] on [M].", "You begin applying \the [src] on [M]...")
+ if(!do_mob(user, M, other_delay, extra_checks=CALLBACK(M, /mob/living/proc/can_inject, user, TRUE)))
+ return
+
if(heal(M, user))
log_combat(user, M, "healed", src.name)
use(1)
+ if(repeating && amount > 0)
+ try_heal(M, user, TRUE)
/obj/item/stack/medical/proc/heal(mob/living/M, mob/user)
@@ -174,3 +189,108 @@
/obj/item/stack/medical/ointment/suicide_act(mob/living/user)
user.visible_message("[user] is squeezing \the [src] into [user.p_their()] mouth! [user.p_do(TRUE)]n't [user.p_they()] know that stuff is toxic?")
return TOXLOSS
+
+/obj/item/stack/medical/suture
+ name = "suture"
+ desc = "Sterile sutures used to seal up cuts and lacerations."
+ gender = PLURAL
+ singular_name = "suture"
+ icon_state = "suture"
+ self_delay = 30
+ other_delay = 10
+ amount = 15
+ max_amount = 15
+ repeating = TRUE
+ var/heal_brute = 10
+ grind_results = list(/datum/reagent/medicine/spaceacillin = 2)
+
+/obj/item/stack/medical/suture/one
+ amount = 1
+
+/obj/item/stack/medical/suture/heal(mob/living/M, mob/user)
+ . = ..()
+ if(M.stat == DEAD)
+ to_chat(user, "[M] is dead! You can not help [M.p_them()].")
+ return
+ if(iscarbon(M))
+ return heal_carbon(M, user, heal_brute, 0)
+ if(isanimal(M))
+ var/mob/living/simple_animal/critter = M
+ if (!(critter.healable))
+ to_chat(user, "You cannot use \the [src] on [M]!")
+ return FALSE
+ else if (critter.health == critter.maxHealth)
+ to_chat(user, "[M] is at full health.")
+ return FALSE
+ user.visible_message("[user] applies \the [src] on [M].", "You apply \the [src] on [M].")
+ M.heal_bodypart_damage(heal_brute)
+ return TRUE
+
+ to_chat(user, "You can't heal [M] with the \the [src]!")
+
+/obj/item/stack/medical/mesh
+ name = "regenerative mesh"
+ desc = "A bacteriostatic mesh used to dress burns."
+ gender = PLURAL
+ singular_name = "regenerative mesh"
+ icon_state = "regen_mesh"
+ self_delay = 30
+ other_delay = 10
+ amount = 15
+ max_amount = 15
+ repeating = TRUE
+ var/heal_burn = 10
+ var/is_open = TRUE ///This var determines if the sterile packaging of the mesh has been opened.
+ grind_results = list(/datum/reagent/medicine/spaceacillin = 2)
+
+/obj/item/stack/medical/mesh/one
+ amount = 1
+
+/obj/item/stack/medical/mesh/Initialize()
+ . = ..()
+ if(amount == max_amount) //only seal full mesh packs
+ is_open = FALSE
+ update_icon()
+
+/obj/item/stack/medical/mesh/update_icon_state()
+ if(!is_open)
+ icon_state = "regen_mesh_closed"
+ else
+ return ..()
+
+/obj/item/stack/medical/mesh/heal(mob/living/M, mob/user)
+ . = ..()
+ if(M.stat == DEAD)
+ to_chat(user, "[M] is dead! You can not help [M.p_them()].")
+ return
+ if(iscarbon(M))
+ return heal_carbon(M, user, 0, heal_burn)
+ to_chat(user, "You can't heal [M] with the \the [src]!")
+
+
+/obj/item/stack/medical/mesh/try_heal(mob/living/M, mob/user, silent = FALSE)
+ if(!is_open)
+ to_chat(user, "You need to open [src] first.")
+ return
+ . = ..()
+
+/obj/item/stack/medical/mesh/AltClick(mob/living/user)
+ if(!is_open)
+ to_chat(user, "You need to open [src] first.")
+ return
+ . = ..()
+
+/obj/item/stack/medical/mesh/attack_hand(mob/user)
+ if(!is_open & user.get_inactive_held_item() == src)
+ to_chat(user, "You need to open [src] first.")
+ return
+ . = ..()
+
+/obj/item/stack/medical/mesh/attack_self(mob/user)
+ if(!is_open)
+ is_open = TRUE
+ to_chat(user, "You open the sterile mesh package.")
+ update_icon()
+ playsound(src, 'sound/items/poster_ripped.ogg', 20, TRUE)
+ return
+ . = ..()
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index 41c5204bdc..08b5f18ead 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -745,8 +745,8 @@
//////
/obj/item/storage/box/hug/medical/PopulateContents()
- new /obj/item/stack/medical/bruise_pack(src)
- new /obj/item/stack/medical/ointment(src)
+ new /obj/item/stack/medical/suture(src)
+ new /obj/item/stack/medical/mesh(src)
new /obj/item/reagent_containers/hypospray/medipen(src)
// Clown survival box
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index ba2746844c..e082c15741 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -37,10 +37,10 @@
if(empty)
return
new /obj/item/stack/medical/gauze(src)
- new /obj/item/stack/medical/bruise_pack(src)
- new /obj/item/stack/medical/bruise_pack(src)
- new /obj/item/stack/medical/ointment(src)
- new /obj/item/stack/medical/ointment(src)
+ new /obj/item/stack/medical/suture(src)
+ new /obj/item/stack/medical/suture(src)
+ new /obj/item/stack/medical/mesh(src)
+ new /obj/item/stack/medical/mesh(src)
new /obj/item/reagent_containers/hypospray/medipen(src)
new /obj/item/healthanalyzer(src)
@@ -52,12 +52,12 @@
if(empty)
return
new /obj/item/stack/medical/gauze(src)
- new /obj/item/stack/medical/bruise_pack(src)
- new /obj/item/stack/medical/bruise_pack(src)
- new /obj/item/stack/medical/bruise_pack(src)
- new /obj/item/stack/medical/ointment(src)
- new /obj/item/stack/medical/ointment(src)
- new /obj/item/stack/medical/ointment(src)
+ new /obj/item/stack/medical/suture(src)
+ new /obj/item/stack/medical/suture(src)
+ new /obj/item/stack/medical/suture(src)
+ new /obj/item/stack/medical/mesh(src)
+ new /obj/item/stack/medical/mesh(src)
+ new /obj/item/stack/medical/mesh(src)
/obj/item/storage/firstaid/fire
name = "burn treatment kit"
diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm
index 8c9a3636c8..4455c8820d 100644
--- a/code/game/objects/structures/ghost_role_spawners.dm
+++ b/code/game/objects/structures/ghost_role_spawners.dm
@@ -581,7 +581,7 @@
uniform = /obj/item/clothing/under/rank/rnd/scientist
shoes = /obj/item/clothing/shoes/laceup
id = /obj/item/card/id/away/old/sci
- l_pocket = /obj/item/stack/medical/bruise_pack
+ l_pocket = /obj/item/stack/medical/suture
assignedrole = "Ancient Crew"
job_description = "Oldstation Crew"
diff --git a/code/modules/holiday/halloween/bartholomew.dm b/code/modules/holiday/halloween/bartholomew.dm
index 4ef00e29cb..82ac374525 100644
--- a/code/modules/holiday/halloween/bartholomew.dm
+++ b/code/modules/holiday/halloween/bartholomew.dm
@@ -88,7 +88,7 @@
/obj/item/t_scanner = 5,
/obj/item/airlock_painter = 1,
/obj/item/stack/cable_coil = 6,
- /obj/item/stack/medical/bruise_pack = 1,
+ /obj/item/stack/medical/suture = 1,
/obj/item/stack/rods = 3,
/obj/item/stack/sheet/cardboard = 2,
/obj/item/stack/sheet/metal = 1,
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index b51e28decf..369c13b2fc 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -250,7 +250,7 @@
if(istype(O, /obj/item/stack/medical/gauze))
var/obj/item/stack/medical/gauze/G = O
reac_volume = min((reac_volume / 10), G.amount)
- new/obj/item/stack/medical/ointment(get_turf(G), reac_volume)
+ new/obj/item/stack/medical/mesh(get_turf(G), reac_volume)
G.use(reac_volume)
/datum/reagent/medicine/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
@@ -336,7 +336,7 @@
if(istype(O, /obj/item/stack/medical/gauze))
var/obj/item/stack/medical/gauze/G = O
reac_volume = min((reac_volume / 10), G.amount)
- new/obj/item/stack/medical/bruise_pack(get_turf(G), reac_volume)
+ new/obj/item/stack/medical/suture(get_turf(G), reac_volume)
G.use(reac_volume)
/datum/reagent/medicine/styptic_powder/on_mob_life(mob/living/carbon/M)