diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index e8c3b7a8f08..290506687bf 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -16,6 +16,17 @@ name = "record" var/list/fields = list() +/datum/data/record/Destroy() + if(src in data_core.medical) + data_core.medical -= src + if(src in data_core.security) + data_core.security -= src + if(src in data_core.general) + data_core.general -= src + if(src in data_core.locked) + data_core.locked -= src + . = ..() + /datum/data/crime name = "crime" var/crimeName = "" diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 9ec476e958b..ce09f86046b 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -460,7 +460,7 @@ else if(href_list["del_r2"]) investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", "records") if(active2) - data_core.medical -= active2 + qdel(active2) active2 = null else if(href_list["d_rec"]) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 2a282efeeee..71ed914bfeb 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -702,7 +702,6 @@ What a mess.*/ if("Delete Record (Security) Execute") investigate_log("[usr.name] ([usr.key]) has deleted the security records for [active1.fields["name"]].", "records") if(active2) - data_core.security -= active2 qdel(active2) active2 = null @@ -711,15 +710,12 @@ What a mess.*/ investigate_log("[usr.name] ([usr.key]) has deleted all records for [active1.fields["name"]].", "records") for(var/datum/data/record/R in data_core.medical) if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) - data_core.medical -= R qdel(R) break - data_core.general -= active1 qdel(active1) active1 = null if(active2) - data_core.security -= active2 qdel(active2) active2 = null else diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index ffd3286fd22..24ac822ad08 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -45,6 +45,7 @@ // register for radio system /obj/machinery/status_display/Initialize() + ..() SSradio.add_object(src, frequency) /obj/machinery/status_display/Destroy() diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index e2c464cef60..0bb05e5f06b 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -704,6 +704,8 @@ return 0 /mob/living/carbon/regenerate_organs() + CHECK_DNA_AND_SPECIES(src) + if(!(NOBREATH in dna.species.species_traits) && !getorganslot("lungs")) var/obj/item/organ/lungs/L = new() L.Insert(src)