Fixed merge conflicts and errors, everything seems to work

This commit is contained in:
ShadowLarkens
2020-04-23 18:25:21 -07:00
parent 5d41534ab8
commit 1d655268a4
17 changed files with 77 additions and 587 deletions

View File

@@ -86,11 +86,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
signal.data["name"], signal.data["job"], signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"], DATA_NORMAL, signal.data["realname"], signal.data["vname"], DATA_NORMAL,
signal.data["compression"], signal.data["level"], signal.frequency, signal.data["compression"], signal.data["level"], signal.frequency,
<<<<<<< HEAD signal.data["verb"], forced_radios)
signal.data["verb"], signal.data["language"], forced_radios)
=======
signal.data["verb"])
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
/** #### - Simple Broadcast - #### **/ /** #### - Simple Broadcast - #### **/
@@ -115,14 +111,9 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
signal.data["vmask"], signal.data["vmessage"], signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"], signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"], signal.data["name"], signal.data["job"],
<<<<<<< HEAD
signal.data["realname"], signal.data["vname"], DATA_FAKE, signal.data["realname"], signal.data["vname"], DATA_FAKE,
signal.data["compression"], signal.data["level"], signal.frequency, signal.data["compression"], signal.data["level"], signal.frequency,
signal.data["verb"], signal.data["language"], forced_radios) signal.data["verb"], forced_radios)
=======
signal.data["realname"], signal.data["vname"], 4, signal.data["compression"], signal.data["level"], signal.frequency,
signal.data["verb"])
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
if(!message_delay) if(!message_delay)
message_delay = 1 message_delay = 1
@@ -279,30 +270,18 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
signal.data["vmask"], signal.data["vmessage"], signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"], signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"], signal.data["name"], signal.data["job"],
<<<<<<< HEAD
signal.data["realname"], signal.data["vname"], DATA_NORMAL, signal.data["realname"], signal.data["vname"], DATA_NORMAL,
signal.data["compression"], list(0), connection.frequency, signal.data["compression"], list(0), connection.frequency,
signal.data["verb"], signal.data["language"], forced_radios) signal.data["verb"], forced_radios)
=======
signal.data["realname"], signal.data["vname"],, signal.data["compression"], list(0), connection.frequency,
signal.data["verb"])
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
else else
if(intercept) if(intercept)
Broadcast_Message(signal.data["connection"], signal.data["mob"], Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"], signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"], signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"], signal.data["name"], signal.data["job"],
<<<<<<< HEAD
signal.data["realname"], signal.data["vname"], DATA_ANTAG, signal.data["realname"], signal.data["vname"], DATA_ANTAG,
signal.data["compression"], list(0), connection.frequency, signal.data["compression"], list(0), connection.frequency,
signal.data["verb"], signal.data["language"], forced_radios) signal.data["verb"], forced_radios)
=======
signal.data["realname"], signal.data["vname"], 3, signal.data["compression"], list(0), connection.frequency,
signal.data["verb"])
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
/** /**
@@ -362,16 +341,10 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
**/ **/
/proc/Broadcast_Message(var/datum/radio_frequency/connection, var/mob/M, /proc/Broadcast_Message(var/datum/radio_frequency/connection, var/mob/M,
<<<<<<< HEAD
var/vmask, var/vmessage, var/obj/item/device/radio/radio,
var/message, var/name, var/job, var/realname, var/vname,
var/data, var/compression, var/list/level, var/freq, var/verbage = "says",
var/datum/language/speaking = null, var/list/forced_radios)
=======
var/vmask, var/list/vmessage_pieces, var/obj/item/device/radio/radio, var/vmask, var/list/vmessage_pieces, var/obj/item/device/radio/radio,
var/list/message_pieces, var/name, var/job, var/realname, var/vname, var/list/message_pieces, var/name, var/job, var/realname, var/vname,
var/data, var/compression, var/list/level, var/freq, var/verbage = "says") var/data, var/compression, var/list/level, var/freq, var/verbage = "says",
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956) var/list/forced_radios)
/* ###### Prepare the radio connection ###### */ /* ###### Prepare the radio connection ###### */
@@ -568,13 +541,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
return 1 return 1
<<<<<<< HEAD /proc/Broadcast_SimpleMessage(var/source, var/frequency, list/message_pieces, var/data, var/mob/M, var/compression, var/level, var/list/forced_radios)
/proc/Broadcast_SimpleMessage(var/source, var/frequency, var/text, var/data, var/mob/M, var/compression, var/level, var/list/forced_radios)
=======
/proc/Broadcast_SimpleMessage(var/source, var/frequency, list/message_pieces, var/data, var/mob/M, var/compression, var/level)
var/text = multilingual_to_message(message_pieces) var/text = multilingual_to_message(message_pieces)
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
/* ###### Prepare the radio connection ###### */ /* ###### Prepare the radio connection ###### */
if(!M) if(!M)

View File

