Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
2 changes: 1 addition & 1 deletion code/game/machinery/computer/cloning.dm
Original file line number Diff line number Diff line change
Expand Up @@ -553,7 +553,7 @@
playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0)
return
if(HAS_TRAIT(mob_occupant, TRAIT_BADDNA))
scantemp = "<font class='bad'>Subject's DNA is damaged beyond any hope of recovery.</font>"
scantemp = "<font class='bad'>Subject's DNA is too damaged to initiate cloning procedure.</font>"
playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0)
return
if (!body_only && isnull(mob_occupant.mind))
Expand Down
7 changes: 7 additions & 0 deletions code/modules/research/designs/medical_designs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down
2 changes: 1 addition & 1 deletion code/modules/research/techweb/all_nodes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
40 changes: 40 additions & 0 deletions code/modules/surgery/advanced/dna_recovery.dm
Original file line number Diff line number Diff line change
@@ -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, "<span class='notice'>You begin to mend what's left of [target]'s DNA...</span>",
"[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, "<span class='notice'>You succeed in fixing some of [target]'s DNA!</span>",
"[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
1 change: 1 addition & 0 deletions yogstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down