From 500fbdf99f5de98cff0b484ed22d3b6de9b2fbd4 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Fri, 25 Apr 2014 00:45:35 -0500 Subject: [PATCH] Saycode fixes 2: Electric Boogaloo Binary channel now doesn't crop out the entire message when used. Simple Animals won't talk while dead. Poly/Parrots can use the radio and learn new phrases. --- code/modules/mob/living/say.dm | 5 +- code/modules/mob/living/silicon/say.dm | 27 +++++----- .../mob/living/simple_animal/parrot.dm | 52 +++++++++++++++++++ .../mob/living/simple_animal/simple_animal.dm | 23 +++++++- 4 files changed, 87 insertions(+), 20 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 586441efe3..80f67c3347 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -123,9 +123,8 @@ var/list/department_radio_keys = list( for(var/mob/M in listening) - if(M.client) - M << speech_bubble - M.hear_say(message,verb,speaking,alt_name, italics, src) + M << speech_bubble + M.hear_say(message,verb,speaking,alt_name, italics, src) log_say("[name]/[key] : [message]") diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 520ff0a0f3..44af910324 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -163,13 +163,15 @@ if (!message) return - var/message_a = say_quote(message) - var/rendered = "Robotic Talk, [name] [message_a]" + var/verb = say_quote(message) + + + var/rendered = "Robotic Talk, [name] [verb], \"[message]\"" for (var/mob/living/S in living_mob_list) if(S.robot_talk_understand && (S.robot_talk_understand == robot_talk_understand)) // This SHOULD catch everything caught by the one below, but I'm not going to change it. if(istype(S , /mob/living/silicon/ai)) - var/renderedAI = "Robotic Talk, [name] [message_a]" + var/renderedAI = "Robotic Talk, [name] [verb], \"[message]\"" S.show_message(renderedAI, 2) else S.show_message(rendered, 2) @@ -177,7 +179,7 @@ else if (S.binarycheck()) if(istype(S , /mob/living/silicon/ai)) - var/renderedAI = "Robotic Talk, [name] [message_a]" + var/renderedAI = "Robotic Talk, [name] [verb], \"[message]\"" S.show_message(renderedAI, 2) else S.show_message(rendered, 2) @@ -190,22 +192,17 @@ for (var/mob/M in listening) if(!istype(M, /mob/living/silicon) && !M.robot_talk_understand) heard += M - if (length(heard)) - var/message_b - - message_b = "beep beep beep" - message_b = say_quote(message_b) - message_b = "[message_b]" - - rendered = "[voice_name] [message_b]" + var/message_beep + verb = "beeps" + message_beep = "beep beep beep" + + rendered = "[voice_name] [verb], \"[message_beep]\"" for (var/mob/M in heard) M.show_message(rendered, 2) - message = say_quote(message) - - rendered = "Robotic Talk, [name] [message_a]" + rendered = "Robotic Talk, [name] [verb], \"[message]\"" for (var/mob/M in dead_mob_list) if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 756d49bbf2..452bc863a8 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -703,3 +703,55 @@ ears = new /obj/item/device/radio/headset/headset_eng(src) available_channels = list(":e") ..() + +/mob/living/simple_animal/parrot/say(var/message) + + if(stat) + return + + var/verb = "says" + if(speak_emote.len) + verb = pick(speak_emote) + + + var/message_mode="" + if(copytext(message,1,2) == ";") + message_mode = "headset" + message = copytext(message,2) + + if(length(message) >= 2) + var/channel_prefix = copytext(message, 1 ,3) + message_mode = department_radio_keys[channel_prefix] + + if(copytext(message,1,2) == ":") + var/positioncut = 3 + message = trim(copytext(message,positioncut)) + + message = capitalize(trim_left(message)) + + if(message_mode) + if(message_mode in radiochannels) + if(ears && istype(ears,/obj/item/device/radio)) + ears.talk_into(src,message, message_mode, verb, null) + + + ..(message) + + +/mob/living/simple_animal/parrot/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) + if(prob(50)) + parrot_hear(message) + ..(message,verb,language,alt_name,italics,speaker) + + + +/mob/living/simple_animal/parrot/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0) + if(prob(50)) + parrot_hear("[pick(available_channels)] [message]") + ..(message,verb,language,part_a,part_b,speaker,hard_to_hear) + + +/mob/living/simple_animal/parrot/proc/parrot_hear(var/message="") + if(!message || stat) + return + speech_buffer.Add(message) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 350471f1b3..3656b5573c 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -15,7 +15,7 @@ var/turns_per_move = 1 var/turns_since_move = 0 - universal_speak = 1 + universal_speak = 0 //No, just no. var/meat_amount = 0 var/meat_type var/stop_automated_movement = 0 //Use this to temporarely stop random movement or to if you write special movement code for animals. @@ -453,4 +453,23 @@ del(target_locked) overlays = null if (targeted_by && target_locked) - overlays += target_locked \ No newline at end of file + overlays += target_locked + +/mob/living/simple_animal/say(var/message) + if(stat) + return + + if(copytext(message,1,2) == "*") + return emote(copytext(message,2)) + + if(stat) + return + + var/verb = "says" + + if(speak_emote.len) + verb = pick(speak_emote) + + message = capitalize(trim_left(message)) + + ..(message, null, verb)