[no gbp] few repairbot fixes and some beacon pathing improvements. (#88144)

## About The Pull Request
this fixes some few sentient repairbot-related issues that were reported
a few days ago. ive also given sentient repairbots a new simple UI to
manage their materials.

![image](https://github.com/user-attachments/assets/bc269769-439e-4aa8-82ca-e433c031fbec)

while I was at it, i also fixed bots continuously trying to path to
unreachable beacons, which can be quite costly since they're regularly
very far away.

## Why It's Good For The Game
closes #88067

## Changelog
🆑
fix: repairbots no longer get flashed by their own welder
fix: repairbots no longer break glass tables they step on
fix: repairbots can no longer flush their own welders
fix: fixes some runtimes when emagged repairbots try to deconstruct
things
fix: fixes sentient repairbots not being able to see or remove their
material counts
/🆑
This commit is contained in:
Ben10Omintrix
2024-11-27 11:29:20 -07:00
committed by GitHub
parent f0966db2ad
commit 173185ea9a
16 changed files with 299 additions and 90 deletions
@@ -3,11 +3,10 @@
/datum/ai_controller/basic_controller/bot/firebot
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_turfs,
BB_UNREACHABLE_LIST_COOLDOWN = 45 SECONDS,
BB_UNREACHABLE_LIST_COOLDOWN = 3 MINUTES,
)
planning_subtrees = list(
/datum/ai_planning_subtree/respond_to_summon,
/datum/ai_planning_subtree/manage_unreachable_list,
/datum/ai_planning_subtree/extinguishing_people,
/datum/ai_planning_subtree/extinguishing_turfs,
/datum/ai_planning_subtree/salute_authority,
@@ -99,7 +98,7 @@
continue
if(LAZYACCESS(ignore_list, possible_turf))
continue
if(controller.set_if_can_reach(target_key, possible_turf, bypass_add_to_blacklist = bypass_add_blacklist))
if(controller.set_if_can_reach(key = target_key, target = possible_turf, bypass_add_to_blacklist = bypass_add_blacklist))
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED
return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
@@ -113,7 +112,7 @@
//if we couldnt path, or we successfully burnt someone, ignore them for a bit!
if(!succeeded || (isliving(target) && (living_bot.bot_access_flags & BOT_COVER_EMAGGED)))
controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE)
controller.add_to_blacklist(target)
return ..()