From 1547557166d73638863bbbf1dc8d1ac931043cb2 Mon Sep 17 00:00:00 2001 From: Archie Date: Sun, 27 Jun 2021 14:09:40 -0300 Subject: [PATCH] Fixes shells unable to be re-used by the AI & an exploit --- code/__DEFINES/is_helpers.dm | 2 ++ code/modules/mob/living/living.dm | 2 ++ code/modules/mob/living/silicon/robot/death.dm | 3 +++ code/modules/mob/living/silicon/robot/robot.dm | 3 +-- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 7a09f40c..96190e6d 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -157,6 +157,8 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define isclown(A) (istype(A, /mob/living/simple_animal/hostile/retaliate/clown)) +#define ismimic(A) (istype(A, /mob/living/simple_animal/hostile/hs13mimic)) + GLOBAL_LIST_INIT(shoefootmob, typecacheof(list( /mob/living/carbon/human/, /mob/living/simple_animal/cow, diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 5b8bf4bc..c36aa535 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -873,6 +873,8 @@ return 0 if(digitalcamo || digitalinvis) return 0 + if(ismimic(src)) // Are we a mimic? Mimics should not be tracked to prevent AI camera cheese. + return 0 // Now, are they viewable by a camera? (This is last because it's the most intensive check) if(!near_camera(src)) diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 23531e9f..25519842 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -21,6 +21,9 @@ locked = FALSE //unlock cover + if(connected_ai) + deployed = FALSE + update_canmove() if(!QDELETED(builtInCamera) && builtInCamera.status) builtInCamera.toggle_cam(src,0) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index f75607df..972bf29c 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1232,7 +1232,6 @@ /mob/living/silicon/robot/proc/TryConnectToAI() set_connected_ai(select_active_ai_with_fewest_borgs(z)) if(connected_ai) - connected_ai.connected_robots += src lawsync() lawupdate = 1 return TRUE @@ -1270,4 +1269,4 @@ var/mob/living/silicon/ai/old_ai = . old_ai.connected_robots -= src if(connected_ai) - connected_ai.connected_robots |= src \ No newline at end of file + connected_ai.connected_robots |= src