diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm
index 3fd825cb46b..2409195a00f 100644
--- a/code/WorkInProgress/surgery.dm
+++ b/code/WorkInProgress/surgery.dm
@@ -1147,3 +1147,29 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
for(var/datum/disease/alien_embryo in target.viruses)
alien_embryo.cure()
+/datum/surgery_step/ribcage/fix_lungs
+ required_tool = /obj/item/weapon/scalpel
+
+ min_duration = 70
+ max_duration = 90
+
+ can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ return ..() && target.is_lung_ruptured()
+
+ begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ user.visible_message("[user] starts mending the rupture in [target]'s lungs with \the [tool].", \
+ "You start mending the rupture in [target]'s lungs with \the [tool]." )
+ target.custom_pain("The pain in your chest is living hell!",1)
+
+ end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/datum/organ/external/chest/affected = get_organ("chest")
+ user.visible_message("[user] mends the rupture in [target]'s lungs with \the [tool].", \
+ "You mend the rupture in [target]'s lungs with \the [tool]." )
+ affected.ruptured_lungs = 0
+
+ fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/datum/organ/external/chest/affected = get_organ("chest")
+ user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s chest with \the [tool]!", \
+ "\red Your hand slips, slicing an artery inside [target]'s chest with \the [tool]!")
+ affected.createwound(CUT, 20)
+
diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm
index 0a6d312bd9b..1487e8a048a 100644
--- a/code/datums/organs/organ_external.dm
+++ b/code/datums/organs/organ_external.dm
@@ -527,6 +527,7 @@
max_damage = 150
min_broken_damage = 75
body_part = UPPER_TORSO
+ var/ruptured_lungs = 0
/datum/organ/external/groin
name = "groin"
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 15dbadb0061..5e6f6e9d1fc 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -279,9 +279,12 @@
var/bled = ""
var/splint = ""
var/internal_bleeding = ""
+ var/lung_ruptured = ""
for(var/datum/wound/W in e.wounds) if(W.internal)
internal_bleeding = "
Internal Bleeding"
break
+ if(istype(e, /datum/organ/external/chest) && e:ruptured_lungs)
+ lung_ruptured = "Lung Ruptured:"
if(e.status & ORGAN_SPLINTED)
splint = "Splinted:"
if(e.status & ORGAN_BLEEDING)
@@ -295,7 +298,7 @@
if(!AN && !open && !infected & !imp)
AN = "None:"
if(!(e.status & ORGAN_DESTROYED))
- dat += "