From 268cfdac4bb27a49b3dee23540e81d738839fddc Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Sat, 22 Feb 2025 14:03:39 +0100 Subject: [PATCH] AI uplink brain can no longer give you free ghost from which you can return to your AI core (#89607) ## About The Pull Request Closes #89605 Nor does it give you free xray anymore. Also fixed a bunch of runtimes, yeah. ## Changelog :cl: fix: AI uplink brain can no longer give you free ghost from which you can return to your AI core /:cl: --- code/modules/mining/lavaland/megafauna_loot.dm | 13 ++++++++----- code/modules/mob/living/carbon/carbon.dm | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm index 9728dd6d46d..83c7eda9a46 100644 --- a/code/modules/mining/lavaland/megafauna_loot.dm +++ b/code/modules/mining/lavaland/megafauna_loot.dm @@ -1156,7 +1156,7 @@ /obj/item/organ/brain/cybernetic/ai/on_mob_insert(mob/living/carbon/brain_owner, special, movement_flags) . = ..() - brain_owner.add_traits(list(HUMAN_SENSORS_VISIBLE_WITHOUT_SUIT, TRAIT_NO_MINDSWAP), ORGAN_TRAIT) + brain_owner.add_traits(list(HUMAN_SENSORS_VISIBLE_WITHOUT_SUIT, TRAIT_NO_MINDSWAP, TRAIT_CORPSELOCKED), REF(src)) update_med_hud_status(brain_owner) RegisterSignal(brain_owner, COMSIG_LIVING_HEALTH_UPDATE, PROC_REF(update_med_hud_status)) RegisterSignal(brain_owner, COMSIG_CLICK, PROC_REF(owner_clicked)) @@ -1168,7 +1168,7 @@ /obj/item/organ/brain/cybernetic/ai/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) undeploy() . = ..() - organ_owner.remove_traits(list(HUMAN_SENSORS_VISIBLE_WITHOUT_SUIT, TRAIT_NO_MINDSWAP), ORGAN_TRAIT) + organ_owner.remove_traits(list(HUMAN_SENSORS_VISIBLE_WITHOUT_SUIT, TRAIT_NO_MINDSWAP, TRAIT_CORPSELOCKED), REF(src)) UnregisterSignal(organ_owner, list(COMSIG_LIVING_HEALTH_UPDATE, COMSIG_CLICK, COMSIG_MOB_GET_STATUS_TAB_ITEMS, COMSIG_MOB_MIND_BEFORE_MIDROUND_ROLL, COMSIG_QDELETING, COMSIG_LIVING_PRE_WABBAJACKED)) /obj/item/organ/brain/cybernetic/ai/proc/cancel_rolls(mob/living/source, datum/mind/mind, datum/antagonist/antagonist) @@ -1236,7 +1236,8 @@ RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(undeploy)) AI.deployed_shell = owner deploy_init(AI) - ADD_TRAIT(AI.mind, TRAIT_UNCONVERTABLE, ORGAN_TRAIT) + ADD_TRAIT(AI.mind, TRAIT_UNCONVERTABLE, REF(src)) + ADD_TRAIT(AI, TRAIT_MIND_TEMPORARILY_GONE, REF(src)) AI.mind.transfer_to(owner) /obj/item/organ/brain/cybernetic/ai/proc/deploy_init(mob/living/silicon/ai/AI) @@ -1251,7 +1252,8 @@ SIGNAL_HANDLER if(!owner?.mind || !mainframe) return - UnregisterSignal(src, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING)) + UnregisterSignal(owner, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING)) + UnregisterSignal(mainframe, COMSIG_QDELETING) mainframe.redeploy_action.Remove(mainframe) mainframe.redeploy_action.last_used_shell = null owner.mind.transfer_to(mainframe) @@ -1261,7 +1263,8 @@ mainframe.laws.show_laws(mainframe) if(mainframe.eyeobj) mainframe.eyeobj.setLoc(loc) - REMOVE_TRAIT(mainframe.mind, TRAIT_UNCONVERTABLE, ORGAN_TRAIT) + REMOVE_TRAIT(mainframe.mind, TRAIT_UNCONVERTABLE, REF(src)) + REMOVE_TRAIT(mainframe, TRAIT_MIND_TEMPORARILY_GONE, REF(src)) mainframe = null update_med_hud_status(owner) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index b7d240560da..a387723a017 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -588,7 +588,7 @@ /mob/living/carbon/update_sight() if(!client) return - if(stat == DEAD) + if(stat == DEAD && !HAS_TRAIT(src, TRAIT_CORPSELOCKED)) if(SSmapping.level_trait(z, ZTRAIT_NOXRAY)) set_sight(null) else if(is_secret_level(z))