diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm
index fc7f9f4116..eda8bb1737 100644
--- a/code/modules/cm_marines/overwatch.dm
+++ b/code/modules/cm_marines/overwatch.dm
@@ -335,7 +335,7 @@
if(.)
return
- var/mob/user = usr
+ var/mob/user = ui.user
if((user.contents.Find(src) || (in_range(src, user) && istype(loc, /turf))) || (ishighersilicon(user)))
user.set_interaction(src)
@@ -380,22 +380,48 @@
return TRUE
if("message")
- if(current_squad)
- var/input = sanitize_control_chars(stripped_input(user, "Please write a message to announce to the squad:", "Squad Message"))
- if(input)
- current_squad.send_message(input, 1) //message, adds username
- current_squad.send_maptext(input, "Squad Message:")
- visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Message '[input]' sent to all Marines of squad '[current_squad]'.")]")
- log_overwatch("[key_name(user)] sent '[input]' to squad [current_squad].")
+ if(!current_squad)
+ return TRUE
+
+ var/input = tgui_input_text(user, "Please write a message to announce to the squad:", "Squad Message")
+ if(!input)
+ return TRUE
+
+ current_squad.send_message(input, 1) //message, adds username
+ current_squad.send_maptext(input, "Platoon Message:")
+ visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Message '[input]' sent to all Marines of platoon '[current_squad]'.")]")
+ log_overwatch("[key_name(user)] sent '[input]' to platoon [current_squad].")
+
+ var/comm_paygrade = user.get_paygrade()
+
+ for(var/mob/dead/observer/cycled_observer in GLOB.player_list)
+ if(cycled_observer.client && cycled_observer.client.prefs && (cycled_observer.client.prefs.toggles_chat & CHAT_GHOSTRADIO))
+ var/ghost_message = "[comm_paygrade][user] (F) messaged squad '[current_squad]': \"[input]\""
+ cycled_observer.show_message(ghost_message)
+
+ return TRUE
if("sl_message")
- if(current_squad)
- var/input = sanitize_control_chars(stripped_input(user, "Please write a message to announce to the squad leader:", "SL Message"))
- if(input)
- current_squad.send_message(input, 1, 1) //message, adds username, only to leader
- current_squad.send_maptext(input, "Squad Leader Message:", 1)
- visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Message '[input]' sent to Squad Leader [current_squad.squad_leader] of squad '[current_squad]'.")]")
- log_overwatch("[key_name(user)] sent '[input]' to Squad Leader [current_squad.squad_leader] of squad [current_squad].")
+ if(!current_squad)
+ return TRUE
+
+ var/input = tgui_input_text(user, "Please write a message to announce to the Platoon leader:", "SL Message")
+ if(!input)
+ return TRUE
+
+ current_squad.send_message(input, 1, 1) //message, adds username, only to leader
+ current_squad.send_maptext(input, "Platoon Sergeant Message:", 1)
+ visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Message '[input]' sent to Platoon Sergeant [current_squad.squad_leader] of platoon '[current_squad]'.")]")
+ log_overwatch("[key_name(user)] sent '[input]' to Platoon Sergeant [current_squad.squad_leader] of squad [current_squad].")
+
+ var/comm_paygrade = user.get_paygrade()
+
+ for(var/mob/dead/observer/cycled_observer in GLOB.player_list)
+ if(cycled_observer.client && cycled_observer.client.prefs && (cycled_observer.client.prefs.toggles_chat & CHAT_GHOSTRADIO))
+ var/ghost_message = "[comm_paygrade][user] (F) messaged platoon leader of '[current_squad]': \"[input]\""
+ cycled_observer.show_message(ghost_message)
+
+ return TRUE
if("check_primary")
if(current_squad) //This is already checked, but ehh.