diff --git a/code/datums/components/surgery_initiator.dm b/code/datums/components/surgery_initiator.dm index 0ff4eb2fc58..1ab902952c4 100644 --- a/code/datums/components/surgery_initiator.dm +++ b/code/datums/components/surgery_initiator.dm @@ -24,6 +24,9 @@ /// Also, note that for anything sharp, SURGERY_INITIATOR_ORGANIC should be set as well. var/valid_starting_types = SURGERY_INITIATOR_ORGANIC + // Replace any other surgery initiator + dupe_type = /datum/component/surgery_initiator + /** * Create a new surgery initiating component. * @@ -137,7 +140,7 @@ var/list/available_surgeries = list() for(var/datum/surgery/surgery in GLOB.surgeries_list) - if(surgery.abstract) // no choosing abstract surgeries + if(surgery.abstract && !istype(surgery, forced_surgery)) // no choosing abstract surgeries, though they can be forced continue if(!target.can_run_surgery(surgery, user)) continue diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index d87620b1626..24a08e5edd2 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -133,7 +133,7 @@ if(!is_robotic()) application_surgery = /datum/surgery/reattach else - application_surgery = /datum/surgery/attach_robotic_limb + application_surgery = /datum/surgery/reattach_synth AddComponent(/datum/component/surgery_initiator/limb, forced_surgery = application_surgery) @@ -699,6 +699,9 @@ Note that amputating the affected organ does in fact remove the infection from t // This is so surgery isn't kaput, let's see how this does encased = null + // override the existing initiator + AddComponent(/datum/component/surgery_initiator/limb, forced_surgery = /datum/surgery/reattach_synth) + if(company && istext(company)) set_company(company)