From e7e698e9c47637cfa263acddc3cbc18cc5ee8716 Mon Sep 17 00:00:00 2001 From: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Date: Mon, 15 Jan 2024 22:59:34 +0200 Subject: [PATCH] fix bileworm ai going insane after eating someone (#80954) ## About The Pull Request bileworms will no longer infintely try to eat what they already ate ## Why It's Good For The Game fixes #80948 ## Changelog :cl: fix: fix bileworm ai going insane after eating someone /:cl: --- .../basic/lavaland/bileworm/bileworm_ai.dm | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_ai.dm b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_ai.dm index ea979febff3..aa3e06af16a 100644 --- a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_ai.dm +++ b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_ai.dm @@ -22,11 +22,16 @@ //because one ability is always INFINITY cooldown, this actually works to check which ability should be used //sometimes it will try to spew bile on infinity cooldown, but that's okay because as soon as resurface is ready it will attempt that - if(!QDELETED(resurface) && resurface.next_use_time <= world.time) + + if(resurface?.IsAvailable()) controller.queue_behavior(/datum/ai_behavior/targeted_mob_ability/and_plan_execute, BB_BILEWORM_RESURFACE, BB_BASIC_MOB_CURRENT_TARGET) - else + return SUBTREE_RETURN_FINISH_PLANNING + + var/datum/action/cooldown/mob_cooldown/bile = controller.blackboard[BB_BILEWORM_SPEW_BILE] + + if(bile?.IsAvailable()) controller.queue_behavior(/datum/ai_behavior/targeted_mob_ability/and_plan_execute, BB_BILEWORM_SPEW_BILE, BB_BASIC_MOB_CURRENT_TARGET) - return SUBTREE_RETURN_FINISH_PLANNING //focus on the fight + return SUBTREE_RETURN_FINISH_PLANNING //focus on the fight /datum/ai_planning_subtree/bileworm_execute @@ -35,9 +40,15 @@ var/atom/movable/target = controller.blackboard[BB_BASIC_MOB_EXECUTION_TARGET] if(QDELETED(target) || !isliving(target)) return + + var/datum/action/cooldown/mob_cooldown/devour = controller.blackboard[BB_BILEWORM_DEVOUR] + + if(!(devour?.IsAvailable())) + return + var/mob/living/living_target = target if(living_target.stat < UNCONSCIOUS) return - controller.queue_behavior(/datum/ai_behavior/targeted_mob_ability, BB_BILEWORM_DEVOUR, BB_BASIC_MOB_EXECUTION_TARGET) + controller.queue_behavior(/datum/ai_behavior/targeted_mob_ability/and_clear_target, BB_BILEWORM_DEVOUR, BB_BASIC_MOB_EXECUTION_TARGET) return SUBTREE_RETURN_FINISH_PLANNING //focus on devouring this fool