diff --git a/code/datums/ai/monkey/monkey_behaviors.dm b/code/datums/ai/monkey/monkey_behaviors.dm index 38a0fc9fd54..f20ca8769b9 100644 --- a/code/datums/ai/monkey/monkey_behaviors.dm +++ b/code/datums/ai/monkey/monkey_behaviors.dm @@ -122,6 +122,7 @@ if(living_pawn.health >= MONKEY_FLEE_HEALTH) finish_action(controller, TRUE) //we're back in bussiness + return var/mob/living/target = null @@ -153,6 +154,7 @@ if(!target || target.stat != CONSCIOUS) finish_action(controller, TRUE) //Target == owned + return if(isturf(target.loc) && !IS_DEAD_OR_INCAP(living_pawn)) // Check if they're a valid target // check if target has a weapon @@ -259,6 +261,10 @@ controller.current_movement_target = target + if(!target) + finish_action(controller, FALSE) + return + if(target.pulledby != living_pawn && !HAS_AI_CONTROLLER_TYPE(target.pulledby, /datum/ai_controller/monkey)) //Dont steal from my fellow monkeys. if(living_pawn.Adjacent(target) && isturf(target.loc)) target.grabbedby(living_pawn) @@ -268,6 +274,10 @@ var/obj/machinery/disposal/disposal = disposal_ref.resolve() controller.current_movement_target = disposal + if(!disposal) + finish_action(controller, FALSE) + return + if(living_pawn.Adjacent(disposal)) INVOKE_ASYNC(src, .proc/try_disposal_mob, controller, attack_target_key, disposal_target_key) //put him in! else //This means we might be getting pissed! diff --git a/code/datums/ai/monkey/monkey_subtrees.dm b/code/datums/ai/monkey/monkey_subtrees.dm index 9d7ba082333..9a5bf5219bb 100644 --- a/code/datums/ai/monkey/monkey_subtrees.dm +++ b/code/datums/ai/monkey/monkey_subtrees.dm @@ -41,6 +41,10 @@ var/datum/weakref/target_ref = controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] var/mob/living/selected_enemy = target_ref?.resolve() + if(!selected_enemy) + living_pawn.set_combat_mode(FALSE) + return + if(!selected_enemy.stat) //He's up, get him! if(living_pawn.health < MONKEY_FLEE_HEALTH) //Time to skeddadle controller.queue_behavior(/datum/ai_behavior/monkey_flee)