From cad9b59c25362b876a6586d68a2257da04acccb2 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 8 Jun 2015 09:10:33 +0200 Subject: [PATCH] AI restrictions and rejuvenation. Ensures the AI cannot use Topics() while unpowered. Ensures the AI is properly rejuvenated by the AI verb, as a functional AI will now never be lying down. --- code/modules/mob/living/silicon/ai/ai.dm | 12 ++++++++---- code/modules/mob/living/silicon/ai/life.dm | 7 ++++--- code/modules/nano/interaction/base.dm | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 9c874f54b1..ac626586ce 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -678,16 +678,20 @@ var/list/ai_verbs_default = list( set desc = "Augment visual feed with internal sensor overlays" toggle_sensor_mode() -/mob/living/silicon/ai/proc/check_unable(var/flags = 0) +/mob/living/silicon/ai/proc/check_unable(var/flags = 0, var/feedback = 1) if(stat == DEAD) - src << "You are dead!" + if(feedback) src << "You are dead!" + return 1 + + if(aiRestorePowerRoutine) + if(feedback) src << "You lack power!" return 1 if((flags & AI_CHECK_WIRELESS) && src.control_disabled) - src << "Wireless control is disabled!" + if(feedback) src << "Wireless control is disabled!" return 1 if((flags & AI_CHECK_RADIO) && src.aiRadio.disabledAi) - src << "System Error - Transceiver Disabled!" + if(feedback) src << "System Error - Transceiver Disabled!" return 1 return 0 diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 5e0b0589c5..ed8c650f7a 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -1,5 +1,5 @@ /mob/living/silicon/ai/Life() - if (src.stat == 2) + if (src.stat == DEAD) return else //I'm not removing that shitton of tabs, unneeded as they are. -- Urist //Being dead doesn't mean your temperature never changes @@ -33,8 +33,8 @@ aiRestorePowerRoutine = 0 // Necessary if AI activated it's APU AFTER losing primary power. adjustOxyLoss(-1) - // Handle EMP-stun - handle_stunned() + handle_stunned() // Handle EMP-stun + lying = 0 // Handle lying down malf_process() @@ -176,3 +176,4 @@ /mob/living/silicon/ai/rejuvenate() ..() add_ai_verbs(src) + diff --git a/code/modules/nano/interaction/base.dm b/code/modules/nano/interaction/base.dm index 10cda75162..602185bb8a 100644 --- a/code/modules/nano/interaction/base.dm +++ b/code/modules/nano/interaction/base.dm @@ -21,7 +21,7 @@ /mob/living/silicon/ai/shared_nano_interaction() if(lacks_power()) return STATUS_CLOSE - if (check_unable(1)) + if (check_unable(1, 0)) return STATUS_CLOSE return ..()