From 5dd5b54af6df32f21b63340ba69ccb8486426f3e Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Sun, 24 Jan 2016 13:01:52 +0100 Subject: [PATCH] Creates a new process for AI handling. --- baystation12.dme | 2 ++ code/controllers/Processes/ai.dm | 24 ++++++++++++++++++++++++ code/datums/ai/ai.dm | 5 +++++ code/datums/expansions/expansion.dm | 2 +- 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 code/controllers/Processes/ai.dm create mode 100644 code/datums/ai/ai.dm diff --git a/baystation12.dme b/baystation12.dme index cda15ea108a..372f1a642de 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -123,6 +123,7 @@ #include "code\controllers\subsystems.dm" #include "code\controllers\verbs.dm" #include "code\controllers\voting.dm" +#include "code\controllers\Processes\ai.dm" #include "code\controllers\Processes\air.dm" #include "code\controllers\Processes\alarm.dm" #include "code\controllers\Processes\chemistry.dm" @@ -161,6 +162,7 @@ #include "code\datums\recipe.dm" #include "code\datums\sun.dm" #include "code\datums\supplypacks.dm" +#include "code\datums\ai\ai.dm" #include "code\datums\diseases\appendicitis.dm" #include "code\datums\diseases\beesease.dm" #include "code\datums\diseases\brainrot.dm" diff --git a/code/controllers/Processes/ai.dm b/code/controllers/Processes/ai.dm new file mode 100644 index 00000000000..0de5b7f9d66 --- /dev/null +++ b/code/controllers/Processes/ai.dm @@ -0,0 +1,24 @@ +var/list/datum/list_of_ais = list() + +/datum/controller/process/ai/setup() + name = "ai" + schedule_interval = 2 SECONDS + start_delay = 17 + +/datum/controller/process/ai/doWork() + for(last_object in list_of_ais) + var/datum/ai/AI = last_object + if(isnull(AI.gcDestroyed) && istype(AI)) + try + if(AI.process() == PROCESS_KILL) + list_of_ais -= AI + catch(var/exception/e) + catchException(e, AI) + SCHECK + else + catchBadType(AI) + list_of_ais -= AI + +/datum/controller/process/ai/statProcess() + ..() + stat(null, "[list_of_ais.len] AI\s") diff --git a/code/datums/ai/ai.dm b/code/datums/ai/ai.dm new file mode 100644 index 00000000000..6436fbc2295 --- /dev/null +++ b/code/datums/ai/ai.dm @@ -0,0 +1,5 @@ +/datum/ai + var/name + +/datum/ai/proc/process() + return PROCESS_KILL diff --git a/code/datums/expansions/expansion.dm b/code/datums/expansions/expansion.dm index 96227aa98e0..3fded0f9b21 100644 --- a/code/datums/expansions/expansion.dm +++ b/code/datums/expansions/expansion.dm @@ -1,7 +1,7 @@ /datum/expansion var/datum/holder = null // The holder -/datum/expansion/New(var/atom/holder) +/datum/expansion/New(var/datum/holder) if(!istype(holder)) CRASH("Invalid holder.") src.holder = holder