mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 21:48:39 +01:00
[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:
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
@@ -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)
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user