diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm
index 5226084b96..39b2b2d5be 100644
--- a/code/game/machinery/announcement_system.dm
+++ b/code/game/machinery/announcement_system.dm
@@ -101,6 +101,8 @@ GLOBAL_LIST_EMPTY(announcement_systems)
//config stuff
/obj/machinery/announcement_system/interact(mob/user)
+ if(!user.canUseTopic(src, !issilicon(user)))
+ return
if(stat & BROKEN)
visible_message("[src] buzzes.", "You hear a faint buzz.")
playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 1)
@@ -115,6 +117,8 @@ GLOBAL_LIST_EMPTY(announcement_systems)
popup.open()
/obj/machinery/announcement_system/Topic(href, href_list)
+ if(!usr.canUseTopic(src, !issilicon(usr)))
+ return
if(stat & BROKEN)
visible_message("[src] buzzes.", "You hear a faint buzz.")
playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 1)
@@ -122,13 +126,13 @@ GLOBAL_LIST_EMPTY(announcement_systems)
if(href_list["ArrivalTopic"])
var/NewMessage = stripped_input(usr, "Enter in the arrivals announcement configuration.", "Arrivals Announcement Config", arrival)
- if(!in_range(src, usr) && src.loc != usr && (!isAI(usr) && !IsAdminGhost(usr)))
+ if(!usr.canUseTopic(src, !issilicon(usr)))
return
if(NewMessage)
arrival = NewMessage
else if(href_list["NewheadTopic"])
var/NewMessage = stripped_input(usr, "Enter in the departmental head announcement configuration.", "Head Departmental Announcement Config", newhead)
- if(!in_range(src, usr) && src.loc != usr && (!isAI(usr) && !IsAdminGhost(usr)))
+ if(!usr.canUseTopic(src, !issilicon(usr)))
return
if(NewMessage)
newhead = NewMessage
@@ -147,7 +151,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
. = attack_ai(user)
/obj/machinery/announcement_system/attack_ai(mob/user)
- if(!issilicon(user) && !IsAdminGhost(user))
+ if(!user.canUseTopic(src, !issilicon(user)))
return
if(stat & BROKEN)
to_chat(user, "[src]'s firmware appears to be malfunctioning!")