diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 84c7d3a7b2b8..7329bd78f25e 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -553,7 +553,7 @@
playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0)
return
if(HAS_TRAIT(mob_occupant, TRAIT_BADDNA))
- scantemp = "Subject's DNA is damaged beyond any hope of recovery."
+ scantemp = "Subject's DNA is too damaged to initiate cloning procedure."
playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0)
return
if (!body_only && isnull(mob_occupant.mind))
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index 49dd44009f4b..f61fc30ed731 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -622,6 +622,13 @@
surgery = /datum/surgery/advanced/revival
research_icon_state = "surgery_head"
+/datum/design/surgery/dna_recovery
+ name= "DNA Recovery"
+ desc= "A surgical procedure which involves using rezadone to salvage a single strand of DNA from the patient, allowing them to be cloned."
+ id = "surgery_dna_recovery"
+ surgery = /datum/surgery/advanced/dna_recovery
+ research_icon_state = "surgery_head"
+
/datum/design/surgery/brainwashing
name = "Brainwashing"
desc = "A surgical procedure which directly implants a directive into the patient's brain, making it their absolute priority. It can be cleared using a mindshield implant."
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 371c216a99a4..f442b4489bc6 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -93,7 +93,7 @@
display_name = "Advanced Surgery"
description = "When simple medicine doesn't cut it."
prereq_ids = list("imp_wt_surgery")
- design_ids = list("surgery_lobotomy", "surgery_heal_brute_upgrade_femto","surgery_heal_burn_upgrade_femto","surgery_heal_combo", "surgery_revival")
+ design_ids = list("surgery_lobotomy", "surgery_heal_brute_upgrade_femto","surgery_heal_burn_upgrade_femto","surgery_heal_combo", "surgery_revival", "surgery_dna_recovery")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
export_price = 4000
diff --git a/code/modules/surgery/advanced/dna_recovery.dm b/code/modules/surgery/advanced/dna_recovery.dm
new file mode 100644
index 000000000000..522cd323e9d9
--- /dev/null
+++ b/code/modules/surgery/advanced/dna_recovery.dm
@@ -0,0 +1,40 @@
+/datum/surgery/advanced/dna_recovery
+ name = "DNA recovery"
+ desc = "An experimental surgical procedure that could fix the DNA from dead bodies. Requires rezadone."
+ steps = list(/datum/surgery_step/incise,
+ /datum/surgery_step/retract_skin,
+ /datum/surgery_step/saw,
+ /datum/surgery_step/clamp_bleeders,
+ /datum/surgery_step/dna_recovery,
+ /datum/surgery_step/close)
+
+ possible_locs = list(BODY_ZONE_HEAD)
+
+
+/datum/surgery/advanced/dna_recovery/can_start(mob/user, mob/living/carbon/target)
+ if(!..())
+ return FALSE
+
+ if(!HAS_TRAIT_FROM(target, TRAIT_BADDNA, CHANGELING_DRAIN))
+ return FALSE
+ else
+ return TRUE
+
+/datum/surgery_step/dna_recovery
+ name = "recover DNA"
+ implements = list(/obj/item/reagent_containers/syringe = 100, /obj/item/pen = 30)
+ time = 150
+ chems_needed = list(/datum/reagent/medicine/rezadone)
+ require_all_chems = FALSE
+
+/datum/surgery_step/dna_recovery/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You begin to mend what's left of [target]'s DNA...",
+ "[user] begins to tinker with [target]'s brain...",
+ "[user] begins to perform surgery on [target]'s brain.")
+
+/datum/surgery_step/dna_recovery/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You succeed in fixing some of [target]'s DNA!",
+ "[user] successfully repairs some of [target]'s DNA",
+ "[user] completes the surgery on [target]'s brain.")
+ REMOVE_TRAIT(target, TRAIT_BADDNA, CHANGELING_DRAIN)
+ return TRUE
\ No newline at end of file
diff --git a/yogstation.dme b/yogstation.dme
index 8751cf4dcf5b..76bbad00e5ba 100644
--- a/yogstation.dme
+++ b/yogstation.dme
@@ -2757,6 +2757,7 @@
#include "code\modules\surgery\surgery_step.dm"
#include "code\modules\surgery\tools.dm"
#include "code\modules\surgery\advanced\brainwashing.dm"
+#include "code\modules\surgery\advanced\dna_recovery.dm"
#include "code\modules\surgery\advanced\lobotomy.dm"
#include "code\modules\surgery\advanced\necrotic_revival.dm"
#include "code\modules\surgery\advanced\pacification.dm"