mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-09 16:05:07 +00:00
[MIRROR] Corgis will no longer pick up non-items (like entire cars) (#6306)
* Corgis will no longer pick up non-items (like entire cars) (#59246) I made one hell of a whoopsie with dog AI, letting dogs fetch and pick up and carry around things that are absolutely not meant to be carryable, basically anything that isn't anchored. This restricts their carrying ability to items. Fixes: #59202 * Corgis will no longer pick up non-items (like entire cars) Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
This commit is contained in:
@@ -35,7 +35,7 @@
|
||||
/datum/ai_behavior/simple_equip/perform(delta_time, datum/ai_controller/controller)
|
||||
. = ..()
|
||||
var/obj/item/fetch_target = controller.blackboard[BB_FETCH_TARGET]
|
||||
if(!isturf(fetch_target?.loc)) // someone picked it up or something happened to it
|
||||
if(!isturf(fetch_target?.loc) || !isitem(fetch_target)) // someone picked it up, something happened to it, or it wasn't an item anyway
|
||||
finish_action(controller, FALSE)
|
||||
return
|
||||
|
||||
|
||||
@@ -75,8 +75,11 @@
|
||||
current_movement_target = interact_target
|
||||
if(IS_EDIBLE(interact_target))
|
||||
current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/eat_snack)
|
||||
else
|
||||
else if(isitem(interact_target))
|
||||
current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/simple_equip)
|
||||
else
|
||||
blackboard[BB_FETCH_TARGET] = null
|
||||
blackboard[BB_FETCH_DELIVER_TO] = null
|
||||
return
|
||||
|
||||
// if we're carrying something and we have a destination to deliver it, do that
|
||||
@@ -302,21 +305,25 @@
|
||||
/datum/ai_controller/dog/proc/check_point(mob/pointing_friend, atom/movable/pointed_movable)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
var/mob/living/living_pawn = pawn
|
||||
if(IS_DEAD_OR_INCAP(living_pawn))
|
||||
return
|
||||
|
||||
if(!COOLDOWN_FINISHED(src, command_cooldown))
|
||||
return
|
||||
if(pointed_movable == pawn || blackboard[BB_FETCH_TARGET] || !istype(pointed_movable) || blackboard[BB_DOG_ORDER_MODE] == DOG_COMMAND_NONE) // busy or no command
|
||||
return
|
||||
if(!can_see(pawn, pointing_friend, length=AI_DOG_VISION_RANGE) || !can_see(pawn, pointed_movable, length=AI_DOG_VISION_RANGE))
|
||||
return
|
||||
var/mob/living/living_pawn = pawn
|
||||
if(IS_DEAD_OR_INCAP(living_pawn))
|
||||
return
|
||||
|
||||
COOLDOWN_START(src, command_cooldown, AI_DOG_COMMAND_COOLDOWN)
|
||||
|
||||
switch(blackboard[BB_DOG_ORDER_MODE])
|
||||
if(DOG_COMMAND_FETCH)
|
||||
if(ismob(pointed_movable) || pointed_movable.anchored)
|
||||
if(!isitem(pointed_movable) || pointed_movable.anchored)
|
||||
return
|
||||
var/obj/item/pointed_item = pointed_movable
|
||||
if(pointed_item.obj_flags & ABSTRACT)
|
||||
return
|
||||
pawn.visible_message("<span class='notice'>[pawn] follows [pointing_friend]'s gesture towards [pointed_movable] and barks excitedly!</span>")
|
||||
current_movement_target = pointed_movable
|
||||
|
||||
Reference in New Issue
Block a user