NTOS PDA Hotpatch 1 (#15507)

* Revert "update fork"

This reverts commit 67263d524d, reversing
changes made to e159e4b737.

* Revert "Revert "update fork""

This reverts commit e678f6f6da.

* Update borg_ai_skin_datums.dm

* nt

* poke turdis

* Update ntpda_msg.dm
This commit is contained in:
ynot01
2022-08-29 15:59:04 -04:00
committed by GitHub
parent 76a63212ca
commit 330f30f12e
4 changed files with 84 additions and 24 deletions

View File

@@ -513,6 +513,7 @@ 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()

View File

@@ -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

View File

@@ -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()
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
/datum/computer_file/program/pdamessager/proc/receive_message(message, datum/computer_file/program/pdamessager/sender)
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"]
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)

View File

@@ -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>
)