mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
NTOS PDA Hotpatch 1 (#15507)
* Revert "update fork" This reverts commit67263d524d, reversing changes made toe159e4b737. * Revert "Revert "update fork"" This reverts commite678f6f6da. * Update borg_ai_skin_datums.dm * nt * poke turdis * Update ntpda_msg.dm
This commit is contained in:
@@ -513,7 +513,8 @@ SUBSYSTEM_DEF(job)
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = RPDA.all_components[MC_HDD]
|
||||
var/datum/computer_file/program/pdamessager/msgr = locate(/datum/computer_file/program/pdamessager) in hard_drive.stored_files
|
||||
msgr.username = living_mob.real_name
|
||||
|
||||
msgr.receiving = TRUE
|
||||
|
||||
SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep()
|
||||
|
||||
if(M.client.holder)
|
||||
|
||||
@@ -135,6 +135,14 @@
|
||||
var/datum/data_pda_msg/M = new(PDAsignal.format_target(), "[PDAsignal.data["name"]] ([PDAsignal.data["job"]])", PDAsignal.data["message"], PDAsignal.data["photo"])
|
||||
pda_msgs += M
|
||||
signal.logged = M
|
||||
else if(istype(signal, /datum/signal/subspace/messaging/ntospda))
|
||||
var/datum/computer_file/program/pdamessager/recipient = signal.data["targets"][1]
|
||||
GLOB.NTPDAMessages += list(list(signal.data["name"], recipient.username, signal.data["message"]))
|
||||
signal.logged = TRUE
|
||||
var/datum/signal/subspace/current = signal
|
||||
while (current) // Recursively mark logged so we know in the caller proc that it is logged and sent proper
|
||||
current.data["logged"] = TRUE
|
||||
current = current.original
|
||||
else if(istype(signal, /datum/signal/subspace/messaging/rc))
|
||||
var/datum/data_rc_msg/M = new(signal.data["rec_dpt"], signal.data["send_dpt"], signal.data["message"], signal.data["stamped"], signal.data["verified"], signal.data["priority"])
|
||||
signal.logged = M
|
||||
@@ -159,7 +167,7 @@
|
||||
/datum/signal/subspace/messaging
|
||||
frequency = FREQ_COMMON
|
||||
server_type = /obj/machinery/telecomms/message_server
|
||||
var/datum/logged
|
||||
var/logged = FALSE
|
||||
|
||||
/datum/signal/subspace/messaging/New(init_source, init_data)
|
||||
source = init_source
|
||||
@@ -207,6 +215,28 @@
|
||||
if ("[P.owner] ([P.ownjob])" in data["targets"])
|
||||
P.receive_message(src)
|
||||
|
||||
// NTOS PDA signal datum
|
||||
/datum/signal/subspace/messaging/ntospda
|
||||
var/datum/language/lang // Stores what language the message was written in.
|
||||
var/datum/computer_file/program/pdamessager/program
|
||||
|
||||
/datum/signal/subspace/messaging/ntospda/New(init_source,init_data)
|
||||
..()
|
||||
lang = data["language"] || /datum/language/common
|
||||
|
||||
/datum/signal/subspace/messaging/ntospda/proc/format_message(mob/living/listener)
|
||||
var/msg = data["message"]
|
||||
if(istype(listener) && !listener.has_language(lang))
|
||||
var/datum/language/langue = GLOB.language_datum_instances[lang]
|
||||
msg = langue.scramble(msg)
|
||||
return msg
|
||||
|
||||
/datum/signal/subspace/messaging/ntospda/broadcast()
|
||||
if (!logged) // Can only go through if a message server logs it
|
||||
return
|
||||
for(var/datum/computer_file/program/pdamessager/P in data["targets"])
|
||||
P.receive_message(src)
|
||||
|
||||
// Request Console signal datum
|
||||
/datum/signal/subspace/messaging/rc/broadcast()
|
||||
if (!logged) // Like /pda, only if logged
|
||||
|
||||
@@ -21,7 +21,7 @@ GLOBAL_LIST_EMPTY(NTPDAMessages)
|
||||
var/showing_messages = FALSE
|
||||
var/username = "ERRORNAME"
|
||||
var/ringtone = "beep"
|
||||
var/receiving = TRUE
|
||||
var/receiving = FALSE
|
||||
var/silent = FALSE
|
||||
var/next_message = 0
|
||||
var/next_keytry = 0
|
||||
@@ -77,32 +77,50 @@ GLOBAL_LIST_EMPTY(NTPDAMessages)
|
||||
computer.visible_message(span_danger("Recipient is no longer accepting messages."), null, null, 1)
|
||||
return FALSE
|
||||
|
||||
switch(recipient.receive_message(message, src))
|
||||
if(FALSE)
|
||||
computer.visible_message(span_danger("Your message could not be delivered."), null, null, 1)
|
||||
computer.visible_message(span_danger("Generic error."), null, null, 1)
|
||||
if(TRUE) // success
|
||||
computer.visible_message(span_notice("Message sent!"), null, null, 1)
|
||||
message_history += list(list(username, message, REF(src)))
|
||||
return TRUE
|
||||
if(2)
|
||||
computer.visible_message(span_danger("Your message could not be delivered."), null, null, 1)
|
||||
computer.visible_message(span_danger("Recipient has you blocked."), null, null, 1)
|
||||
if(3)
|
||||
computer.visible_message(span_danger("Your message could not be delivered."), null, null, 1)
|
||||
computer.visible_message(span_danger("Recipient is no longer accepting messages."), null, null, 1)
|
||||
var/fakemob = "ERROR"
|
||||
var/fakejob = "ERROR"
|
||||
var/language = /datum/language/common
|
||||
if(user)
|
||||
fakemob = user
|
||||
fakejob = user.job
|
||||
language = user.get_selected_language()
|
||||
|
||||
return FALSE
|
||||
var/datum/signal/subspace/messaging/ntospda/signal = new(src, list(
|
||||
"name" = "[fakemob]",
|
||||
"job" = "[fakejob]",
|
||||
"message" = message,
|
||||
"language" = language,
|
||||
"targets" = list(recipient),
|
||||
"program" = src,
|
||||
"logged" = FALSE
|
||||
))
|
||||
signal.send_to_receivers()
|
||||
|
||||
if (!signal.data["done"])
|
||||
computer.visible_message(span_danger("ERROR: Your message could not be processed by a broadcaster."), null, null, 1)
|
||||
return FALSE
|
||||
|
||||
if (!signal.data["logged"])
|
||||
computer.visible_message(span_danger("ERROR: Your message could not be processed by a messaging server."), null, null, 1)
|
||||
return FALSE
|
||||
|
||||
// Show ghosts (and admins)
|
||||
deadchat_broadcast(" sent an <b>NTPDA Message</b> ([username] --> [recipient.username]): [span_message(message)]", user, user, speaker_key = user.ckey)
|
||||
computer.visible_message(span_notice("Message sent!"), null, null, 1)
|
||||
message_history += list(list(username, message, REF(src), signal))
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/pdamessager/proc/receive_message(datum/signal/subspace/messaging/ntospda/signal)
|
||||
var/datum/computer_file/program/pdamessager/sender = signal.data["program"]
|
||||
var/message = signal.data["message"]
|
||||
|
||||
/datum/computer_file/program/pdamessager/proc/receive_message(message, datum/computer_file/program/pdamessager/sender)
|
||||
if(blocked_users.Find(sender))
|
||||
return 2
|
||||
|
||||
if(!receiving)
|
||||
return 3
|
||||
|
||||
message_history += list(list(sender.username, message, REF(sender)))
|
||||
GLOB.NTPDAMessages += list(list(sender.username, username, message))
|
||||
message_history += list(list(sender.username, message, REF(sender), signal))
|
||||
|
||||
if(!silent && istype(holder, /obj/item/computer_hardware/hard_drive))
|
||||
if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED))
|
||||
@@ -158,7 +176,7 @@ GLOBAL_LIST_EMPTY(NTPDAMessages)
|
||||
return
|
||||
|
||||
next_message = world.time + 1 SECONDS
|
||||
send_message(message, recipient)
|
||||
send_message(message, recipient, usr)
|
||||
var/mob/living/user = usr
|
||||
user.log_talk(message, LOG_CHAT, tag="as [username] to user [recipient.username]")
|
||||
return TRUE
|
||||
@@ -275,7 +293,14 @@ GLOBAL_LIST_EMPTY(NTPDAMessages)
|
||||
data["authed"] = authed
|
||||
data["ringtone"] = ringtone
|
||||
data["showing_messages"] = showing_messages
|
||||
data["message_history"] = message_history
|
||||
var/list/modified_history = list()
|
||||
for(var/M in message_history)
|
||||
var/datum/signal/subspace/messaging/ntospda/N = M[4]
|
||||
if(N)
|
||||
modified_history += list(list(M[1], N.format_message(user), M[3]))
|
||||
else
|
||||
modified_history += list(list(M[1], M[2], M[3]))
|
||||
data["message_history"] = modified_history
|
||||
|
||||
var/list/pdas = list()
|
||||
for(var/datum/computer_file/program/pdamessager/P in GLOB.NTPDAs)
|
||||
|
||||
@@ -63,7 +63,11 @@ export const NtosPdaMsg = (props, context) => {
|
||||
(
|
||||
<Box key={'nonadmin'+index}>
|
||||
<Button.Input
|
||||
content={'From '+msgdata[0]} />
|
||||
content={'From '+msgdata[0]}
|
||||
onCommit={(e, value) => act('PRG_sendmsg', {
|
||||
recipient: msgdata[2],
|
||||
message: value,
|
||||
})} />
|
||||
{', "'+msgdata[1]+'"'}
|
||||
</Box>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user