diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 1e0183499b6..cd73303a734 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -17,6 +17,7 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard) var/image/screen_layer var/screen_color = "#00ff0d" var/last_notify = 0 + var/screen_msg /obj/item/device/paicard/relaymove(var/mob/user, var/direction) if(user.stat || user.stunned) @@ -259,6 +260,8 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard) "} */ + if(screen_msg) + dat += "Message from [pai.name]
[screen_msg]" else if(looking_for_personality) dat += {" diff --git a/code/modules/mob/living/silicon/pai/pai_vr.dm b/code/modules/mob/living/silicon/pai/pai_vr.dm index fff39d06ce2..6018e0387f2 100644 --- a/code/modules/mob/living/silicon/pai/pai_vr.dm +++ b/code/modules/mob/living/silicon/pai/pai_vr.dm @@ -376,3 +376,58 @@ else hide_glow = FALSE update_icon() + +/mob/living/silicon/pai/verb/screen_message(message as text|null) + set category = "pAI Commands" + set name = "Screen Message" + set desc = "Allows you to display a message on your screen. This will show up in the chat of anyone who is holding your card." + + if (src.client) + if(client.prefs.muted & MUTE_IC) + to_chat(src, "You cannot speak in IC (muted).") + return + if(loc != card) + to_chat(src, "Your message won't be visible while unfolded!") + if (!message) + message = tgui_input_text(src, "Enter text you would like to show on your screen.","Screen Message") + message = sanitize_or_reflect(message,src) + if (!message) + return + message = capitalize(message) + if (stat == DEAD) + return + card.screen_msg = message + var/logmsg = "(CARD SCREEN)[message]" + log_say(logmsg,src) + to_chat(src, "You print a message to your screen, \"[message]\"") + if(isliving(card.loc)) + var/mob/living/L = card.loc + if(L.client) + to_chat(L, "[src.name]'s screen prints, \"[message]\"") + else return + else if(isbelly(card.loc)) + var/obj/belly/b = card.loc + if(b.owner.client) + to_chat(b.owner, "[src.name]'s screen prints, \"[message]\"") + else return + else if(istype(card.loc, /obj/item/device/pda)) + var/obj/item/device/pda/p = card.loc + if(isliving(p.loc)) + var/mob/living/L = p.loc + if(L.client) + to_chat(L, "[src.name]'s screen prints, \"[message]\"") + else return + else if(isbelly(p.loc)) + var/obj/belly/b = card.loc + if(b.owner.client) + to_chat(b.owner, "[src.name]'s screen prints, \"[message]\"") + else return + else return + else return + to_chat(src, "Your message was relayed.") + for (var/mob/G in player_list) + if (istype(G, /mob/new_player)) + continue + else if(isobserver(G) && G.is_preference_enabled(/datum/client_preference/ghost_ears)) + if(is_preference_enabled(/datum/client_preference/whisubtle_vis) || G.client.holder) + to_chat(G, "[src.name]'s screen prints, \"[message]\"")