[MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)

Upstream 04/17/2026

fixes https://github.com/Bubberstation/Bubberstation/issues/5549

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
This commit is contained in:
Alexis
2026-05-16 00:56:00 +02:00
committed by GitHub
co-authored by tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> ArcaneMusic MrMelbert Rhials rageguy505 LemonInTheDark John Willard Aliceee2ch Time-Green Tsar-Salat SmArtKar Maxipat SyncIt21 deltanedas SimplyLogan loganuk Leland Kemble FalloutFalcon Roxy Lucy siliconOpossum Isratosh TheRyeGuyWhoWillNowDie Neocloudy Alexander V. ElGitificador Twaticus dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Bloop Cameron Lennox Tim Iamgoofball Layzu666 Arturlang _0Steven mrmanlikesbt Ben10Omintrix John F. Kennedy Cursor Josh Josh Powell Yobrocharlie Hardly3D shayoki LT3
parent d1f6ed3137
commit 21b4095dfd
2082 changed files with 60158 additions and 140127 deletions
@@ -108,6 +108,8 @@ GLOBAL_LIST_INIT(command_strings, list(
var/list/original_allies
/// If true we will offer this
COOLDOWN_DECLARE(offer_ghosts_cooldown)
/// List of overlays to add to the bot if someone has drawn on it, index to a boolean of whether it should ignore paint colour
var/list/facepaint_overlays
/mob/living/basic/bot/Initialize(mapload)
. = ..()
@@ -149,6 +151,13 @@ GLOBAL_LIST_INIT(command_strings, list(
if(mapload && is_station_level(z) && (bot_mode_flags & BOT_MODE_CAN_BE_SAPIENT) && (bot_mode_flags & BOT_MODE_ROUNDSTART_POSSESSION))
enable_possession(mapload = mapload)
if (length(facepaint_overlays))
AddComponent(/datum/component/defaceable, \
icon = 'icons/mob/silicon/aibot_faces.dmi', \
icon_states = facepaint_overlays, \
drawing_of = "a face", \
)
pa_system = (isnull(announcement_type)) ? new(src, automated_announcements = generate_speak_list()) : new announcement_type(src, automated_announcements = generate_speak_list())
pa_system.Grant(src)
ai_controller.set_blackboard_key(BB_ANNOUNCE_ABILITY, pa_system)
+5 -1
View File
@@ -12,7 +12,7 @@
ai_movement = /datum/ai_movement/jps/bot
planning_subtrees = list(
/datum/ai_planning_subtree/escape_captivity/pacifist,
/datum/ai_planning_subtree/escape_captivity/pacifist,
/datum/ai_planning_subtree/respond_to_summon,
/datum/ai_planning_subtree/salute_authority,
/datum/ai_planning_subtree/find_patrol_beacon,
@@ -55,8 +55,12 @@
/datum/ai_controller/basic_controller/bot/proc/on_movement_start(mob/living/basic/bot/source, atom/target)
SIGNAL_HANDLER
if(current_movement_target == blackboard[BB_BEACON_TARGET])
source.update_bot_mode(new_mode = BOT_PATROL)
return
source.clear_path_hud(remove_hud = FALSE)
/datum/ai_controller/basic_controller/bot/proc/add_to_blacklist(atom/target, duration)
var/final_duration = duration || blackboard[BB_UNREACHABLE_LIST_COOLDOWN]
+10 -11
View File
@@ -40,6 +40,12 @@
if(isnull(ai_controller))
return
var/atom/move_target = ai_controller.current_movement_target
if(move_target != ai_controller.blackboard[BB_BEACON_TARGET])
return
//Removes path images and handles removing hud client images
clear_path_hud()
@@ -48,11 +54,6 @@
var/list/path_images = active_hud_list[DIAG_PATH_HUD]
LAZYCLEARLIST(path_images)
var/atom/move_target = ai_controller.current_movement_target
if(move_target != ai_controller.blackboard[BB_BEACON_TARGET])
return
var/list/our_path = source.movement_path
if(!length(our_path))
return
@@ -94,11 +95,6 @@
if(client || !length(current_pathed_turfs) || isnull(ai_controller))
return
var/atom/move_target = ai_controller.current_movement_target
if(move_target != ai_controller.blackboard[BB_BEACON_TARGET])
clear_path_hud()
var/turf/our_turf = get_turf(src)
var/image/target_image = current_pathed_turfs[our_turf]
if(target_image)
@@ -106,12 +102,15 @@
current_pathed_turfs -= our_turf
///proc that handles deleting the bot's drawn path when needed
/mob/living/basic/bot/proc/clear_path_hud()
/mob/living/basic/bot/proc/clear_path_hud(remove_hud = TRUE)
for(var/turf/index as anything in current_pathed_turfs)
var/image/our_image = current_pathed_turfs[index]
animate(our_image, alpha = 0, time = 0.3 SECONDS)
current_pathed_turfs -= index
if(!remove_hud)
return
// Call hud remove handlers to ensure viewing user client images are removed
var/list/path_huds_watching_me = list(GLOB.huds[DATA_HUD_DIAGNOSTIC], GLOB.huds[DATA_HUD_BOT_PATH])
for(var/datum/atom_hud/hud as anything in path_huds_watching_me)
@@ -19,6 +19,7 @@
possessed_message = "You are a cleanbot! Clean the station to the best of your ability!"
ai_controller = /datum/ai_controller/basic_controller/bot/cleanbot
path_image_color = "#993299"
facepaint_overlays = list("cleanbot" = FALSE, "cleanbot_highlight" = TRUE)
///the bucket used to build us.
var/obj/item/reagent_containers/cup/bucket/build_bucket
///Flags indicating what kind of cleanables we should scan for to set as our target to clean.
@@ -28,6 +28,9 @@
announcement_type = /datum/action/cooldown/bot_announcement/medbot
path_image_color = "#d9d9f4"
///Because of our animation we need to handle drawn-on overlays ourself
var/painted_face_colour
///anouncements when we find a target to heal
var/static/list/wait_announcements = list(
MEDIBOT_VOICED_HOLD_ON = 'sound/mobs/non-humanoids/medbot/coming.ogg',
@@ -140,6 +143,11 @@
post_tipped_callback = CALLBACK(src, PROC_REF(after_tip_over)), \
post_untipped_callback = CALLBACK(src, PROC_REF(after_righted)))
AddComponent(/datum/component/defaceable, \
drawing_of = "eyes", \
on_defaced = CALLBACK(src, PROC_REF(on_defaced)), \
)
var/static/list/hat_offsets = list(4,-9)
var/static/list/remove_hat = list(SIGNAL_ADDTRAIT(TRAIT_MOB_TIPPED))
var/static/list/prevent_checks = list(TRAIT_MOB_TIPPED)
@@ -193,13 +201,24 @@
if(!(medical_mode_flags & MEDBOT_STATIONARY_MODE))
. += mutable_appearance(icon, "[base_icon_state]_overlay_wheels")
if(HAS_TRAIT(src, TRAIT_INCAPACITATED))
. += mutable_appearance(icon, "[base_icon_state]_overlay_incapacitated")
. += emissive_appearance(icon, "[base_icon_state]_overlay_incapacitated", src, alpha = src.alpha)
else if(bot_mode_flags & BOT_MODE_ON)
var/mode_suffix = mode == BOT_HEALING ? "active" : "idle"
. += mutable_appearance(icon, "[base_icon_state]_overlay_on_[mode_suffix]")
. += emissive_appearance(icon, "[base_icon_state]_overlay_on_[mode_suffix]", src, alpha = src.alpha)
var/mode_suffix = mode == BOT_HEALING ? "active" : "idle"
if (HAS_TRAIT(src, TRAIT_DEFACED))
var/mutable_appearance/face = mutable_appearance('icons/mob/silicon/aibot_faces.dmi', "medbot_[mode_suffix]")
face.color = painted_face_colour
. += face
. += mutable_appearance('icons/mob/silicon/aibot_faces.dmi', "medbot_highlight_[mode_suffix]")
else
if(HAS_TRAIT(src, TRAIT_INCAPACITATED))
. += mutable_appearance(icon, "[base_icon_state]_overlay_incapacitated")
. += emissive_appearance(icon, "[base_icon_state]_overlay_incapacitated", src, alpha = src.alpha)
else if(bot_mode_flags & BOT_MODE_ON)
. += mutable_appearance(icon, "[base_icon_state]_overlay_on_[mode_suffix]")
. += emissive_appearance(icon, "[base_icon_state]_overlay_on_[mode_suffix]", src, alpha = src.alpha)
/// Set our drawn-on ink colour
/mob/living/basic/bot/medbot/proc/on_defaced(ink_colour)
SIGNAL_HANDLER
painted_face_colour = ink_colour
//this is sin
/mob/living/basic/bot/medbot/generate_speak_list()