Makes the sayspan rewrite not runtime everything to fuck.

Also fixes #8168
This commit is contained in:
Miauw
2015-03-19 20:42:33 +01:00
parent 16258d3096
commit c4892765db
10 changed files with 32 additions and 60 deletions
+1 -1
View File
@@ -9,7 +9,7 @@
message = Gibberish(message, (emp_damage*6))//scrambles the message, gets worse when emp_damage is higher
..()
/mob/living/carbon/brain/radio(message, message_mode, list/spans = list())
/mob/living/carbon/brain/radio(message, message_mode, list/spans)
if(message_mode && istype(container, /obj/item/device/mmi/radio_enabled))
var/obj/item/device/mmi/radio_enabled/R = container
if(R.radio)
+6 -32
View File
@@ -30,7 +30,7 @@
return message
/mob/living/carbon/human/get_spans()
return ..() + dna.mutations_get_spans()
return ..() | dna.mutations_get_spans()
/mob/living/carbon/human/GetVoice()
if(istype(wear_mask, /obj/item/clothing/mask/gas/voice))
@@ -72,7 +72,7 @@
if(!istype(dongle)) return 0
if(dongle.translate_binary) return 1
/mob/living/carbon/human/radio(message, message_mode, list/spans = list())
/mob/living/carbon/human/radio(message, message_mode, list/spans)
. = ..()
if(. != 0)
return .
@@ -104,33 +104,7 @@
if(name != GetVoice())
return " (as [get_id_name("Unknown")])"
/mob/living/carbon/human/proc/forcesay(list/append) //this proc is at the bottom of the file because quote fuckery makes notepad++ cri
if(stat == CONSCIOUS)
if(client)
var/virgin = 1 //has the text been modified yet?
var/temp = winget(client, "input", "text")
if(findtextEx(temp, "Say \"", 1, 7) && length(temp) > 5) //"case sensitive means
temp = replacetext(temp, ";", "") //general radio
if(findtext(trim_left(temp), ":", 6, 7)) //dept radio
temp = copytext(trim_left(temp), 8)
virgin = 0
if(virgin)
temp = copytext(trim_left(temp), 6) //normal speech
virgin = 0
while(findtext(trim_left(temp), ":", 1, 2)) //dept radio again (necessary)
temp = copytext(trim_left(temp), 3)
if(findtext(temp, "*", 1, 2)) //emotes
return
var/trimmed = trim_left(temp)
if(length(trimmed))
if(append)
temp += pick(append)
say(temp)
winset(client, "input", "text=[null]")
/mob/living/carbon/human/proc/forcesay(list/append)
var/temp = winget(client, "input", "text")
say(temp)
winset(client, "input", "text=[null]")
+7 -13
View File
@@ -111,19 +111,19 @@ var/list/department_radio_keys = list(
if(pressure < ONE_ATMOSPHERE*0.4) //Thin air, let's italicise the message
spans |= SPAN_ITALICS
send_speech(message, message_range, src, bubble_type)
send_speech(message, message_range, src, bubble_type, spans)
log_say("[name]/[key] : [message]")
return 1
/mob/living/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans = list())
/mob/living/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
if(!client)
return
var/deaf_message
var/deaf_type
if(speaker != src)
if(!radio_freq) //These checks have to be seperate, else people talking on the radio will make "You can't hear yourself!" appear when hearing people over the radio while deaf.
deaf_message = "<span class='name'>[speaker]</span> talks but you cannot hear them."
deaf_message = "<span class='name'>[speaker]</span> [speaker.verb_say] something but you cannot hear them."
deaf_type = 1
else
deaf_message = "<span class='notice'>You can't hear yourself!</span>"
@@ -133,25 +133,19 @@ var/list/department_radio_keys = list(
show_message(message, 2, deaf_message, deaf_type)
return message
/mob/living/send_speech(message, message_range = 7, obj/source = src, bubble_type, list/spans = list())
/mob/living/send_speech(message, message_range = 7, obj/source = src, bubble_type, list/spans)
var/list/listening = get_hearers_in_view(message_range, source)
var/list/listening_dead = list()
for(var/mob/M in player_list)
if(M.stat == DEAD && M.client && ((M.client.prefs.chat_toggles & CHAT_GHOSTEARS) || (get_dist(M, src) <= 7)) && client) // client is so that ghosts don't have to listen to mice
listening_dead |= M
listening -= listening_dead //so ghosts dont hear stuff twice
listening |= M
var/rendered = compose_message(src, languages, message, , spans)
for(var/atom/movable/AM in listening)
AM.Hear(rendered, src, languages, message, , spans)
for(var/mob/M in listening_dead)
M.Hear(rendered, src, languages, message, , spans)
//speech bubble
var/list/speech_bubble_recipients = list()
for(var/mob/M in (listening + listening_dead))
for(var/mob/M in listening)
if(M.client)
speech_bubble_recipients.Add(M.client)
spawn(0)
@@ -239,7 +233,7 @@ var/list/department_radio_keys = list(
return message
/mob/living/proc/radio(message, message_mode, list/spans = list())
/mob/living/proc/radio(message, message_mode, list/spans)
switch(message_mode)
if(MODE_R_HAND)
if (r_hand)
+1 -1
View File
@@ -22,7 +22,7 @@
/mob/living/silicon/ai/IsVocal()
return !config.silent_ai
/mob/living/silicon/ai/radio(message, message_mode, list/spans = list())
/mob/living/silicon/ai/radio(message, message_mode, list/spans)
if(!radio_enabled || aiRestorePowerRoutine || stat) //AI cannot speak if radio is disabled (via intellicard) or depowered.
src << "<span class='danger'>Your radio transmitter is offline!</span>"
return 0
@@ -109,7 +109,7 @@
<div id=\"rightmenu\">[right_part]</div>
</div>
</body>
</html>"}
</html>"} //"
usr << browse(dat, "window=pai;size=640x480;border=0;can_close=1;can_resize=1;can_minimize=1;titlebar=1")
onclose(usr, "pai")
temp = null
@@ -252,7 +252,7 @@
add_med_hud()
if("translator")
if(href_list["toggle"])
languages = languages == ALL ? HUMAN & ROBOT : ALL
languages = (languages == ALL) ? (HUMAN & ROBOT) : ALL
if("doorjack")
if(href_list["jack"])
if(src.cable && src.cable.machine)
+1 -1
View File
@@ -34,7 +34,7 @@
/mob/living/silicon/lingcheck()
return 0 //Borged or AI'd lings can't speak on the ling channel.
/mob/living/silicon/radio(message, message_mode, list/spans = list())
/mob/living/silicon/radio(message, message_mode, list/spans)
. = ..()
if(. != 0)
return .
@@ -133,7 +133,7 @@
speech_buffer |= html_decode(raw_message)
..()
/mob/living/simple_animal/parrot/radio(message, message_mode, list/spans = list()) //literally copied from human/radio(), but there's no other way to do this. at least it's better than it used to be.
/mob/living/simple_animal/parrot/radio(message, message_mode, list/spans) //literally copied from human/radio(), but there's no other way to do this. at least it's better than it used to be.
. = ..()
if(. != 0)
return .