diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/basic_attacking.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/basic_attacking.dm index 0f7fe6ef142..144de535d5a 100644 --- a/code/datums/ai/basic_mobs/basic_ai_behaviors/basic_attacking.dm +++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/basic_attacking.dm @@ -8,7 +8,8 @@ . = ..() if(!controller.blackboard[targeting_strategy_key]) CRASH("No targeting strategy was supplied in the blackboard for [controller.pawn]") - + if(HAS_TRAIT(controller.pawn, TRAIT_HANDS_BLOCKED)) + return FALSE //Hiding location is priority var/atom/target = controller.blackboard[hiding_location_key] || controller.blackboard[target_key] if(QDELETED(target)) @@ -67,6 +68,8 @@ /datum/ai_behavior/basic_ranged_attack/setup(datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key) . = ..() + if(HAS_TRAIT(controller.pawn, TRAIT_HANDS_BLOCKED)) + return FALSE var/atom/target = controller.blackboard[hiding_location_key] || controller.blackboard[target_key] if(QDELETED(target)) return FALSE diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index 8eb166bf820..7b85a878ec3 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -175,6 +175,12 @@ Slimecrossing Items w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/science/slimecrossing.dmi' icon_state = "capturedevice" + ///traits we give and remove from the mob on exit and entry + var/static/list/traits_on_transfer = list( + TRAIT_IMMOBILIZED, + TRAIT_HANDS_BLOCKED, + TRAIT_AI_PAUSED, + ) /obj/item/capturedevice/attack(mob/living/pokemon, mob/user) if(length(contents)) @@ -211,11 +217,11 @@ Slimecrossing Items /obj/item/capturedevice/proc/store(mob/living/pokemon) pokemon.forceMove(src) - pokemon.add_traits(list(TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED), ABSTRACT_ITEM_TRAIT) + pokemon.add_traits(traits_on_transfer, ABSTRACT_ITEM_TRAIT) pokemon.cancel_camera() /obj/item/capturedevice/proc/release() for(var/mob/living/pokemon in contents) pokemon.forceMove(get_turf(loc)) - pokemon.remove_traits(list(TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED), ABSTRACT_ITEM_TRAIT) + pokemon.remove_traits(traits_on_transfer, ABSTRACT_ITEM_TRAIT) pokemon.cancel_camera()