diff --git a/modular_skyrat/modules/modular_implants/code/nifs.dm b/modular_skyrat/modules/modular_implants/code/nifs.dm index b34bc198294..9c9cd07e4c7 100644 --- a/modular_skyrat/modules/modular_implants/code/nifs.dm +++ b/modular_skyrat/modules/modular_implants/code/nifs.dm @@ -327,7 +327,7 @@ return FALSE loaded_nifsofts += loaded_nifsoft - loaded_nifsoft.parent_nif = src + loaded_nifsoft.parent_nif = WEAKREF(src) loaded_nifsoft.linked_mob = linked_mob rewards_points += (loaded_nifsoft.rewards_points_rate * loaded_nifsoft.purchase_price) diff --git a/modular_skyrat/modules/modular_implants/code/nifsofts.dm b/modular_skyrat/modules/modular_implants/code/nifsofts.dm index c7260c1c055..c115b142fc8 100644 --- a/modular_skyrat/modules/modular_implants/code/nifsofts.dm +++ b/modular_skyrat/modules/modular_implants/code/nifsofts.dm @@ -68,18 +68,17 @@ if(active) activate() - if(!parent_nif) - return ..() + linked_mob = null - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif - installed_nif.loaded_nifsofts.Remove(src) - parent_nif = null + var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif.resolve() + if(installed_nif) + installed_nif.loaded_nifsofts.Remove(src) return ..() /// Activates the parent NIFSoft /datum/nifsoft/proc/activate() - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif + var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif.resolve() if(installed_nif.broken) installed_nif.balloon_alert(installed_nif.linked_mob, "your NIF is broken") @@ -111,7 +110,7 @@ ///Refunds the activation cost of a NIFSoft. /datum/nifsoft/proc/refund_activation_cost() - var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif + var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif.resolve() installed_nif.change_power_level(-activation_cost) ///Removes the cooldown from a NIFSoft diff --git a/modular_skyrat/modules/modular_implants/code/nifsofts/soulcatcher.dm b/modular_skyrat/modules/modular_implants/code/nifsofts/soulcatcher.dm index 99e841a1ecd..50bc504c063 100644 --- a/modular_skyrat/modules/modular_implants/code/nifsofts/soulcatcher.dm +++ b/modular_skyrat/modules/modular_implants/code/nifsofts/soulcatcher.dm @@ -22,7 +22,7 @@ soulcatcher_action.Grant(linked_mob) soulcatcher_action.parent_nifsoft = WEAKREF(src) - var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = parent_nif + var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = parent_nif.resolve() var/datum/component/soulcatcher/new_soulcatcher = target_nif.AddComponent(/datum/component/soulcatcher/nifsoft) for(var/room in saved_soulcatcher_rooms) diff --git a/modular_skyrat/modules/modular_implants/code/soulcatcher/soulcatcher_tgui.dm b/modular_skyrat/modules/modular_implants/code/soulcatcher/soulcatcher_tgui.dm index b10e2e65ec0..6d73f10e596 100644 --- a/modular_skyrat/modules/modular_implants/code/soulcatcher/soulcatcher_tgui.dm +++ b/modular_skyrat/modules/modular_implants/code/soulcatcher/soulcatcher_tgui.dm @@ -128,7 +128,7 @@ if(ishuman(usr)) var/mob/living/carbon/human/human_user = usr var/datum/nifsoft/soulcatcher/soulcatcher_nifsoft = human_user.find_nifsoft(/datum/nifsoft/soulcatcher) - if(soulcatcher_nifsoft && (parent != soulcatcher_nifsoft.parent_nif)) + if(soulcatcher_nifsoft && (parent != soulcatcher_nifsoft.parent_nif.resolve())) var/datum/component/soulcatcher/nifsoft_soulcatcher = soulcatcher_nifsoft.linked_soulcatcher.resolve() if(istype(nifsoft_soulcatcher)) available_rooms.Add(nifsoft_soulcatcher.soulcatcher_rooms)