@@ -216,7 +216,7 @@ var/global/list/default_medbay_channels = list(
return can_admin_interact() return can_admin_interact()
/obj/item/device/radio/proc/text_wires() /obj/item/device/radio/proc/text_wires()
if(b_stat) if (b_stat)
return wires.GetInteractWindow() return wires.GetInteractWindow()
return return
@@ -244,31 +244,31 @@ var/global/list/default_medbay_channels = list(
return TRUE return TRUE
usr.set_machine(src) usr.set_machine(src)
if(href_list["track"]) if (href_list["track"])
var/mob/target = locate(href_list["track"]) var/mob/target = locate(href_list["track"])
var/mob/living/silicon/ai/A = locate(href_list["track2"]) var/mob/living/silicon/ai/A = locate(href_list["track2"])
if(A && target) if(A && target)
A.ai_actual_track(target) A.ai_actual_track(target)
. = 1 . = 1
else if(href_list["freq"]) else if (href_list["freq"])
var/new_frequency = (frequency + text2num(href_list["freq"])) var/new_frequency = (frequency + text2num(href_list["freq"]))
if((new_frequency < PUBLIC_LOW_FREQ || new_frequency > PUBLIC_HIGH_FREQ)) if ((new_frequency < PUBLIC_LOW_FREQ || new_frequency > PUBLIC_HIGH_FREQ))
new_frequency = sanitize_frequency(new_frequency) new_frequency = sanitize_frequency(new_frequency)
set_frequency(new_frequency) set_frequency(new_frequency)
if(hidden_uplink) if(hidden_uplink)
if(hidden_uplink.check_trigger(usr, frequency, traitor_frequency)) if(hidden_uplink.check_trigger(usr, frequency, traitor_frequency))
usr << browse(null, "window=radio") usr << browse(null, "window=radio")
. = 1 . = 1
else if(href_list["talk"]) else if (href_list["talk"])
ToggleBroadcast() ToggleBroadcast()
. = 1 . = 1
else if(href_list["listen"]) else if (href_list["listen"])
var/chan_name = href_list["ch_name"] var/chan_name = href_list["ch_name"]
if(!chan_name) if (!chan_name)
ToggleReception() ToggleReception()
else else
if(channels[chan_name] & FREQ_LISTENING) if (channels[chan_name] & FREQ_LISTENING)
channels[chan_name] &= ~FREQ_LISTENING channels[chan_name] &= ~FREQ_LISTENING
else else
channels[chan_name] |= FREQ_LISTENING channels[chan_name] |= FREQ_LISTENING
@@ -287,18 +287,13 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels) //BS12 EDIT /obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels) //BS12 EDIT
var/datum/radio_frequency/connection = null var/datum/radio_frequency/connection = null
if(channel && channels && channels.len > 0) if(channel && channels && channels.len > 0)
<<<<<<< HEAD
if (channel == "department") if (channel == "department")
=======
if(channel == "department")
//to_world("DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\"")
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
channel = channels[1] channel = channels[1]
connection = secure_radio_connections[channel] connection = secure_radio_connections[channel]
else else
connection = radio_connection connection = radio_connection
channel = null channel = null
if(!istype(connection)) if (!istype(connection))
return return
if(!LAZYLEN(zlevels)) if(!LAZYLEN(zlevels))
@@ -308,13 +303,8 @@ var/global/list/default_medbay_channels = list(
A.SetName(from) A.SetName(from)
Broadcast_Message(connection, A, Broadcast_Message(connection, A,
0, "*garbled automated announcement*", src, 0, "*garbled automated announcement*", src,
<<<<<<< HEAD
message, from, "Automated Announcement", from, "synthesized voice",
4, 0, zlevels, connection.frequency, "states")
=======
message_to_multilingual(message), from, "Automated Announcement", from, "synthesized voice", message_to_multilingual(message), from, "Automated Announcement", from, "synthesized voice",
4, 0, list(0), connection.frequency, "states") 4, 0, zlevels, connection.frequency, "states")
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
// Interprets the message mode when talking into a radio, possibly returning a connection datum // Interprets the message mode when talking into a radio, possibly returning a connection datum
/obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, list/message_pieces, message_mode) /obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, list/message_pieces, message_mode)
@@ -324,10 +314,10 @@ var/global/list/default_medbay_channels = list(
// Otherwise, if a channel is specified, look for it. // Otherwise, if a channel is specified, look for it.
if(channels && channels.len > 0) if(channels && channels.len > 0)
if(message_mode == "department") // Department radio shortcut if (message_mode == "department") // Department radio shortcut
message_mode = channels[1] message_mode = channels[1]
if(channels[message_mode]) // only broadcast if the channel is set on if (channels[message_mode]) // only broadcast if the channel is set on
return secure_radio_connections[message_mode] return secure_radio_connections[message_mode]
// If we were to send to a channel we don't have, drop it. // If we were to send to a channel we don't have, drop it.
@@ -340,7 +330,8 @@ var/global/list/default_medbay_channels = list(
if(!M || !message_pieces) if(!M || !message_pieces)
return FALSE return FALSE
if(istype(M)) M.trigger_aiming(TARGET_CAN_RADIO) if(istype(M))
M.trigger_aiming(TARGET_CAN_RADIO)
// Uncommenting this. To the above comment: // Uncommenting this. To the above comment:
// The permacell radios aren't suppose to be able to transmit, this isn't a bug and this "fix" is just making radio wires useless. -Giacom // The permacell radios aren't suppose to be able to transmit, this isn't a bug and this "fix" is just making radio wires useless. -Giacom
@@ -369,15 +360,11 @@ var/global/list/default_medbay_channels = list(
if(RADIO_CONNECTION_NON_SUBSPACE) if(RADIO_CONNECTION_NON_SUBSPACE)
return TRUE return TRUE
if(!istype(message_mode, /datum/radio_frequency)) //if not a special case, it should be returning a radio connection if(!istype(message_mode, /datum/radio_frequency))
return FALSE return FALSE
<<<<<<< HEAD
var/pos_z = get_z(src)
=======
var/datum/radio_frequency/connection = message_mode var/datum/radio_frequency/connection = message_mode
var/turf/position = get_turf(src) var/pos_z = get_z(src)
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
//#### Tagging the signal with all appropriate identity values ####// //#### Tagging the signal with all appropriate identity values ####//
@@ -393,24 +380,24 @@ var/global/list/default_medbay_channels = list(
var/jobname // the mob's "job" var/jobname // the mob's "job"
// --- Human: use their actual job --- // --- Human: use their actual job ---
if(ishuman(M)) if (ishuman(M))
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
jobname = H.get_assignment() jobname = H.get_assignment()
// --- Carbon Nonhuman --- // --- Carbon Nonhuman ---
else if(iscarbon(M)) // Nonhuman carbon mob else if (iscarbon(M)) // Nonhuman carbon mob
jobname = "No id" jobname = "No id"
// --- AI --- // --- AI ---
else if(isAI(M)) else if (isAI(M))
jobname = "AI" jobname = "AI"
// --- Cyborg --- // --- Cyborg ---
else if(isrobot(M)) else if (isrobot(M))
jobname = "Cyborg" jobname = "Cyborg"
// --- Personal AI (pAI) --- // --- Personal AI (pAI) ---
else if(istype(M, /mob/living/silicon/pai)) else if (istype(M, /mob/living/silicon/pai))
jobname = "Personal AI" jobname = "Personal AI"
// --- Unidentifiable mob --- // --- Unidentifiable mob ---
@@ -421,7 +408,7 @@ var/global/list/default_medbay_channels = list(
// --- Modifications to the mob's identity --- // --- Modifications to the mob's identity ---
// The mob is disguising their identity: // The mob is disguising their identity:
if(ishuman(M) && M.GetVoice() != real_name) if (ishuman(M) && M.GetVoice() != real_name)
displayname = M.GetVoice() displayname = M.GetVoice()
jobname = "Unknown" jobname = "Unknown"
voicemask = 1 voicemask = 1
@@ -438,7 +425,7 @@ var/global/list/default_medbay_channels = list(
"name" = displayname, // the mob's display name "name" = displayname, // the mob's display name
"job" = jobname, // the mob's job "job" = jobname, // the mob's job
"key" = mobkey, // the mob's key "key" = mobkey, // the mob's key
"vmessage" = pick(M.speak_emote), // the message to display if the voice wasn't understood "vmessage" = message_to_multilingual(pick(M.speak_emote)), // the message to display if the voice wasn't understood
"vname" = M.voice_name, // the name to display if the voice wasn't understood "vname" = M.voice_name, // the name to display if the voice wasn't understood
"vmask" = voicemask, // 1 if the mob is using a voice gas mask "vmask" = voicemask, // 1 if the mob is using a voice gas mask
@@ -447,7 +434,7 @@ var/global/list/default_medbay_channels = list(
// Other tags: // Other tags:
"compression" = rand(45,50), // compressed radio signal "compression" = rand(45,50), // compressed radio signal
"message" = message, // the actual sent message "message" = message_pieces, // the actual sent message
"connection" = connection, // the radio connection to use "connection" = connection, // the radio connection to use
"radio" = src, // stores the radio used for transmission "radio" = src, // stores the radio used for transmission
"slow" = 0, // how much to sleep() before broadcasting - simulates net lag "slow" = 0, // how much to sleep() before broadcasting - simulates net lag
@@ -456,7 +443,6 @@ var/global/list/default_medbay_channels = list(
"server" = null, // the last server to log this signal "server" = null, // the last server to log this signal
"reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery "reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery
"level" = pos_z, // The source's z level "level" = pos_z, // The source's z level
"language" = speaking,
"verb" = verb "verb" = verb
) )
signal.frequency = connection.frequency // Quick frequency set signal.frequency = connection.frequency // Quick frequency set
@@ -490,48 +476,9 @@ var/global/list/default_medbay_channels = list(
return FALSE return FALSE
// First, we want to generate a new radio signal // First, we want to generate a new radio signal
<<<<<<< HEAD
signal.transmission_method = TRANSMISSION_SUBSPACE signal.transmission_method = TRANSMISSION_SUBSPACE
//#### Sending the signal to all subspace receivers ####// //#### Sending the signal to all subspace receivers ####//
=======
var/datum/signal/signal = new
signal.transmission_method = 2 // 2 would be a subspace transmission.
// transmission_method could probably be enumerated through #define. Would be neater.
// --- Finally, tag the actual signal with the appropriate values ---
signal.data = list(
// Identity-associated tags:
"mob" = M, // store a reference to the mob
"mobtype" = M.type, // the mob's type
"realname" = real_name, // the mob's real name
"name" = displayname, // the mob's display name
"job" = jobname, // the mob's job
"key" = mobkey, // the mob's key
"vmessage" = pick(M.speak_emote), // the message to display if the voice wasn't understood
"vname" = M.voice_name, // the name to display if the voice wasn't understood
"vmask" = voicemask, // 1 if the mob is using a voice gas mask
// We store things that would otherwise be kept in the actual mob
// so that they can be logged even AFTER the mob is deleted or something
// Other tags:
"compression" = rand(45,50), // compressed radio signal
"message" = message_pieces, // the actual sent message
"connection" = connection, // the radio connection to use
"radio" = src, // stores the radio used for transmission
"slow" = 0, // how much to sleep() before broadcasting - simulates net lag
"traffic" = 0, // dictates the total traffic sum that the signal went through
"type" = 0, // determines what type of radio input it is: normal broadcast
"server" = null, // the last server to log this signal
"reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery
"level" = position.z, // The source's z level
"verb" = verb
)
signal.frequency = connection.frequency // Quick frequency set
//#### Sending the signal to all subspace receivers ####//
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
for(var/obj/machinery/telecomms/receiver/R in telecomms_list) for(var/obj/machinery/telecomms/receiver/R in telecomms_list)
R.receive_signal(signal) R.receive_signal(signal)
@@ -547,20 +494,6 @@ var/global/list/default_medbay_channels = list(
else if(adhoc_fallback) //Less huzzah, we have to fallback else if(adhoc_fallback) //Less huzzah, we have to fallback
to_chat(loc, "<span class='warning'>\The [src] pings as it falls back to local radio transmission.</span>") to_chat(loc, "<span class='warning'>\The [src] pings as it falls back to local radio transmission.</span>")
subspace_transmission = FALSE subspace_transmission = FALSE
<<<<<<< HEAD
=======
return Broadcast_Message(connection, M, voicemask, pick(M.speak_emote),
src, message_pieces, displayname, jobname, real_name, M.voice_name,
signal.transmission_method, signal.data["compression"], GetConnectedZlevels(position.z), connection.frequency,verb)
/* ###### Intercoms and station-bounced radios ###### */
var/filter_type = 2
/* --- Intercoms can only broadcast to other intercoms, but bounced radios can broadcast to bounced radios and intercoms --- */
if(istype(src, /obj/item/device/radio/intercom))
filter_type = 1
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
else //Oh well else //Oh well
return FALSE return FALSE
@@ -578,25 +511,9 @@ var/global/list/default_medbay_channels = list(
for(var/obj/machinery/telecomms/receiver/R in telecomms_list) for(var/obj/machinery/telecomms/receiver/R in telecomms_list)
R.receive_signal(signal) R.receive_signal(signal)
<<<<<<< HEAD
// Allinone can act as receivers. // Allinone can act as receivers.
for(var/obj/machinery/telecomms/allinone/R in telecomms_list) for(var/obj/machinery/telecomms/allinone/R in telecomms_list)
R.receive_signal(signal) R.receive_signal(signal)
=======
"compression" = 0, // uncompressed radio signal
"message" = message_pieces, // the actual sent message
"connection" = connection, // the radio connection to use
"radio" = src, // stores the radio used for transmission
"slow" = 0,
"traffic" = 0,
"type" = 0,
"server" = null,
"reject" = 0,
"level" = position.z,
"verb" = verb
)
signal.frequency = connection.frequency // Quick frequency set
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
for(var/obj/machinery/telecomms/receiver/R in telecomms_list) for(var/obj/machinery/telecomms/receiver/R in telecomms_list)
R.receive_signal(signal) R.receive_signal(signal)
@@ -610,45 +527,21 @@ var/global/list/default_medbay_channels = list(
//Nothing handled any sort of remote radio-ing and returned before now, just squawk on this zlevel. //Nothing handled any sort of remote radio-ing and returned before now, just squawk on this zlevel.
return Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), return Broadcast_Message(connection, M, voicemask, pick(M.speak_emote),
<<<<<<< HEAD src, message_pieces, displayname, jobname, real_name, M.voice_name,
src, message, displayname, jobname, real_name, M.voice_name, filter_type, signal.data["compression"], using_map.get_map_levels(pos_z), connection.frequency, verb)
filter_type, signal.data["compression"], using_map.get_map_levels(pos_z), connection.frequency, verb, speaking)
=======
src, message_pieces, displayname, jobname, real_name, M.voice_name,
filter_type, signal.data["compression"], GetConnectedZlevels(position.z), connection.frequency, verb)
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
/obj/item/device/radio/hear_talk(mob/M, list/message_pieces, verb) /obj/item/device/radio/hear_talk(mob/M as mob, list/message_pieces, var/verb = "says")
if(broadcasting) if(broadcasting)
if(get_dist(src, M) <= canhear_range) if(get_dist(src, M) <= canhear_range)
talk_into(M, message_pieces, null, verb) talk_into(M, message_pieces, null, verb)
<<<<<<< HEAD
=======
/*
/obj/item/device/radio/proc/accept_rad(obj/item/device/radio/R as obj, message)
if((R.frequency == frequency && message))
return TRUE
else if
else
return null
return
*/
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
/obj/item/device/radio/proc/receive_range(freq, level) /obj/item/device/radio/proc/receive_range(freq, level)
// check if this radio can receive on the given frequency, and if so, // check if this radio can receive on the given frequency, and if so,
// what the range is in which mobs will hear the radio // what the range is in which mobs will hear the radio
// returns: -1 if can't receive, range otherwise // returns: -1 if can't receive, range otherwise
<<<<<<< HEAD
=======
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
if(wires.IsIndexCut(WIRE_RECEIVE)) if(wires.IsIndexCut(WIRE_RECEIVE))
return -1 return -1
if(!listening) if(!listening)
@@ -665,20 +558,20 @@ var/global/list/default_medbay_channels = list(
if(freq in CENT_FREQS) if(freq in CENT_FREQS)
if(!(src.centComm))//Checks to see if it's allowed on that frequency, based on the encryption keys if(!(src.centComm))//Checks to see if it's allowed on that frequency, based on the encryption keys
return -1 return -1
if(!on) if (!on)
return -1 return -1
if(!freq) //recieved on main frequency if (!freq) //recieved on main frequency
if(!listening) if (!listening)
return -1 return -1
else else
var/accept = (freq==frequency && listening) var/accept = (freq==frequency && listening)
if(!accept) if (!accept)
for (var/ch_name in channels) for (var/ch_name in channels)
var/datum/radio_frequency/RF = secure_radio_connections[ch_name] var/datum/radio_frequency/RF = secure_radio_connections[ch_name]
if(RF && RF.frequency==freq && (channels[ch_name]&FREQ_LISTENING)) if (RF && RF.frequency==freq && (channels[ch_name]&FREQ_LISTENING))
accept = 1 accept = 1
break break
if(!accept) if (!accept)
return -1 return -1
return canhear_range return canhear_range
@@ -691,8 +584,8 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/examine(mob/user) /obj/item/device/radio/examine(mob/user)
. = ..() . = ..()
if((in_range(src, user) || loc == user)) if ((in_range(src, user) || loc == user))
if(b_stat) if (b_stat)
user.show_message("<span class='notice'>\The [src] can be attached and modified!</span>") user.show_message("<span class='notice'>\The [src] can be attached and modified!</span>")
else else
user.show_message("<span class='notice'>\The [src] can not be modified or attached!</span>") user.show_message("<span class='notice'>\The [src] can not be modified or attached!</span>")
@@ -701,11 +594,11 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob)
..() ..()
user.set_machine(src) user.set_machine(src)
if(!W.is_screwdriver()) if (!W.is_screwdriver())
return return
b_stat = !( b_stat ) b_stat = !( b_stat )
if(!istype(src, /obj/item/device/radio/beacon)) if(!istype(src, /obj/item/device/radio/beacon))
if(b_stat) if (b_stat)
user.show_message("<span class='notice'>\The [src] can now be attached and modified!</span>") user.show_message("<span class='notice'>\The [src] can now be attached and modified!</span>")
else else
user.show_message("<span class='notice'>\The [src] can no longer be modified or attached!</span>") user.show_message("<span class='notice'>\The [src] can no longer be modified or attached!</span>")
@@ -745,7 +638,7 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/borg/talk_into() /obj/item/device/radio/borg/talk_into()
. = ..() . = ..()
if(isrobot(src.loc)) if (isrobot(src.loc))
var/mob/living/silicon/robot/R = src.loc var/mob/living/silicon/robot/R = src.loc
var/datum/robot_component/C = R.components["radio"] var/datum/robot_component/C = R.components["radio"]
R.cell_use_power(C.active_usage) R.cell_use_power(C.active_usage)
@@ -753,7 +646,7 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/borg/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/device/radio/borg/attackby(obj/item/weapon/W as obj, mob/user as mob)
// ..() // ..()
user.set_machine(src) user.set_machine(src)
if(!(W.is_screwdriver() || istype(W, /obj/item/device/encryptionkey))) if (!(W.is_screwdriver() || istype(W, /obj/item/device/encryptionkey)))
return return
if(W.is_screwdriver()) if(W.is_screwdriver())
@@ -827,7 +720,7 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/borg/Topic(href, href_list) /obj/item/device/radio/borg/Topic(href, href_list)
if(..()) if(..())
return TRUE return TRUE
if(href_list["mode"]) if (href_list["mode"])
var/enable_subspace_transmission = text2num(href_list["mode"]) var/enable_subspace_transmission = text2num(href_list["mode"])
if(enable_subspace_transmission != subspace_transmission) if(enable_subspace_transmission != subspace_transmission)
subspace_transmission = !subspace_transmission subspace_transmission = !subspace_transmission
@@ -841,7 +734,7 @@ var/global/list/default_medbay_channels = list(
else else
recalculateChannels() recalculateChannels()
. = 1 . = 1
if(href_list["shutup"]) // Toggle loudspeaker mode, AKA everyone around you hearing your radio. if (href_list["shutup"]) // Toggle loudspeaker mode, AKA everyone around you hearing your radio.
var/do_shut_up = text2num(href_list["shutup"]) var/do_shut_up = text2num(href_list["shutup"])
if(do_shut_up != shut_up) if(do_shut_up != shut_up)
shut_up = !shut_up shut_up = !shut_up

View File

@@ -60,12 +60,13 @@
<b>Function:</b> Resizes the host whenever specific verbal command is received<BR>"} <b>Function:</b> Resizes the host whenever specific verbal command is received<BR>"}
return dat return dat
/obj/item/weapon/implant/sizecontrol/hear_talk(mob/M, msg) /obj/item/weapon/implant/sizecontrol/hear_talk(mob/M, list/message_pieces)
if(M == imp_in) if(M == imp_in)
return return
if(owner) if(owner)
if(M != owner) if(M != owner)
return return
var/msg = multilingual_to_message(message_pieces)
if(findtext(msg,"ignore")) if(findtext(msg,"ignore"))
return return
var/list/replacechars = list("&#39;" = "",">" = "","<" = "","(" = "",")" = "", "~" = "") var/list/replacechars = list("&#39;" = "",">" = "","<" = "","(" = "",")" = "", "~" = "")

View File

@@ -741,11 +741,7 @@
twitch_v, vomit, whimper, wink, yawn. Prometheans: squish Synthetics: beep, buzz, dwoop, yes, no, rcough, rsneeze, ping. Skrell: warble</span>") twitch_v, vomit, whimper, wink, yawn. Prometheans: squish Synthetics: beep, buzz, dwoop, yes, no, rcough, rsneeze, ping. Skrell: warble</span>")
else else
<<<<<<< HEAD to_chat(src, "<span class='filter_say'><font color='blue'>Unusable emote '[act]'. Say *help or *vhelp for a list.</font></span>") //VOREStation Edit, mention *vhelp for Virgo-specific emotes located in emote_vr.dm.
to_chat(src, "<font color='blue'>Unusable emote '[act]'. Say *help or *vhelp for a list.</font>") //VOREStation Edit, mention *vhelp for Virgo-specific emotes located in emote_vr.dm.
=======
to_chat(src, "<span class='filter_say'><font color='blue'>Unusable emote '[act]'. Say *help for a list.</font></span>")
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
if(message) if(message)
custom_emote(m_type,message) custom_emote(m_type,message)

View File

@@ -2,12 +2,7 @@
if(name != GetVoice()) if(name != GetVoice())
return " (as [get_id_name("Unknown")])" return " (as [get_id_name("Unknown")])"
<<<<<<< HEAD
message = sanitize_or_reflect(message,src) //VOREStation Edit - Reflect too-long messages, within reason
..(message, alt_name = alt_name, whispering = whispering)
=======
return ..() return ..()
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
/mob/living/carbon/human/proc/forcesay(list/append) /mob/living/carbon/human/proc/forcesay(list/append)
if(stat == CONSCIOUS) if(stat == CONSCIOUS)
@@ -61,21 +56,6 @@
if(!speaking) if(!speaking)
if(istype(other, /mob/living/carbon/alien/diona)) if(istype(other, /mob/living/carbon/alien/diona))
if(other.languages.len >= 2) //They've sucked down some blood and can speak common now. if(other.languages.len >= 2) //They've sucked down some blood and can speak common now.
<<<<<<< HEAD
return 1
if (istype(other, /mob/living/silicon))
return 1
if (istype(other, /mob/living/carbon/brain))
return 1
if (istype(other, /mob/living/simple_mob/slime))
return 1
//This is already covered by mob/say_understands()
//if (istype(other, /mob/living/simple_mob))
// if((other.universal_speak && !speaking) || src.universal_speak || src.universal_understand)
// return 1
// return 0
=======
return TRUE return TRUE
if(issilicon(other)) if(issilicon(other))
return TRUE return TRUE
@@ -83,7 +63,6 @@
return TRUE return TRUE
if(isslime(other)) if(isslime(other))
return TRUE return TRUE
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
return ..() return ..()

View File

@@ -86,29 +86,6 @@ proc/get_radio_key_from_channel(var/channel)
var/whispering = message_data[3] var/whispering = message_data[3]
. = 0 . = 0
<<<<<<< HEAD
if((HULK in mutations) && health >= 25 && length(message))
message = "[uppertext(message)]!!!"
verb = pick("yells","roars","hollers")
whispering = 0
. = 1
if(slurring)
message = slur(message)
verb = pick("slobbers","slurs")
. = 1
if(stuttering)
message = stutter(message)
verb = pick("stammers","stutters")
. = 1
//VOREStation Edit Start
if(muffled)
verb = pick("muffles")
whispering = 1
. = 1
//VOREStation Edit End
message_data[1] = message
=======
// Technically this rerolls the verb for as many say pieces as there are. _shrug_ // Technically this rerolls the verb for as many say pieces as there are. _shrug_
for(var/datum/multilingual_say_piece/S in message_pieces) for(var/datum/multilingual_say_piece/S in message_pieces)
if(S.speaking && (S.speaking.flags & NO_STUTTER || S.speaking.flags & SIGNLANG)) if(S.speaking && (S.speaking.flags & NO_STUTTER || S.speaking.flags & SIGNLANG))
@@ -127,9 +104,14 @@ proc/get_radio_key_from_channel(var/channel)
S.message = stutter(S.message) S.message = stutter(S.message)
verb = pick("stammers","stutters") verb = pick("stammers","stutters")
. = 1 . = 1
//VOREStation Edit Start
if(muffled)
verb = pick("muffles")
whispering = 1
. = 1
//VOREStation Edit End
message_data[1] = message_pieces message_data[1] = message_pieces
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
message_data[2] = verb message_data[2] = verb
message_data[3] = whispering message_data[3] = whispering
@@ -282,7 +264,6 @@ proc/get_radio_key_from_channel(var/channel)
message_range = 1 message_range = 1
sound_vol *= 0.5 sound_vol *= 0.5
<<<<<<< HEAD
//VOREStation edit - allows for custom say verbs, overriding all other say-verb types- e.g. "says loudly" instead of "shouts" //VOREStation edit - allows for custom say verbs, overriding all other say-verb types- e.g. "says loudly" instead of "shouts"
//You'll still stammer if injured or slur if drunk, but it won't have those specific words //You'll still stammer if injured or slur if drunk, but it won't have those specific words
var/ending = copytext(message, length(message)) var/ending = copytext(message, length(message))
@@ -297,22 +278,11 @@ proc/get_radio_key_from_channel(var/channel)
verb = "[custom_say]" verb = "[custom_say]"
//VOREStation edit ends //VOREStation edit ends
//Handle nonverbal and sign languages here
if (speaking)
if (speaking.flags & SIGNLANG)
log_say("(SIGN) [message]", src)
return say_signlang(message, pick(speaking.signlang_verb), speaking)
if (speaking.flags & NONVERBAL)
if (prob(30))
src.custom_emote(1, "[pick(speaking.signlang_verb)].")
=======
//Handle nonverbal languages here //Handle nonverbal languages here
for(var/datum/multilingual_say_piece/S in message_pieces) for(var/datum/multilingual_say_piece/S in message_pieces)
if(S.speaking.flags & NONVERBAL) if(S.speaking.flags & NONVERBAL)
if(prob(30)) if(prob(30))
custom_emote(1, "[pick(S.speaking.signlang_verb)].") custom_emote(1, "[pick(S.speaking.signlang_verb)].")
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
//These will contain the main receivers of the message //These will contain the main receivers of the message
var/list/listening = list() var/list/listening = list()

View File

@@ -120,13 +120,8 @@
m_type = 1 m_type = 1
if("law") if("law")
<<<<<<< HEAD if(istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9
if (istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9
message = "shows its legal authorization barcode."
=======
if(istype(module,/obj/item/weapon/robot_module/robot/security))
message = "<b>[src]</b> shows its legal authorization barcode." message = "<b>[src]</b> shows its legal authorization barcode."
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
playsound(src.loc, 'sound/voice/biamthelaw.ogg', 50, 0) playsound(src.loc, 'sound/voice/biamthelaw.ogg', 50, 0)
m_type = 2 m_type = 2
@@ -134,13 +129,8 @@
to_chat(src, "You are not THE LAW, pal.") to_chat(src, "You are not THE LAW, pal.")
if("halt") if("halt")
<<<<<<< HEAD if(istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9
if (istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9
message = "<B>'s</B> speakers skreech, \"Halt! Security!\"."
=======
if(istype(module,/obj/item/weapon/robot_module/robot/security))
message = "<b>[src]</b> <B>'s</B> speakers skreech, \"Halt! Security!\"." message = "<b>[src]</b> <B>'s</B> speakers skreech, \"Halt! Security!\"."
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
playsound(src.loc, 'sound/voice/halt.ogg', 50, 0) playsound(src.loc, 'sound/voice/halt.ogg', 50, 0)
m_type = 2 m_type = 2

View File

@@ -61,23 +61,6 @@
var/obj/machinery/hologram/holopad/T = src.holo var/obj/machinery/hologram/holopad/T = src.holo
if(T && T.masters[src])//If there is a hologram and its master is the user. if(T && T.masters[src])//If there is a hologram and its master is the user.
<<<<<<< HEAD
//Human-like, sorta, heard by those who understand humans.
var/rendered_a
//Speech distorted, heard by those who do not understand AIs.
var/message_stars = stars(message)
var/rendered_b
if(speaking)
rendered_a = "<span class='game say'><span class='name'>[name]</span> [speaking.format_message(message, verb)]</span>"
rendered_b = "<span class='game say'><span class='name'>[voice_name]</span> [speaking.format_message(message_stars, verb)]</span>"
to_chat(src, "<i><span class='game say'>Holopad transmitted, <span class='name'>[real_name]</span> [speaking.format_message(message, verb)]</span></i>") //The AI can "hear" its own message.
else
rendered_a = "<span class='game say'><span class='name'>[name]</span> [verb], <span class='message'>\"[message]\"</span></span>"
rendered_b = "<span class='game say'><span class='name'>[voice_name]</span> [verb], <span class='message'>\"[message_stars]\"</span></span>"
to_chat(src, "<i><span class='game say'>Holopad transmitted, <span class='name'>[real_name]</span> [verb], <span class='message'><span class='body'>\"[message]\"</span></span></span></i>") //The AI can "hear" its own message.
=======
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
var/list/listeners = get_mobs_and_objs_in_view_fast(get_turf(T), world.view) var/list/listeners = get_mobs_and_objs_in_view_fast(get_turf(T), world.view)
var/list/listening = listeners["mobs"] var/list/listening = listeners["mobs"]
var/list/listening_obj = listeners["objs"] var/list/listening_obj = listeners["objs"]

View File

@@ -1,4 +1,3 @@
<<<<<<< HEAD
// Parrots can talk, and may repeat things it hears. // Parrots can talk, and may repeat things it hears.
/mob/living/simple_mob/animal/passive/bird/parrot /mob/living/simple_mob/animal/passive/bird/parrot
name = "parrot" name = "parrot"
@@ -42,11 +41,11 @@
return say(message) return say(message)
// Ugly saycode so parrots can use their headsets. // Ugly saycode so parrots can use their headsets.
/mob/living/simple_mob/animal/passive/bird/parrot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) /mob/living/simple_mob/animal/passive/bird/parrot/handle_message_mode(message_mode, message, verb, used_radios)
..() ..()
if(message_mode) if(message_mode)
if(my_headset && istype(my_headset, /obj/item/device/radio)) if(my_headset && istype(my_headset, /obj/item/device/radio))
my_headset.talk_into(src, message, message_mode, verb, speaking) my_headset.talk_into(src, message, message_mode, verb)
used_radios += my_headset used_radios += my_headset
// Clicked on while holding an object. // Clicked on while holding an object.
@@ -250,257 +249,4 @@
if(holder.stat || !holder.say_list || !message || speaker == holder) if(holder.stat || !holder.say_list || !message || speaker == holder)
return return
var/datum/say_list/S = holder.say_list var/datum/say_list/S = holder.say_list
=======
// Parrots can talk, and may repeat things it hears.
/mob/living/simple_mob/animal/passive/bird/parrot
name = "parrot"
description_info = "You can give it a headset by clicking on it with a headset. \
To remove it, click the bird while on grab intent."
has_langs = list("Galactic Common", "Bird")
ai_holder_type = /datum/ai_holder/simple_mob/passive/parrot
// A headset, so that talking parrots can yell at the crew over comms.
// If set to a type, on initialize it will be instantiated into that type.
var/obj/item/device/radio/headset/my_headset = null
// Say list
/datum/say_list/bird/poly
speak = list(
"Poly wanna cracker!",
"Check the singulo, you chucklefucks!",
"Wire the solars, you lazy bums!",
"WHO TOOK THE DAMN HARDSUITS?",
"OH GOD ITS FREE CALL THE SHUTTLE",
"Danger! Crystal hyperstructure instability!",
"CRYSTAL DELAMINATION IMMINENT.",
"Tweet tweet, I'm a Teshari.",
"Chitters.",
"Meteors have been detected on a collision course with the station!"
)
// Lets the AI use headsets.
// Player-controlled parrots will need to do it manually.
/mob/living/simple_mob/animal/passive/bird/parrot/ISay(message)
if(my_headset && prob(50))
var/list/keys = list()
for(var/channel in my_headset.channels)
var/key = get_radio_key_from_channel(channel)
if(key)
keys += key
if(keys.len)
var/key_used = pick(keys)
return say("[key_used] [message]")
return say(message)
// Ugly saycode so parrots can use their headsets.
/mob/living/simple_mob/animal/passive/bird/parrot/handle_message_mode(message_mode, message, verb, speaking, used_radios)
..()
if(message_mode)
if(my_headset && istype(my_headset, /obj/item/device/radio))
my_headset.talk_into(src, message, message_mode, verb, speaking)
used_radios += my_headset
// Clicked on while holding an object.
/mob/living/simple_mob/animal/passive/bird/parrot/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/device/radio/headset))
give_headset(I, user)
return
return ..()
// Clicked on by empty hand.
/mob/living/simple_mob/animal/passive/bird/parrot/attack_hand(mob/living/L)
if(L.a_intent == I_GRAB && my_headset)
remove_headset(L)
else
..()
/mob/living/simple_mob/animal/passive/bird/parrot/proc/give_headset(obj/item/device/radio/headset/new_headset, mob/living/user)
if(!istype(new_headset))
to_chat(user, span("warning", "\The [new_headset] isn't a headset."))
return
if(my_headset)
to_chat(user, span("warning", "\The [src] is already wearing \a [my_headset]."))
return
else
user.drop_item(new_headset)
my_headset = new_headset
new_headset.forceMove(src)
to_chat(user, span("warning", "You place \a [new_headset] on \the [src]. You monster."))
to_chat(src, span("notice", "\The [user] gives you \a [new_headset]. You should put it to good use immediately."))
return
/mob/living/simple_mob/animal/passive/bird/parrot/proc/remove_headset(mob/living/user)
if(!my_headset)
to_chat(user, "<span class='warning'>\The [src] doesn't have a headset to remove, thankfully.</span>")
else
ISay("BAWWWWWK LEAVE THE HEADSET BAWKKKKK!")
my_headset.forceMove(get_turf(src))
user.put_in_hands(my_headset)
to_chat(user, span("notice", "You take away \the [src]'s [my_headset.name]. Finally."))
to_chat(src, span("warning", "\The [user] takes your [my_headset.name] away! How cruel!"))
my_headset = null
/mob/living/simple_mob/animal/passive/bird/parrot/examine(mob/user)
..()
if(my_headset)
to_chat(user, "It is wearing \a [my_headset].")
/mob/living/simple_mob/animal/passive/bird/parrot/Initialize()
if(my_headset)
my_headset = new my_headset(src)
return ..()
// Subtypes.
// Best Bird
/mob/living/simple_mob/animal/passive/bird/parrot/poly
name = "Poly"
desc = "It's a parrot. An expert on quantum cracker theory."
icon_state = "poly"
icon_rest = "poly-held"
icon_dead = "poly-dead"
tt_desc = "E Ara macao"
my_headset = /obj/item/device/radio/headset/headset_eng
say_list_type = /datum/say_list/bird/poly
// Best Bird with best headset.
/mob/living/simple_mob/animal/passive/bird/parrot/poly/ultimate
my_headset = /obj/item/device/radio/headset/omni
/mob/living/simple_mob/animal/passive/bird/parrot/kea
name = "kea"
desc = "A species of parrot. On Earth, they are unique among other parrots for residing in alpine climates. \
They are known to be intelligent and curious, which has made some consider them a pest."
icon_state = "kea"
icon_rest = "kea-held"
icon_dead = "kea-dead"
tt_desc = "E Nestor notabilis"
/mob/living/simple_mob/animal/passive/bird/parrot/eclectus
name = "eclectus"
desc = "A species of parrot, this species features extreme sexual dimorphism in their plumage's colors. \
A male eclectus has emerald green plumage, where as a female eclectus has red and purple plumage."
icon_state = "eclectus"
icon_rest = "eclectus-held"
icon_dead = "eclectus-dead"
tt_desc = "E Eclectus roratus"
/mob/living/simple_mob/animal/passive/bird/parrot/eclectus/Initialize()
gender = pick(MALE, FEMALE)
if(gender == FEMALE)
icon_state = "eclectusf"
icon_rest = "eclectusf-held"
icon_dead = "eclectusf-dead"
return ..()
/mob/living/simple_mob/animal/passive/bird/parrot/grey_parrot
name = "grey parrot"
desc = "A species of parrot. This one is predominantly grey, but has red tail feathers."
icon_state = "agrey"
icon_rest = "agrey-held"
icon_dead = "agrey-dead"
tt_desc = "E Psittacus erithacus"
/mob/living/simple_mob/animal/passive/bird/parrot/black_headed_caique
name = "black-headed caique"
desc = "A species of parrot, these birds have a distinct black color on their heads, distinguishing them from their relative Caiques."
icon_state = "bcaique"
icon_rest = "bcaique-held"
icon_dead = "bcaique-dead"
tt_desc = "E Pionites melanocephalus"
/mob/living/simple_mob/animal/passive/bird/parrot/white_caique
name = "white-bellied caique"
desc = "A species of parrot, they are also known as the Green-Thighed Parrot."
icon_state = "wcaique"
icon_rest = "wcaique-held"
icon_dead = "wcaique-dead"
tt_desc = "E Pionites leucogaster"
/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar
name = "budgerigar"
desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \
This one is has its natural colors of green and yellow."
icon_state = "gbudge"
icon_rest = "gbudge-held"
icon_dead = "gbudge-dead"
tt_desc = "E Melopsittacus undulatus"
/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/blue
icon_state = "bbudge"
icon_rest = "bbudge-held"
icon_dead = "bbudge-dead"
desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \
This one has a mutation which altered its color to be blue instead of green and yellow."
/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/bluegreen
icon_state = "bgbudge"
icon_rest = "bgbudge-held"
icon_dead = "bgbudge-dead"
desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \
This one has a mutation which altered its color to be a mix of blue and green."
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel
name = "cockatiel"
desc = "A species of parrot. This one has a highly visible crest."
icon_state = "tiel"
icon_rest = "tiel-held"
icon_dead = "tiel-dead"
tt_desc = "E Nymphicus hollandicus"
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/white
icon_state = "wtiel"
icon_rest = "wtiel-held"
icon_dead = "wtiel-dead"
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/yellowish
icon_state = "luttiel"
icon_rest = "luttiel-held"
icon_dead = "luttiel-dead"
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/grey
icon_state = "blutiel" // idk why this is blu.
icon_rest = "blutiel-held"
icon_dead = "blutiel-dead"
// This actually might be the yellow-crested cockatoo but idk.
/mob/living/simple_mob/animal/passive/bird/parrot/sulphur_cockatoo
name = "sulphur-crested cockatoo"
desc = "A species of parrot. This one has an expressive yellow crest. Their underwing and tail feathers are also yellow."
icon_state = "too"
icon_rest = "too-held"
icon_dead = "too-dead"
tt_desc = "E Cacatua galerita"
// This was originally called 'hooded_too', which might not mean the unbrella cockatoo but idk.
/mob/living/simple_mob/animal/passive/bird/parrot/white_cockatoo
name = "white cockatoo"
desc = "A species of parrot. This one is also known as the Umbrella Cockatoo, due to the semicircular shape of its crest."
icon_state = "utoo"
icon_rest = "utoo-held"
icon_dead = "utoo-dead"
tt_desc = "E Cacatua alba"
/mob/living/simple_mob/animal/passive/bird/parrot/pink_cockatoo
name = "pink cockatoo"
desc = "A species of parrot. This one is also known as Major Mitchell's cockatoo, \
in honor of a human surveyor and explorer who existed before humans fully explored their home planet."
icon_state = "mtoo"
icon_rest = "mtoo-held"
icon_dead = "mtoo-dead"
tt_desc = "E Lophochroa leadbeateri"
// AI
/datum/ai_holder/simple_mob/passive/parrot
speak_chance = 2
base_wander_delay = 8
/datum/ai_holder/simple_mob/passive/parrot/on_hear_say(mob/living/speaker, message)
if(holder.stat || !holder.say_list || !message || speaker == holder)
return
var/datum/say_list/S = holder.say_list
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
S.speak |= message S.speak |= message

View File

@@ -605,7 +605,7 @@
return ready && ..() return ready && ..()
// Prevents lobby players from seeing say, even with ghostears // Prevents lobby players from seeing say, even with ghostears
/mob/new_player/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/italics = 0, var/mob/speaker = null) /mob/new_player/hear_say(var/list/message_pieces, var/verb = "says", var/italics = 0, var/mob/speaker = null)
return return
// Prevents lobby players from seeing emotes, even with ghosteyes // Prevents lobby players from seeing emotes, even with ghosteyes

View File

@@ -12,6 +12,7 @@
set category = "IC" set category = "IC"
set_typing_indicator(FALSE) set_typing_indicator(FALSE)
message = sanitize_or_reflect(message, src) //VOREStation Edit - Reflect too-long messages, within reason
usr.say(message) usr.say(message)
/mob/verb/me_verb(message as text) /mob/verb/me_verb(message as text)

View File

@@ -41,12 +41,12 @@
return owner.examine(user, distance, infix, suffix) return owner.examine(user, distance, infix, suffix)
// Relay some stuff they hear // Relay some stuff they hear
/mob/zshadow/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) /mob/zshadow/hear_say(var/list/message_pieces, var/verb = "says", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
if(speaker && speaker.z != src.z) if(speaker && speaker.z != src.z)
return // Only relay speech on our acutal z, otherwise we might relay sounds that were themselves relayed up! return // Only relay speech on our acutal z, otherwise we might relay sounds that were themselves relayed up!
if(isliving(owner)) if(isliving(owner))
verb += " from above" verb += " from above"
return owner.hear_say(message, verb, language, italics, speaker, speech_sound, sound_vol) return owner.hear_say(message_pieces, verb, italics, speaker, speech_sound, sound_vol)
/mob/zshadow/proc/sync_icon(var/mob/M) /mob/zshadow/proc/sync_icon(var/mob/M)
name = M.name name = M.name

View File

@@ -58,17 +58,18 @@
nif.save_data["commlink_name"] = owner nif.save_data["commlink_name"] = owner
//So that only the owner's chat is relayed to others. //So that only the owner's chat is relayed to others.
/obj/item/device/communicator/commlink/hear_talk(mob/living/M, text, verb, datum/language/speaking) /obj/item/device/communicator/commlink/hear_talk(mob/living/M, list/message_pieces, verb)
if(M != nif.human) return if(M != nif.human)
for(var/obj/item/device/communicator/comm in communicating) return
for(var/obj/item/device/communicator/comm in communicating)
var/turf/T = get_turf(comm) var/turf/T = get_turf(comm)
if(!T) return if(!T) return
var/icon_object = src var/icon_object = src
var/list/mobs_to_relay var/list/mobs_to_relay
if(istype(comm,/obj/item/device/communicator/commlink)) if(istype(comm, /obj/item/device/communicator/commlink))
var/obj/item/device/communicator/commlink/CL = comm var/obj/item/device/communicator/commlink/CL = comm
mobs_to_relay = list(CL.nif.human) mobs_to_relay = list(CL.nif.human)
icon_object = CL.nif.big_icon icon_object = CL.nif.big_icon
@@ -77,18 +78,10 @@
mobs_to_relay = in_range["mobs"] mobs_to_relay = in_range["mobs"]
for(var/mob/mob in mobs_to_relay) for(var/mob/mob in mobs_to_relay)
//Can whoever is hearing us understand? var/message = mob.combine_message(message_pieces, verb, M)
if(!mob.say_understands(M, speaking))
if(speaking)
text = speaking.scramble(text)
else
text = stars(text)
var/name_used = M.GetVoice() var/name_used = M.GetVoice()
var/rendered = null var/rendered = null
if(speaking) //Language being used rendered = "<span class='game say'>[bicon(icon_object)] <span class='name'>[name_used]</span> [message]</span>"
rendered = "<span class='game say'>[bicon(icon_object)] <span class='name'>[name_used]</span> [speaking.format_message(text, verb)]</span>"
else
rendered = "<span class='game say'>[bicon(icon_object)] <span class='name'>[name_used]</span> [verb], <span class='message'>\"[text]\"</span></span>"
mob.show_message(rendered, 2) mob.show_message(rendered, 2)
//Not supported by the internal one //Not supported by the internal one

View File

@@ -472,10 +472,6 @@
var/obj/item/weapon/grab/G = W var/obj/item/weapon/grab/G = W
if(!ismob(G.affecting)) if(!ismob(G.affecting))
return return
for(var/mob/living/carbon/slime/M in range(1, G.affecting))
if(M.Victim == G.affecting)
to_chat(usr, "[G.affecting:name] will not fit into the [src.name] because they have a slime latched onto their head.")
return
var/mob/M = G.affecting var/mob/M = G.affecting
if(put_mob(M)) if(put_mob(M))
qdel(G) qdel(G)

View File

@@ -253,7 +253,7 @@ datum/signal
newsign.data["realname"] = newsign.data["name"] newsign.data["realname"] = newsign.data["name"]
newsign.data["job"] = job newsign.data["job"] = job
newsign.data["compression"] = 0 newsign.data["compression"] = 0
newsign.data["message"] = message newsign.data["message"] = message_to_multilingual(message)
newsign.data["type"] = 2 // artificial broadcast newsign.data["type"] = 2 // artificial broadcast
if(!isnum(freq)) if(!isnum(freq))
freq = text2num(freq) freq = text2num(freq)
@@ -264,7 +264,7 @@ datum/signal
newsign.data["radio"] = hradio newsign.data["radio"] = hradio
newsign.data["vmessage"] = message newsign.data["vmessage"] = message_to_multilingual(message)
newsign.data["vname"] = source newsign.data["vname"] = source
newsign.data["vmask"] = 0 newsign.data["vmask"] = 0
newsign.data["level"] = list() newsign.data["level"] = list()

View File

@@ -112,27 +112,11 @@ Divergence proc, used in mutation to make unique datums.
/mob/living/simple_mob/xeno/proc/RandomizeTraits() /mob/living/simple_mob/xeno/proc/RandomizeTraits()
return return
<<<<<<< HEAD /mob/living/simple_mob/xeno/hear_say(var/list/message_pieces, var/verb = "says", var/italics = 0, var/mob/speaker = null)
/mob/living/simple_mob/xeno/hear_say(var/message, var/verb = "says", var/datum/language/language, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
=======
/mob/living/simple_animal/xeno/hear_say(var/message, var/verb = "says", var/datum/language/language, var/italics = 0, var/mob/speaker = null)
>>>>>>> 54a8a58... Saycode Overhaul -- Multilingualism (#6956)
if(traitdat.traits[TRAIT_XENO_CANLEARN]) if(traitdat.traits[TRAIT_XENO_CANLEARN])
/*
Until this gets sorted out to a functioning point, or waiting on Psi's saycode update.
var/learned_message = say_understands(speaker, language)
if(!message || isxeno(speaker))
return
if(learned_message) //Is it understood?
var/complete_message = ",[language.key] [message]"
if(!(complete_message in speak))
speech_buffer.Add(complete_message)
log_debug("Added '[complete_message]'.")
else
*/
if(!(message in speak)) if(!(message in speak))
speech_buffer.Add(message) speech_buffer.Add(multilingual_to_message(message_pieces))
..(message,verb,language,italics,speaker) . = ..()
/mob/living/simple_mob/xeno/proc/ProcessSpeechBuffer() /mob/living/simple_mob/xeno/proc/ProcessSpeechBuffer()
if(speech_buffer.len) if(speech_buffer.len)

View File

@@ -2478,16 +2478,6 @@
#include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_powers.dm" #include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_powers.dm"
#include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_species.dm" #include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_species.dm"
#include "code\modules\mob\living\carbon\human\species\xenomorphs\xenomorphs.dm" #include "code\modules\mob\living\carbon\human\species\xenomorphs\xenomorphs.dm"
#include "code\modules\mob\living\carbon\metroid\death.dm"
#include "code\modules\mob\living\carbon\metroid\emote.dm"
#include "code\modules\mob\living\carbon\metroid\examine.dm"
#include "code\modules\mob\living\carbon\metroid\life.dm"
#include "code\modules\mob\living\carbon\metroid\login.dm"
#include "code\modules\mob\living\carbon\metroid\metroid.dm"
#include "code\modules\mob\living\carbon\metroid\powers.dm"
#include "code\modules\mob\living\carbon\metroid\say.dm"
#include "code\modules\mob\living\carbon\metroid\subtypes.dm"
#include "code\modules\mob\living\carbon\metroid\update_icons.dm"
#include "code\modules\mob\living\silicon\death.dm" #include "code\modules\mob\living\silicon\death.dm"
#include "code\modules\mob\living\silicon\emote.dm" #include "code\modules\mob\living\silicon\emote.dm"
#include "code\modules\mob\living\silicon\laws.dm" #include "code\modules\mob\living\silicon\laws.dm"