From 1b3acc2baf2bbc488579e15c1a4851b62b560316 Mon Sep 17 00:00:00 2001 From: Nadyr Date: Wed, 25 Sep 2024 19:12:15 -0400 Subject: [PATCH] Drone and posibrain fixes --- code/modules/organs/organ.dm | 12 ++++++++++-- code/modules/surgery/robotics.dm | 12 +++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 621e875df64..23176642d83 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -398,7 +398,11 @@ var/list/organ_cache = list() rejecting = null if(istype(owner)) - var/datum/reagent/blood/organ_blood = locate(/datum/reagent/blood) in reagents.reagent_list + // VOREstation edit begin - Posibrains don't have blood reagents, so they crash this + var/datum/reagent/blood/organ_blood = null + if(reagents) + organ_blood = locate(/datum/reagent/blood) in reagents.reagent_list + // VOREstation edit end if(!organ_blood || !organ_blood.data["blood_DNA"]) owner.vessel.trans_to(src, 5, 1, 1) @@ -418,7 +422,11 @@ var/list/organ_cache = list() if(!istype(target)) return - var/datum/reagent/blood/transplant_blood = locate(/datum/reagent/blood) in reagents.reagent_list + // VOREstation edit begin - Posibrains don't have blood reagents, so they crash this + var/datum/reagent/blood/transplant_blood = null + if(reagents) + transplant_blood = locate(/datum/reagent/blood) in reagents.reagent_list + // VOREstation edit end transplant_data = list() if(!transplant_blood) transplant_data["species"] = target?.species.name diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index 9e187d087d4..d393f4759e4 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -485,7 +485,17 @@ "You have installed \the [tool] into [target]'s [affected.name].") var/obj/item/device/mmi/M = tool - var/obj/item/organ/internal/mmi_holder/holder = new(target, 1) + // VOREstation edit begin - Select the proper mmi holder subtype based on the brain inserted + var/obj/item/organ/internal/mmi_holder/holder = null + if(istype(M,/obj/item/device/mmi/digital/posibrain/nano)) + holder = new /obj/item/organ/internal/mmi_holder/posibrain/nano(target, 1) + else if(istype(M,/obj/item/device/mmi/digital/posibrain)) + holder = new /obj/item/organ/internal/mmi_holder/posibrain(target, 1) + else if(istype(M,/obj/item/device/mmi/digital/robot)) + holder = new /obj/item/organ/internal/mmi_holder/robot(target, 1) + else + holder = new /obj/item/organ/internal/mmi_holder(target, 1) // Fallback to old behavior if organic MMI or if no subtype exists. + //VOREstation edit end target.internal_organs_by_name["brain"] = holder user.drop_from_inventory(tool) tool.loc = holder