From 8be06ddcd0bf92d964329254a9efe956ee1c66ac Mon Sep 17 00:00:00 2001 From: Arturlang Date: Fri, 21 Jun 2019 17:27:57 +0300 Subject: [PATCH] Fixes --- code/modules/research/nanites/nanite_programs.dm | 8 +++++++- code/modules/research/nanites/nanite_programs/utility.dm | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/code/modules/research/nanites/nanite_programs.dm b/code/modules/research/nanites/nanite_programs.dm index f691c828c9..a06311f26f 100644 --- a/code/modules/research/nanites/nanite_programs.dm +++ b/code/modules/research/nanites/nanite_programs.dm @@ -57,6 +57,7 @@ deactivate() if(passive_enabled) disable_passive_effect() + on_mob_remove() if(nanites) nanites.programs -= src return ..() @@ -107,6 +108,9 @@ if(activated) //apply activation effects if it starts active activate() +datum/nanite_program/proc/on_mob_remove() + return + /datum/nanite_program/proc/toggle() if(!activated) activate() @@ -115,6 +119,7 @@ /datum/nanite_program/proc/activate() activated = TRUE + timer_counter = activation_delay /datum/nanite_program/proc/deactivate() if(passive_enabled) @@ -135,8 +140,10 @@ if(timer && timer_counter > timer) if(timer_type == NANITE_TIMER_DEACTIVATE) deactivate() + return else if(timer_type == NANITE_TIMER_SELFDELETE) qdel(src) + return else if(can_trigger && timer_type == NANITE_TIMER_TRIGGER) trigger() timer_counter = activation_delay @@ -251,4 +258,3 @@ return "Trigger" if(NANITE_TIMER_RESET) return "Reset Activation Timer" - diff --git a/code/modules/research/nanites/nanite_programs/utility.dm b/code/modules/research/nanites/nanite_programs/utility.dm index 4405401cec..77fb4e1005 100644 --- a/code/modules/research/nanites/nanite_programs/utility.dm +++ b/code/modules/research/nanites/nanite_programs/utility.dm @@ -237,7 +237,11 @@ if(prob(10)) var/list/mob/living/target_hosts = list() for(var/mob/living/L in oview(5, host_mob)) + if(!(MOB_ORGANIC in L.mob_biotypes) && !(MOB_UNDEAD in L.mob_biotypes)) + continue target_hosts += L + if(!target_hosts.len) + return var/mob/living/infectee = pick(target_hosts) if(prob(100 - (infectee.get_permeability_protection() * 100))) //this will potentially take over existing nanites!