diff --git a/code/datums/balloon_alerts/balloon_alerts.dm b/code/datums/balloon_alerts/balloon_alerts.dm
index 8ef770fa9d7f..59f826fbe7d2 100644
--- a/code/datums/balloon_alerts/balloon_alerts.dm
+++ b/code/datums/balloon_alerts/balloon_alerts.dm
@@ -37,20 +37,15 @@
if (isnull(viewer_client))
return
- var/bound_width = world.icon_size
- if (ismovable(src))
- var/atom/movable/movable_source = src
- bound_width = movable_source.bound_width
-
var/image/balloon_alert = image(loc = get_atom_on_turf(src), layer = ABOVE_MOB_LAYER)
balloon_alert.plane = RUNECHAT_PLANE
balloon_alert.alpha = 0
balloon_alert.color = text_color
balloon_alert.appearance_flags = NO_CLIENT_COLOR|KEEP_APART|RESET_COLOR|RESET_TRANSFORM|RESET_ALPHA
balloon_alert.maptext = MAPTEXT("[text]")
- balloon_alert.maptext_x = (BALLOON_TEXT_WIDTH - bound_width) * -0.5
balloon_alert.maptext_height = WXH_TO_HEIGHT(viewer_client?.MeasureText(text, null, BALLOON_TEXT_WIDTH))
balloon_alert.maptext_width = BALLOON_TEXT_WIDTH
+ balloon_alert.maptext_x = get_maxptext_x_offset(balloon_alert)
if(appearance_flags & PIXEL_SCALE)
balloon_alert.appearance_flags |= PIXEL_SCALE
//"[text]"
diff --git a/code/datums/langchat/langchat.dm b/code/datums/langchat/langchat.dm
index 83b9be0ac053..b82b03b51774 100644
--- a/code/datums/langchat/langchat.dm
+++ b/code/datums/langchat/langchat.dm
@@ -47,12 +47,12 @@
M.client.images -= langchat_image
langchat_listeners = null
-/atom/proc/langchat_set_x_offset()
- langchat_image.maptext_x = world.icon_size / 2 - langchat_image.maptext_width / 2
-/atom/movable/langchat_set_x_offset()
- langchat_image.maptext_x = bound_width / 2 - langchat_image.maptext_width / 2
-/mob/langchat_set_x_offset()
- langchat_image.maptext_x = icon_size / 2 - langchat_image.maptext_width / 2
+/atom/proc/get_maxptext_x_offset(image/maptext_image)
+ return (world.icon_size / 2) - (maptext_image.maptext_width / 2)
+/atom/movable/get_maxptext_x_offset(image/maptext_image)
+ return (bound_width / 2) - (maptext_image.maptext_width / 2)
+/mob/get_maxptext_x_offset(image/maptext_image)
+ return (icon_size / 2) - (maptext_image.maptext_width / 2)
///Creates the image if one does not exist, resets settings that are modified by speech procs.
/atom/proc/langchat_make_image(override_color = null)
@@ -64,7 +64,7 @@
langchat_image.maptext_y = langchat_height
langchat_image.maptext_height = 64
langchat_image.maptext_y -= LANGCHAT_MESSAGE_POP_Y_SINK
- langchat_set_x_offset()
+ langchat_image.maptext_x = get_maxptext_x_offset(langchat_image)
langchat_image.pixel_y = 0
langchat_image.alpha = 0
@@ -109,7 +109,7 @@
langchat_image.maptext = text_to_display
langchat_image.maptext_width = LANGCHAT_WIDTH
- langchat_set_x_offset()
+ langchat_image.maptext_x = get_maxptext_x_offset(langchat_image)
langchat_listeners = listeners
for(var/mob/M in langchat_listeners)
@@ -156,7 +156,7 @@
langchat_image.maptext = text_to_display
langchat_image.maptext_width = LANGCHAT_WIDTH * 2
- langchat_set_x_offset()
+ langchat_image.maptext_x = get_maxptext_x_offset(langchat_image)
langchat_listeners = listeners
for(var/mob/M in langchat_listeners)
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm
index ef084c9b5b59..bd01376c9f9d 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm
@@ -17,6 +17,8 @@
if(xeno.crest_defense)
to_chat(xeno, SPAN_XENOWARNING("We lower our crest."))
+ xeno.balloon_alert(xeno, "crest lowered")
+
xeno.ability_speed_modifier += speed_debuff
xeno.armor_deflection_buff += armor_buff
xeno.mob_size = MOB_SIZE_BIG //knockback immune
@@ -24,6 +26,8 @@
xeno.update_icons()
else
to_chat(xeno, SPAN_XENOWARNING("We raise our crest."))
+ xeno.balloon_alert(xeno, "crest raised")
+
xeno.ability_speed_modifier -= speed_debuff
xeno.armor_deflection_buff -= armor_buff
xeno.mob_size = MOB_SIZE_XENO //no longer knockback immune
@@ -313,4 +317,3 @@
/datum/action/xeno_action/onclick/soak/proc/remove_enrage()
owner.remove_filter("steelcrest_enraged")
-