diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm
index 1886f5d159..f1eda93505 100644
--- a/code/modules/reagents/chemistry/recipes/medicine.dm
+++ b/code/modules/reagents/chemistry/recipes/medicine.dm
@@ -102,8 +102,8 @@
St.volume *= St.purity
St.purity = 1
N.volume -= 0.002
- St.grown_volume += added_volume
- St.data = St.grown_volume
+ St.data.["grown_volume"] += added_volume
+ St.data = St.data.["grown_volume"]
/datum/chemical_reaction/styptic_powder
name = "Styptic Powder"
diff --git a/code/modules/surgery/graft_synthtissue.dm b/code/modules/surgery/graft_synthtissue.dm
index fb0a2552ba..0d396e5fdf 100644
--- a/code/modules/surgery/graft_synthtissue.dm
+++ b/code/modules/surgery/graft_synthtissue.dm
@@ -3,7 +3,7 @@
//TBD: Add heart damage, have heart reconstruction seperate from organ reconstruction, and find a better name for this. I can imagine people getting it confused with manipulation.
/datum/surgery/graft_synthtissue
- name = "Graft_synthtissue"
+ name = "Graft synthtissue"
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES)
steps = list(
@@ -21,7 +21,7 @@
name = "graft synthtissue"
implements = list(/obj/item/hemostat = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15)
repeatable = TRUE
- time = 25
+ time = 50
chems_needed = list("synthtissue")
var/obj/item/organ/chosen_organ
@@ -36,9 +36,10 @@
O.on_find(user)
organs -= O
organs[O.name] = O
- chosen_organ = input("Remove which organ?", "Surgery", null, null) as null|anything in organs
+ chosen_organ = input("Target which organ?", "Surgery", null, null) as null|anything in organs
+ chosen_organ = organs[chosen_organ]
if(chosen_organ.organ_flags & ORGAN_FAILING)
- to_chat(user, "[target]'s [chosen_organ] is too damaged to repair graft onto!")
+ to_chat(user, "[target]'s [chosen_organ] is too damaged to graft onto!")
return -1
user.visible_message("[user] begins to repair damaged portions of [target]'s [chosen_organ].")
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index 78742e9b61..4da064b895 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -218,7 +218,7 @@
LI = new()
LI.Insert(src)
if(only_one)
- return
+ return TRUE
if(has_stomach && !getorganslot(ORGAN_SLOT_STOMACH))
var/obj/item/organ/stomach/S
@@ -229,19 +229,19 @@
S = new()
S.Insert(src)
if(only_one)
- return
+ return TRUE
if(breathes && !getorganslot(ORGAN_SLOT_LUNGS))
var/obj/item/organ/lungs/L = new()
L.Insert(src)
if(only_one)
- return
+ return TRUE
if(blooded && !getorganslot(ORGAN_SLOT_HEART))
var/obj/item/organ/heart/H = new()
H.Insert(src)
if(only_one)
- return
+ return TRUE
if(!getorganslot(ORGAN_SLOT_TONGUE))
var/obj/item/organ/tongue/T
@@ -254,7 +254,7 @@
// if they have no mutant tongues, give them a regular one
T.Insert(src)
if(only_one)
- return
+ return TRUE
else if (!only_one)
var/obj/item/organ/tongue/oT = getorganslot(ORGAN_SLOT_TONGUE)
@@ -278,7 +278,7 @@
E = new()
E.Insert(src)
if(only_one)
- return
+ return TRUE
if(!getorganslot(ORGAN_SLOT_EARS))
var/obj/item/organ/ears/ears
@@ -289,7 +289,7 @@
ears.Insert(src)
if(only_one)
- return
+ return TRUE
if(!getorganslot(ORGAN_SLOT_TAIL))
var/obj/item/organ/tail/tail
@@ -297,4 +297,4 @@
tail = new dna.species.mutanttail
tail.Insert(src)
if(only_one)
- return
+ return TRUE
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
index a0af4175e4..9c24720a5a 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
@@ -98,11 +98,10 @@
/datum/reagent/synthtissue
name = "Synthtissue"
id = "synthtissue"
- description = "Synthetic tissue used for grafting onto damaged organs during surgery, or for treating limb damage."
+ description = "Synthetic tissue used for grafting onto damaged organs during surgery, or for treating limb damage. Has a very tight growth window between 305-320, any higher and the temperature will cause the cells to die. Additionally, growth time is considerably long, so chemists are encouraged to leave beakers with said reaction ongoing, while they tend to their other duties."
pH = 7.6
metabolization_rate = 0.1
- var/grown_volume = 0
- var/injected_vol = 0
+ data = list("grown_volume" = 0, "injected_vol" = 0)
/datum/reagent/synthtissue/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1)
if(iscarbon(M))
@@ -115,23 +114,38 @@
if(show_message)
to_chat(M, "You feel your [target] heal! It stings like hell!")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine)
- if(method == INJECT)
- injected_vol += reac_volume
+ if(method==INJECT)
+ data.["injected_vol"] += reac_volume
+ message_admins("inject! [data.["injected_vol"]], [reac_volume]")
..()
/datum/reagent/synthtissue/on_mob_life(mob/living/carbon/C)
if(!iscarbon(C))
return ..()
- if(injected_vol >= 20)
- if(grown_volume > 150) //I don't think this is even possible, but damn to I want to see if someone can (bare in mind it takes 2s to grow 0.05u)
- if(volume >= 20)
- C.regenerate_organs(only_one = TRUE)
- C.reagents.remove_reagent(id, 20)
+ if(data.["injected_vol"] > 14)
+ if(data.["grown_volume"] > 150) //I don't think this is even possible, but damn to I want to see if someone can (bare in mind it takes 2s to grow 0.05u)
+ if(volume >= 14)
+ if(C.regenerate_organs(only_one = TRUE))
+ C.reagents.remove_reagent(id, 15)
+ to_chat(C, "You feel something reform inside of you!")
+
+ data.["injected_vol"] -= metabolization_rate
..()
-/datum/reagent/synthtissue/on_merge(data)
- if(data > grown_volume)
- grown_volume = data
+/datum/reagent/synthtissue/on_merge(passed_data)
+ if(passed_data.["grown_volume"] > data.["grown_volume"])
+ data.["grown_volume"] = passed_data.["grown_volume"]
+ if(!data)
+ data = passed_data
..()
+/datum/reagent/synthtissue/on_new(passed_data)
+ if(passed_data.["grown_volume"] > data.["grown_volume"])
+ data.["grown_volume"] = passed_data.["grown_volume"]
+ if(!data)
+ data = passed_data
+ ..()
+
+/datum/reagent/synthtissue/
+
//NEEDS ON_MOB_DEAD()