From 02aab3f779c25c71d87cfbb68b0dfd10eee90c20 Mon Sep 17 00:00:00 2001 From: alex-gh Date: Thu, 24 Apr 2014 10:28:52 +0200 Subject: [PATCH] Temporary revert for the new say code. --- baystation12.dme | 1 - code/game/machinery/telecomms/broadcaster.dm | 96 +++- .../machinery/telecomms/telecomunications.dm | 10 +- .../game/objects/items/devices/radio/radio.dm | 18 +- code/modules/mob/dead/observer/observer.dm | 25 - code/modules/mob/hear_say.dm | 137 ------ .../mob/living/carbon/human/human_damage.dm | 2 - .../mob/living/carbon/human/human_defines.dm | 4 - code/modules/mob/living/carbon/human/life.dm | 10 +- code/modules/mob/living/carbon/human/say.dm | 262 ++++------- code/modules/mob/living/say.dm | 431 ++++++++++++++++-- code/modules/mob/living/silicon/ai/ai.dm | 4 - code/modules/mob/living/silicon/say.dm | 139 ++---- .../mob/living/simple_animal/constructs.dm | 1 - code/modules/mob/living/simple_animal/head.dm | 3 +- .../mob/living/simple_animal/parrot.dm | 1 - .../modules/mob/living/simple_animal/shade.dm | 1 - .../mob/living/simple_animal/simple_animal.dm | 13 +- code/modules/mob/living/simple_animal/worm.dm | 4 +- code/modules/mob/new_player/new_player.dm | 10 +- 20 files changed, 623 insertions(+), 549 deletions(-) delete mode 100644 code/modules/mob/hear_say.dm diff --git a/baystation12.dme b/baystation12.dme index 69dba608c5f..9e39d5a8f46 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -957,7 +957,6 @@ #include "code\modules\mob\abilities.dm" #include "code\modules\mob\death.dm" #include "code\modules\mob\emote.dm" -#include "code\modules\mob\hear_say.dm" #include "code\modules\mob\inventory.dm" #include "code\modules\mob\language.dm" #include "code\modules\mob\login.dm" diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index fa6e446b152..406b30ee0b5 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -59,9 +59,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"],, - signal.data["compression"], signal.data["level"], signal.frequency, - signal.data["verb"], signal.data["language"] ) + signal.data["realname"], signal.data["vname"],, signal.data["compression"], signal.data["level"], signal.frequency) /** #### - Simple Broadcast - #### **/ @@ -86,8 +84,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"], 4, signal.data["compression"], signal.data["level"], signal.frequency, - signal.data["verb"], signal.data["language"]) + signal.data["realname"], signal.data["vname"], 4, signal.data["compression"], signal.data["level"], signal.frequency) if(!message_delay) message_delay = 1 @@ -150,16 +147,14 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"],, signal.data["compression"], list(0), connection.frequency, - signal.data["verb"], signal.data["language"]) + signal.data["realname"], signal.data["vname"],, signal.data["compression"], list(0), connection.frequency) else if(intercept) Broadcast_Message(signal.data["connection"], signal.data["mob"], signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"], 3, signal.data["compression"], list(0), connection.frequency, - signal.data["verb"], signal.data["language"]) + signal.data["realname"], signal.data["vname"], 3, signal.data["compression"], list(0), connection.frequency) @@ -223,8 +218,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /proc/Broadcast_Message(var/datum/radio_frequency/connection, var/mob/M, 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/data, var/compression, var/list/level, var/freq) /* ###### Prepare the radio connection ###### */ @@ -374,6 +368,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept // syndies! if (display_freq == SYND_FREQ) part_a = "" + // centcomm channels (deathsquid and ert) else if (display_freq in CENT_FREQS) part_a = "" @@ -446,41 +441,108 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept blackbox.messages += blackbox_msg //End of research and feedback code. + + var/aitrack = "" + var/aiopen = "" /* ###### Send the message ###### */ /* --- Process all the mobs that heard a masked voice (understood) --- */ if (length(heard_masked)) + var/N = name + var/J = job + var/rendered = "[part_a][N][part_b][quotedmsg][part_c]" for (var/mob/R in heard_masked) - R.hear_radio(message,verbage, speaking, part_a, part_b, M) + aitrack = "" + aiopen = "\[OPEN\] " + if(data == 4) + aitrack = "" + + if(istype(R, /mob/living/silicon/ai)) + R.show_message("[part_a][aitrack][N] ([J]) [aiopen][part_b][quotedmsg][part_c]", 2) + else + R.show_message(rendered, 2) /* --- Process all the mobs that heard the voice normally (understood) --- */ if (length(heard_normal)) - for (var/mob/R in heard_normal) - R.hear_radio(message, verbage, speaking, part_a, part_b, M) + var/rendered = "[part_a][realname][part_b][quotedmsg][part_c]" + for (var/mob/R in heard_normal) + aitrack = "" + aiopen = "\[OPEN\] " + if(data == 4) + aitrack = "" + + if(istype(R, /mob/living/silicon/ai)) + R.show_message("[part_a][aitrack][realname] ([job]) [aiopen][part_b][quotedmsg][part_c]", 2) + else + R.show_message(rendered, 2) /* --- Process all the mobs that heard the voice normally (did not understand) --- */ if (length(heard_voice)) + var/rendered = "[part_a][vname][part_b][vmessage][part_c]" + for (var/mob/R in heard_voice) - R.hear_radio(message,verbage, speaking, part_a, part_b, M) + aitrack = "" + aiopen = "\[OPEN\] " + if(data == 4) + aitrack = "" + + + if(istype(R, /mob/living/silicon/ai)) + R.show_message("[part_a][aitrack][vname] ([job]) [aiopen][part_b][vmessage]][part_c]", 2) + else + R.show_message(rendered, 2) /* --- Process all the mobs that heard a garbled voice (did not understand) --- */ // Displays garbled message (ie "f*c* **u, **i*er!") if (length(heard_garbled)) + if(M) + quotedmsg = M.say_quote(stars(message)) + else + quotedmsg = stars(quotedmsg) + + var/rendered = "[part_a][vname][part_b][quotedmsg][part_c]" + for (var/mob/R in heard_garbled) - R.hear_radio(message, verbage, speaking, part_a, part_b, M, 1) + aitrack = "" + aiopen = "\[OPEN\] " + if(data == 4) + aitrack = "" + + + if(istype(R, /mob/living/silicon/ai)) + R.show_message("[part_a][aitrack][vname][aiopen][part_b][quotedmsg][part_c]", 2) + else + R.show_message(rendered, 2) /* --- Complete gibberish. Usually happens when there's a compressed message --- */ if (length(heard_gibberish)) + if(M) + quotedmsg = M.say_quote(Gibberish(message, compression + 50)) + else + quotedmsg = Gibberish(quotedmsg, compression + 50) + + var/rendered = "[part_a][Gibberish(name, compression + 50)][part_b][quotedmsg][part_c]" + for (var/mob/R in heard_gibberish) - R.hear_radio(message, verbage, speaking, part_a, part_b, M, 1) + aitrack = "" + aiopen = "\[OPEN\] " + if(data == 4) + aitrack = "" + + + if(istype(R, /mob/living/silicon/ai)) + R.show_message("[part_a][aitrack][Gibberish(realname, compression + 50)] ([Gibberish(job, compression + 50)]) [aiopen][part_b][quotedmsg][part_c]", 2) + else + R.show_message(rendered, 2) + /proc/Broadcast_SimpleMessage(var/source, var/frequency, var/text, var/data, var/mob/M, var/compression, var/level) diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index a8fd88f8349..1be534354e8 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -91,9 +91,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() "type" = signal.data["type"], "server" = signal.data["server"], "reject" = signal.data["reject"], - "level" = signal.data["level"], - "verb" = signal.data["verb"], - "language" = signal.data["language"] + "level" = signal.data["level"] ) // Keep the "original" signal constant @@ -160,7 +158,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() add_link(T) -/obj/machinery/telecomms/Del() +/obj/machinery/telecomms/Destroy() telecomms_list -= src ..() @@ -631,3 +629,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() + + + + diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 2121b7cf334..fcd7d2c76fe 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -219,7 +219,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use del(A) return -/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel, var/verb = "says", var/datum/language/speaking = null) +/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel) if(!on) return // the device has to be on // Fix for permacell radios, but kinda eh about actually fixing them. if(!M || !message) return @@ -351,9 +351,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use "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 - "language" = speaking, - "verb" = verb + "level" = position.z // The source's z level ) signal.frequency = connection.frequency // Quick frequency set @@ -406,9 +404,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use "type" = 0, "server" = null, "reject" = 0, - "level" = position.z, - "language" = speaking, - "verb" = verb + "level" = position.z ) signal.frequency = connection.frequency // Quick frequency set @@ -430,7 +426,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), src, message, displayname, jobname, real_name, M.voice_name, - filter_type, signal.data["compression"], list(position.z), connection.frequency,verb,speaking) + filter_type, signal.data["compression"], list(position.z), connection.frequency) @@ -603,13 +599,11 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use else R.show_message(rendered, 2) -/obj/item/device/radio/hear_talk(mob/M as mob, msg, var/verb = "says", var/datum/language/speaking = null) +/obj/item/device/radio/hear_talk(mob/M as mob, msg) if (broadcasting) if(get_dist(src, M) <= canhear_range) - talk_into(M, msg,null,verb,speaking) - - + talk_into(M, msg) /* /obj/item/device/radio/proc/accept_rad(obj/item/device/radio/R as obj, message) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index db9bfdbdc88..21554782bab 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -76,31 +76,6 @@ real_name = name ..() - -/mob/dead/observer/Topic(href, href_list) - if (href_list["track"]) - var/mob/target = locate(href_list["track"]) in mob_list - if(target) - ManualFollow(target) - - - -/mob/dead/attackby(obj/item/W, mob/user) - if(istype(W,/obj/item/weapon/tome)) - var/mob/dead/M = src - if(src.invisibility != 0) - M.invisibility = 0 - user.visible_message( \ - "\red [user] drags ghost, [M], to our plan of reality!", \ - "\red You drag [M] to our plan of reality!" \ - ) - else - user.visible_message ( \ - "\red [user] just tried to smash his book into that ghost! It's not very effective", \ - "\red You get the feeling that the ghost can't become any more visible." \ - ) - - /mob/dead/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) return 1 /* diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm deleted file mode 100644 index 06a76218e78..00000000000 --- a/code/modules/mob/hear_say.dm +++ /dev/null @@ -1,137 +0,0 @@ -// At minimum every mob has a hear_say proc. - -/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) - if(!client) - return - - if(sleeping) - hear_sleep(message) - return - - var/style = "body" - if(!say_understands(speaker,language)) - if(istype(speaker,/mob/living/simple_animal)) - var/mob/living/simple_animal/S = speaker - message = pick(S.speak) - else - message = stars(message) - - if(language) - verb = language.speech_verb - style = language.colour - - var/speaker_name = speaker.name - if(istype(speaker, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = speaker - speaker_name = H.GetVoice() - - if(italics) - message = "[message]" - - var/track = null - if(istype(src, /mob/dead/observer)) - if(speaker_name != speaker.real_name) - speaker_name = "[speaker.real_name] ([speaker_name])" - track = "(follow) " - if(client.prefs.toggles & CHAT_GHOSTEARS && speaker in view(src)) - message = "[message]" - - if(sdisabilities & DEAF || ear_deaf) - if(speaker == src) - src << "You cannot hear yourself speak!" - else - src << "[speaker_name][alt_name] talks but you cannot hear them." - else - src << "[speaker_name][alt_name] [track][verb], \"[message]\"" - - - - - -/mob/proc/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(!client) - return - - if(sleeping) - hear_sleep(message) - return - - var/track = null - - var/style = "body" - - if(!say_understands(speaker,language)) - if(istype(speaker,/mob/living/simple_animal)) - var/mob/living/simple_animal/S = speaker - message = pick(S.speak) - else - message = stars(message) - - if(language) - verb = language.speech_verb - style = language.colour - - if(hard_to_hear) - message = stars(message) - - var/speaker_name = speaker.name - if(istype(speaker, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = speaker - if(H.voice) - speaker_name = H.voice - - if(hard_to_hear) - speaker_name = "unknown" - - if(istype(src, /mob/living/silicon/ai) && !hard_to_hear) - var/jobname // the mob's "job" - if (ishuman(speaker)) - var/mob/living/carbon/human/H = speaker - jobname = H.get_assignment() - else if (iscarbon(speaker)) // Nonhuman carbon mob - jobname = "No id" - else if (isAI(speaker)) - jobname = "AI" - else if (isrobot(speaker)) - jobname = "Cyborg" - else if (istype(speaker, /mob/living/silicon/pai)) - jobname = "Personal AI" - else - jobname = "Unknown" - - track = "[speaker_name] ([jobname])" - - if(istype(src, /mob/dead/observer)) - if(speaker_name != speaker.real_name) - speaker_name = "[speaker.real_name] ([speaker_name])" - track = "[speaker_name] (follow)" - - if(sdisabilities & DEAF || ear_deaf) - if(prob(20)) - src << "You feel your headset vibrate but can hear nothing from it!" - else if(track) - src << "[part_a][track][part_b] [verb], \"[message]\"" - else - src << "[part_a][speaker_name][part_b] [verb], \"[message]\"" - -/mob/proc/hear_sleep(var/message) - if(prob(15)) - var/list/punctuation = list(",", "!", ".", ";", "?") - var/list/messages = text2list(message, " ") - var/R = rand(1, messages.len) - var/heardword = messages[R] - if(copytext(heardword,1, 1) in punctuation) - heardword = copytext(heardword,2) - if(copytext(heardword,-1) in punctuation) - heardword = copytext(heardword,1,lentext(heardword)) - var/heard = "...You hear something about...[heardword]" - - src << heard - else - var/heard = "...You almost hear someone talking..." - - src << heard - - - - diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index e6769c8b72b..1c61af73353 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -144,7 +144,6 @@ UpdateDamageIcon() hud_updateflag |= 1 << HEALTH_HUD updatehealth() - speech_problem_flag = 1 //Heal MANY external organs, in random order @@ -166,7 +165,6 @@ parts -= picked updatehealth() hud_updateflag |= 1 << HEALTH_HUD - speech_problem_flag = 1 if(update) UpdateDamageIcon() // damage MANY external organs, in random order diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index db45524ebb5..6d672f1a78b 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -46,10 +46,6 @@ var/icon/stand_icon = null var/icon/lying_icon = null - var/voice = "" //Instead of new say code calling GetVoice() over and over and over, we're just going to ask this variable, which gets updated in Life() - - var/speech_problem_flag = 0 - var/miming = null //Toggle for the mime's abilities. var/special_voice = "" // For changing our voice. Used by a symptom. var/said_last_words=0 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 3b886e570b2..59915be2aa2 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -79,8 +79,6 @@ if(life_tick%30==15) hud_updateflag = 1022 - voice = GetVoice() - //No need to update all of these procs if the guy is dead. if(stat != DEAD && !in_stasis) if(air_master.current_cycle%4==2 || failed_last_breath) //First, resolve location and get a breath @@ -174,6 +172,7 @@ /mob/living/carbon/human + proc/handle_disabilities() if (disabilities & EPILEPSY) if ((prob(1) && paralysis < 1)) @@ -195,7 +194,6 @@ drop_item() emote("cough") if (disabilities & TOURETTES) - speech_problem_flag = 1 if ((prob(10) && paralysis <= 1)) Stun(10) switch(rand(1, 3)) @@ -208,7 +206,6 @@ animate(src, pixel_x = pixel_x + x_offset, pixel_y = pixel_y + y_offset, time = 1) animate(pixel_x = pixel_x - x_offset, pixel_y = pixel_y - y_offset, time = 1) if (disabilities & NERVOUS) - speech_problem_flag = 1 if (prob(10)) stuttering = max(10, stuttering) @@ -269,7 +266,6 @@ if(gene.is_active(src)) if (prob(10) && prob(gene.instability)) adjustCloneLoss(1) - speech_problem_flag = 1 gene.OnMobLife(src) if (radiation) @@ -1127,7 +1123,6 @@ if(halloss > 0) adjustHalLoss(-3) else if(sleeping) - speech_problem_flag = 1 handle_dreams() adjustHalLoss(-3) if (mind) @@ -1229,21 +1224,18 @@ //Other if(stunned) - speech_problem_flag = 1 AdjustStunned(-1) if(weakened) weakened = max(weakened-1,0) //before you get mad Rockdtben: I done this so update_canmove isn't called multiple times if(stuttering) - speech_problem_flag = 1 stuttering = max(stuttering-1, 0) if (slurring) slurring = max(slurring-(1*sober_str), 0) if(silent) - speech_problem_flag = 1 silent = max(silent-1, 0) if(druggy) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 387e3e72209..e7cf18a51c1 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -1,135 +1,94 @@ /mob/living/carbon/human/say(var/message) - var/verb = "says" - var/alt_name = "" - var/message_range = world.view - var/italics = 0 - - if(client) - if(client.prefs.muted & MUTE_IC) - src << "\red You cannot speak in IC (Muted)." - return - - if(stat == 2) - return say_dead(message) - - if(copytext(message,1,2) == "*") - return emote(copytext(message,2)) - - if(name != GetVoice()) - alt_name = "(as [get_id_name("Unknown")])" - - var/message_mode = null - var/datum/language/speaking = null - - if(copytext(message,1,2) == ";") - message_mode = "headset" - message = copytext(message,2) - - if(length(message) >= 2) - var/channel_prefix = copytext(message, 1 ,3) - var/check_language_and_radio = copytext(message,3,5) - if(languages.len) - for(var/datum/language/L in languages) - if(lowertext(channel_prefix) == ":[L.key]" || lowertext(check_language_and_radio) == ":[L.key]") - verb = L.speech_verb - speaking = L - break - if(!message_mode) - message_mode = department_radio_keys[channel_prefix] - - if(speaking || copytext(message,1,2) == ":") - var/positioncut = 3 - if(speaking && (message_mode && copytext(message,3,4)==":")) - positioncut += 2 - message = trim(copytext(message,positioncut)) - - - message = capitalize(trim_left(message)) - - if(speech_problem_flag) - var/list/handle_r = handle_speech_problems(message) - message = handle_r[1] - verb = handle_r[2] - speech_problem_flag = handle_r[3] - - if(!message || stat) - return - - var/ending = copytext(message, length(message)) - if(ending=="!") - verb=pick("exclaims","shouts","yells") - if(ending=="?") - verb="asks" - - var/list/obj/item/used_radios = new - - switch (message_mode) - if("headset") - if(l_ear && istype(l_ear,/obj/item/device/radio)) - var/obj/item/device/radio/R = l_ear - R.talk_into(src,message,null,verb,speaking) - used_radios += l_ear - else if(r_ear && istype(r_ear,/obj/item/device/radio)) - var/obj/item/device/radio/R = r_ear - R.talk_into(src,message,null,verb,speaking) - used_radios += r_ear - - if("right_ear") - if(r_ear && istype(r_ear,/obj/item/device/radio)) - var/obj/item/device/radio/R = r_ear - R.talk_into(src,message,verb,speaking) - used_radios += r_ear - - if("left_ear") - if(l_ear && istype(l_ear,/obj/item/device/radio)) - var/obj/item/device/radio/R = l_ear - R.talk_into(src,message,verb,speaking) - used_radios += l_ear - - if("intercom") - for(var/obj/item/device/radio/intercom/I in view(1, null)) - I.talk_into(src, message, verb, speaking) - used_radios += I - if("whisper") - whisper(message) - return - if("binary") - if(robot_talk_understand || binarycheck()) - robot_talk(message) - return - if("changeling") + if(miming) + if(length(message) >= 2) if(mind && mind.changeling) - for(var/mob/Changeling in mob_list) - if((Changeling.mind && Changeling.mind.changeling) || istype(Changeling, /mob/dead/observer)) - Changeling << "[mind.changeling.changelingID]: [message]" - return - else - if(message_mode) - if(message_mode in radiochannels) - if(l_ear && istype(l_ear,/obj/item/device/radio)) - l_ear.talk_into(src,message, message_mode, verb, speaking) - used_radios += l_ear - else if(r_ear && istype(r_ear,/obj/item/device/radio)) - r_ear.talk_into(src,message, message_mode, verb, speaking) - used_radios += r_ear + if(copytext(message, 1, 2) != "*" && department_radio_keys[copytext(message, 1, 3)] != "changeling") + return + else + return ..(message) + if(stat == DEAD) + return ..(message) + + if(length(message) >= 1) //In case people forget the '*help' command, this will slow them the message and prevent people from saying one letter at a time + if (copytext(message, 1, 2) != "*") + return + + if(dna) + if(length(message) >= 2) + if (copytext(message, 1, 2) != "*" && department_radio_keys[copytext(message, 1, 3)] != "changeling") + for(var/datum/dna/gene/gene in dna_genes) + if(!gene.block) + continue + if(gene.is_active(src)) + message = gene.OnSay(src,message) + /* + if(dna.mutantrace == "lizard") + if(copytext(message, 1, 2) != "*") + message = replacetext(message, "s", stutter("ss")) + + if(dna.mutantrace == "slime" && prob(5)) + if(copytext(message, 1, 2) != "*") + if(copytext(message, 1, 2) == ";") + message = ";" + else + message = "" + message += "SKR" + var/imax = rand(5,20) + for(var/i = 0,i= 25 && length(message)) + if(copytext(message, 1, 2) != "*") + message = "[uppertext(message)]!!" //because I don't know how to code properly in getting vars from other files -Bro + + if (src.slurring) + if(copytext(message, 1, 2) != "*") + message = slur(message) + ..(message) - if(used_radios.len) - italics = 1 - message_range = 3 - - var/datum/gas_mixture/environment = loc.return_air() - if(environment) - var/pressure = environment.return_pressure() - if(pressure < SAY_MINIMUM_PRESSURE) - italics = 1 - message_range =1 - - ..(message, speaking, verb, alt_name, italics, message_range, used_radios) - - -/mob/living/carbon/human/say_understands(var/mob/other,var/datum/language/speaking = null) +/mob/living/carbon/human/say_understands(var/other,var/datum/language/speaking = null) if(has_brain_worms()) //Brain worms translate everything. Even mice and alien speak. return 1 @@ -139,11 +98,6 @@ return 1 if (istype(other, /mob/living/carbon/slime)) return 1 - if (istype(other, /mob/living/simple_animal)) - if(other.universal_speak || src.universal_speak || src.universal_understand) - return 1 - return 0 - return ..() /mob/living/carbon/human/GetVoice() @@ -170,47 +124,3 @@ /mob/living/carbon/human/proc/GetSpecialVoice() return special_voice - -/mob/living/carbon/human/proc/handle_speech_problems(var/message) - var/list/returns[3] - var/verb = "says" - var/handled = 0 - if(silent) - message = "" - handled = 1 - if(sdisabilities & MUTE) - message = "" - handled = 1 - if(wear_mask) - if(istype(wear_mask, /obj/item/clothing/mask/horsehead)) - var/obj/item/clothing/mask/horsehead/hoers = wear_mask - if(hoers.voicechange) - if(mind && mind.changeling && department_radio_keys[copytext(message, 1, 3)] != "changeling") - message = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!") - verb = pick("whinnies","neighs", "says") - handled = 1 - - if((M_HULK in mutations) && health >= 25 && length(message)) - message = "[uppertext(message)]!!!" - verb = pick("yells","roars","hollers") - handled = 1 - if(slurring) - message = slur(message) - verb = pick("stammers","stutters") - handled = 1 - - var/braindam = getBrainLoss() - if(braindam >= 60) - handled = 1 - if(prob(braindam/4)) - message = stutter(message) - verb = pick("stammers", "stutters") - if(prob(braindam)) - message = uppertext(message) - verb = pick("yells like an idiot","says rather loudly") - - returns[1] = message - returns[2] = verb - returns[3] = handled - - return returns diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 95833f0b0f6..6b5dbc96cfd 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -82,52 +82,415 @@ var/list/department_radio_keys = list( if(!istype(dongle)) return if(dongle.translate_binary) return 1 -/mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/italics=0, var/message_range = world.view, var/list/used_radios = list()) +/mob/living/say(var/message) + + /* + Formatting and sanitizing. + */ + + message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + + + /* + Sanity checking and speech failure. + */ + + if (!message) + return + + if(silent) + return + + if (stat == 2) // Dead. + return say_dead(message) + else if (stat) // Unconcious. + return + + if (src.client) + if(client.prefs.muted & MUTE_IC) + src << "\red You cannot speak in IC (muted)." + return + if (src.client.handle_spam_prevention(message,MUTE_IC)) + return + // undo last word status. + + if(ishuman(src)) + var/mob/living/carbon/human/H=src + if(H.said_last_words) + H.said_last_words=0 + + // Mute disability + if (sdisabilities & MUTE) + return + + // Muzzled. + if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) + return + + // Emotes. + if (copytext(message, 1, 2) == "*" && !stat) + return emote(copytext(message, 2)) + + /* + Identity hiding. + */ + var/alt_name = "" + if (istype(src, /mob/living/carbon/human) && name != GetVoice()) + var/mob/living/carbon/human/H = src + alt_name = " (as [H.get_id_name("Unknown")])" + + /* + Now we get into the real meat of the say processing. Determining the message mode. + */ + + var/italics = 0 + var/message_range = null + var/message_mode = null + var/datum/language/speaking = null //For use if a specific language is being spoken. + + var/braindam = getBrainLoss() + if (braindam >= 60) + if(prob(braindam/4)) + message = stutter(message) + if(prob(braindam)) + message = uppertext(message) + + // General public key. Special message handling + var/mmode + var/cprefix = "" + if(length(message) >= 2) + cprefix = copytext(message, 1, 3) + if(cprefix in department_radio_keys) + mmode = department_radio_keys[cprefix] + if (copytext(message, 1, 2) == ";" || (prob(braindam/2) && !mmode)) + message_mode = "headset" + message = copytext(message, 2) + // Begin checking for either a message mode or a language to speak. + else if (length(message) >= 2) + var/channel_prefix = copytext(message, 1, 3) + + //Check if the person is speaking a language that they know. + if(languages.len) + for(var/datum/language/L in languages) + if(lowertext(channel_prefix) == ":[L.key]") + speaking = L + break + message_mode = department_radio_keys[channel_prefix] + if (message_mode || speaking || copytext(message,1,2) == ":") + message = trim(copytext(message, 3)) + if (!(istype(src,/mob/living/carbon/human) || istype(src,/mob/living/carbon/monkey) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src) && (message_mode=="department" || (message_mode in radiochannels)))) + message_mode = null //only humans can use headsets + + if(src.stunned > 2 || (traumatic_shock > 61 && prob(50))) + message_mode = null //Stunned people shouldn't be able to physically turn on their radio/hold down the button to speak into it + + message = capitalize(message) + + if (!message) + return + + if (stuttering) + message = stutter(message) + + /////////////////////////////////////////////////////////// + // VIDEO KILLED THE RADIO STAR V2.0 + // + // EXPERIMENTAL CODE BY YOUR PALS AT /vg/ + /////////////////////////////////////////////////////////// + + var/list/obj/item/used_radios = new + + // Actually speaking on the radio? + var/is_speaking_radio = 0 + + // Devices selected + var/list/devices=list() + + // Select all always_talk devices + // Carbon lifeforms + //if(istype(src, /mob/living/carbon)) + for(var/obj/item/device/radio/R in contents) + if(R.always_talk) + devices += R + + //src << "Speaking on [message_mode]: [message]" + if(message_mode) + switch (message_mode) + if ("right ear") + if(iscarbon(src)) + var/mob/living/carbon/C=src + if(C:r_ear) devices += C:r_ear + message_mode="headset" + message_range = 1 + italics = 1 + + if ("left ear") + if(iscarbon(src)) + var/mob/living/carbon/C=src + if(C:l_ear) devices += C:l_ear + message_mode="headset" + message_range = 1 + italics = 1 + + // Select a headset and speak into it without actually sending a message + if ("fake") + if(iscarbon(src)) + var/mob/living/carbon/C=src + if(C:l_ear) used_radios += C:l_ear + if(C:r_ear) used_radios += C:r_ear + if(issilicon(src)) + var/mob/living/silicon/Ro=src + if(Ro:radio) devices += Ro:radio + message_range = 1 + italics = 1 + if ("fake left ear") + if(iscarbon(src)) + var/mob/living/carbon/C=src + if(C:l_ear) used_radios += C:l_ear + message_range = 1 + italics = 1 + if ("fake right ear") + if(iscarbon(src)) + var/mob/living/carbon/C=src + if(C:r_ear) used_radios += C:r_ear + message_range = 1 + italics = 1 + + if ("intercom") + for (var/obj/item/device/radio/intercom/I in view(1, null)) + devices += I + message_mode=null + message_range = 1 + italics = 1 + + //I see no reason to restrict such way of whispering + if ("whisper") + whisper(message) + return + + if ("binary") + if(robot_talk_understand || binarycheck()) + //message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) //seems redundant + robot_talk(message) + return + + if ("alientalk") + if(alien_talk_understand || hivecheck()) + //message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) //seems redundant + alien_talk(message) + return + + if ("pAI") + message_range = 1 + italics = 1 + + + if("changeling") + if(mind && mind.changeling) + log_say("[key_name(src)] ([mind.changeling.changelingID]): [message]") + for(var/mob/Changeling in mob_list) + if(istype(Changeling, /mob/living/silicon)) continue //WHY IS THIS NEEDED? + if((Changeling.mind && Changeling.mind.changeling) || istype(Changeling, /mob/dead/observer)) + Changeling << "[mind.changeling.changelingID]: [message]" + else if(istype(Changeling,/mob/dead/observer) && (Changeling.client && Changeling.client.prefs.toggles & CHAT_GHOSTEARS)) + Changeling << "[mind.changeling.changelingID] (: (Follow) [message]" + return + else // headset, department channels. + if(iscarbon(src)) + var/mob/living/carbon/C=src + if(C:l_ear) devices += C:l_ear + if(C:r_ear) devices += C:r_ear + if(issilicon(src)) + var/mob/living/silicon/Ro=src + if(Ro:radio) + devices += Ro:radio + else + warning("[src] has no radio!") + message_range = 1 + italics = 1 + if(devices.len>0) + for(var/obj/item/device/radio/R in devices) + if(istype(R)) + R.talk_into(src, message, message_mode) + used_radios += R + is_speaking_radio = 1 + + ///////////////////////////////////////////////////////////////// + // + ///////////////////////////////////////////////////////////////// + + var/datum/gas_mixture/environment = loc.return_air() + if(environment) + var/pressure = environment.return_pressure() + if (pressure < SAY_MINIMUM_PRESSURE) //in space no one can hear you scream + italics = 1 + message_range = 1 + + var/list/listening + + listening = get_mobs_in_view(message_range, src) + var/list/onscreen = viewers() + for(var/mob/M in player_list) + if (!M.client) + continue //skip monkeys and leavers + if (istype(M, /mob/new_player)) + continue + if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTEARS) && src.client) // src.client is so that ghosts don't have to listen to mice + listening|=M var/turf/T = get_turf(src) + var/list/W = hear(message_range, T) - var/list/listening = list() - if(T) + for (var/obj/O in ((W | contents)-used_radios)) + W |= O - var/list/hear = hear(message_range, T) - var/list/hearturfs = list() + for (var/mob/M in W) + W |= M.contents - for(var/I in hear) - if(istype(I, /mob/)) - var/mob/M = I - listening += M - hearturfs += M.locs[1] - for(var/obj/item/device/radio/R in contents) - spawn(0) - R.hear_talk(src, message, verb, speaking) - else if(istype(I, /obj/)) - var/obj/O = I - hearturfs += O.locs[1] - if(istype(O, /obj/item/device/radio)) - spawn(0) - O.hear_talk(src, message, verb, speaking) - for(var/mob/M in player_list) - if(M.stat == DEAD && client && (M.client.prefs.toggles & CHAT_GHOSTEARS)) - listening |= M - continue - if(M.locs[1] in hearturfs) - listening |= M + for (var/atom/A in W) + if(istype(A, /mob/living/simple_animal/parrot)) //Parrot speech mimickry + if(A == src) + continue //Dont imitate ourselves + + var/mob/living/simple_animal/parrot/P = A + if(P.speech_buffer.len >= 10) + P.speech_buffer.Remove(pick(P.speech_buffer)) + P.speech_buffer.Add(message) + + if(istype(A, /obj/)) //radio in pocket could work, radio in backpack wouldn't --rastaf0 + var/obj/O = A + spawn (0) + if(O && !istype(O.loc, /obj/item/weapon/storage)) + O.hear_talk(src, message) + + + var/list/heard_a = list() // understood us + var/list/heard_b = list() // didn't understand us + + for (var/M in listening) + if(hascall(M,"say_understands")) + if (M:say_understands(src,speaking)) + heard_a += M + else + heard_b += M + else + heard_a += M var/speech_bubble_test = say_test(message) var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") spawn(30) del(speech_bubble) - if(used_radios.len) - for(var/mob/living/M in hearers(5, src)) - if(M != src) - M.show_message("[src] talks into [used_radios.len ? used_radios[1] : "radio"]") + for(var/mob/M in hearers(5, src)) + if(M != src && is_speaking_radio) + M:show_message("[src] talks into [used_radios.len ? used_radios[1] : "radio"]") +/* if(message_mode == null) + var/accent = "en-us" + var/voice = "m7" + var/speed = 175 + var/pitch = 0 + var/echo = 10 + if(istype(src, /mob/living/silicon/ai)) + echo = 90 + if(istype(src, /mob/living/silicon/robot)) + echo = 60 + if(src.client && src.client.prefs) + accent = src.client.prefs.accent + voice = src.client.prefs.voice + speed = src.client.prefs.talkspeed + pitch = src.client.prefs.pitch + src:texttospeech(message, speed, pitch, accent, "+[voice]", echo)*/ - for(var/mob/M in listening) - if(M.client) - M << speech_bubble - M.hear_say(message,verb,speaking,alt_name, italics, src) + var/rendered = null + if (length(heard_a)) + var/message_a = say_quote(message,speaking) + + if (italics) + message_a = "[message_a]" + + var/message_ghost = "[message_a]" // bold so ghosts know the person is in view. + rendered = "[GetVoice()][alt_name] [message_a]" + var/rendered2 = null + + for (var/mob/M in heard_a) + //BEGIN TELEPORT CHANGES +/* if(message_mode == null && fexists("sound/playervoices/[src.ckey].ogg")) + if(M.client) + if(M.client.prefs) + if(M.client.prefs.sound & SOUND_VOICES) + M.playsound_local(get_turf(src), "sound/playervoices/[src.ckey].ogg", 70, 0, 5, 1)*/ + if(!istype(M, /mob/new_player)) + if(M && M.stat == DEAD) + if (M.client && M.client.prefs && (M.client.prefs.toggles & CHAT_GHOSTEARS) && M in onscreen) + rendered2 = "[GetVoice()] [alt_name] (Follow) [message_ghost]" + else + rendered2 = "[GetVoice()] [alt_name] (Follow) [message_a]" + M:show_message(rendered2, 2) + continue + //END CHANGES + + if(hascall(M,"show_message")) + var/deaf_message = "" + var/deaf_type = 1 + if(M != src) + deaf_message = "[name][alt_name] talks but you cannot hear them." + else + deaf_message = "You cannot hear yourself!" + deaf_type = 2 // Since you should be able to hear yourself without looking + M:show_message(rendered, 2, deaf_message, deaf_type) + M << speech_bubble + + if (length(heard_b)) + + var/message_b + message_b = stars(message) + message_b = say_quote(message_b,speaking) + + if (italics) + message_b = "[message_b]" + + rendered = "[name][alt_name] [message_b]" //Voice_name isn't too useful. You'd be able to tell who was talking presumably. + var/rendered2 = null + + for (var/M in heard_b) + var/mob/MM + if(istype(M, /mob)) + MM = M + if(!istype(MM, /mob/new_player) && MM) + if(MM && MM.stat == DEAD) + rendered2 = "[voice_name] (Follow) [message_b]" + MM:show_message(rendered2, 2) + continue + if(hascall(M,"show_message")) + M:show_message(rendered, 2) + M << speech_bubble + + /* + if(M.client) + + if(!M.client.bubbles || M == src) + var/image/I = image('icons/effects/speechbubble.dmi', B, "override") + I.override = 1 + M << I + */ /* + + flick("[presay]say", B) + + if(istype(loc, /turf)) + B.loc = loc + else + B.loc = loc.loc + + spawn() + sleep(11) + del(B) + */ + + //talking items + for(var/obj/item/weapon/O in view(3,src)) + if(O.listening_to_players) + O.catchMessage(message, src) log_say("[name]/[key] : [message]") @@ -136,3 +499,5 @@ var/list/department_radio_keys = list( /mob/living/proc/GetVoice() return name + + diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index d63078c05e6..24c827c46ad 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -433,13 +433,9 @@ var/list/ai_list = list() if (href_list["track"]) var/mob/target = locate(href_list["track"]) in mob_list -/* var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list if(A && target) A.ai_actual_track(target) -*/ - if(target) - ai_actual_track(target) return else if (href_list["faketrack"]) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 562c2c06fcf..a7ad5045bae 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -2,15 +2,11 @@ var/ending = copytext(text, length(text)) if (ending == "?") - return "queries" + return "queries, \"[text]\""; else if (ending == "!") - return "declares" + return "declares, \"[text]\""; - return "states" - -#define IS_AI 1 -#define IS_ROBOT 2 -#define IS_PAI 3 + return "states, \"[text]\""; /mob/living/silicon/say(var/message) if (!message) @@ -27,98 +23,45 @@ message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) return say_dead(message) - var/bot_type = 0 //Let's not do a fuck ton of type checks, thanks. - if(istype(src, /mob/living/silicon/ai)) - bot_type = IS_AI - else if(istype(src, /mob/living/silicon/robot)) - bot_type = IS_ROBOT - else if(istype(src, /mob/living/silicon/pai)) - bot_type = IS_PAI - - var/mob/living/silicon/ai/AI = src //and let's not declare vars over and over and over for these guys. - var/mob/living/silicon/robot/R = src - var/mob/living/silicon/pai/P = src - - //Must be concious to speak if (stat) return - var/verb = say_quote(message) - var/message_mode = null + if (length(message) >= 2) + var/prefix = copytext(message, 1, 3) + if (department_radio_keys[prefix] == "binary") + if(istype(src, /mob/living/silicon/pai)) + return ..(message) + message = copytext(message, 3) + message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - - if(copytext(message,1,2) == ";") - message_mode = "general" // I don't know why but regular radio = fuck you we ain't broadcasting, pAI mode was what was in old say code. - message = trim(copytext(message,2)) - - else if(length(message) >= 2) - var/channel_prefix = copytext(message, 1 ,3) - if(!message_mode) - message_mode = department_radio_keys[channel_prefix] - - if(message_mode && bot_type == IS_ROBOT) - if(message_mode != "binary" && !R.is_component_functioning("radio")) - src << "\red Your radio isn't functional at this time." - return - - - if(message_mode && message_mode != "general") - message = trim(copytext(message,3)) - - switch(message_mode) - if("department") - switch(bot_type) - if(IS_AI) - AI.holopad_talk(message) - if(IS_ROBOT) - log_say("[key_name(src)] : [message]") - R.radio.talk_into(src,message,message_mode,verb) - if(IS_PAI) - log_say("[key_name(src)] : [message]") - P.radio.talk_into(src,message,message_mode,verb) - return - - if("binary") - switch(bot_type) - if(IS_ROBOT) - if(!R.is_component_functioning("comms")) - src << "\red Your binary communications component isn't functional." - return - if(IS_PAI) - src << "You do not appear to have that function" + // TODO: move the component system up to silicon so we don't have to use this ugly hack.. + if(istype(src, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = src + if(!R.is_component_functioning("comms")) + src << "\red Your binary communications component isn't functional." return - robot_talk(message) - return - if("general") - switch(bot_type) - if(IS_AI) - src << "Yeah, not yet, sorry" - if(IS_ROBOT) - log_say("[key_name(src)] : [message]") - R.radio.talk_into(src,message,null,verb) - if(IS_PAI) - log_say("[key_name(src)] : [message]") - P.radio.talk_into(src,message,null,verb) - return - else - if(message_mode && message_mode in radiochannels) - switch(bot_type) - if(IS_AI) - src << "You don't have this function yet, I'm working on it" - return - if(IS_ROBOT) - log_say("[key_name(src)] : [message]") - R.radio.talk_into(src,message,message_mode,verb) - if(IS_PAI) - log_say("[key_name(src)] : [message]") - P.radio.talk_into(src,message,message_mode,verb) + else if (department_radio_keys[prefix] == "alientalk") + if(!alien_talk_understand) return + message = copytext(message, 3) + message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + + alien_talk(message) + else if (department_radio_keys[prefix] == "department") + if(isAI(src)&&client)//For patching directly into AI holopads. + var/mob/living/silicon/ai/U = src + message = copytext(message, 3) + message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + U.holopad_talk(message) + else//Will not allow anyone by an active AI to use this function. + src << "This function is not available to you." return - - - return ..(message,null,verb) + else + return ..(message) + else + return ..(message) //For holopads only. Usable by AI. /mob/living/silicon/ai/proc/holopad_talk(var/message) @@ -171,6 +114,9 @@ if(istype(S , /mob/living/silicon/ai)) var/renderedAI = "Robotic Talk, [name] [message_a]" S.show_message(renderedAI, 2) + else if(istype(S , /mob/dead/observer) && S.stat == DEAD) + var/rendered2 = "Robotic Talk, [name] (Follow) [message_a]" + S.show_message(rendered2, 2) else S.show_message(rendered, 2) @@ -179,6 +125,9 @@ if(istype(S , /mob/living/silicon/ai)) var/renderedAI = "Robotic Talk, [name] [message_a]" S.show_message(renderedAI, 2) + else if(istype(S , /mob/dead/observer) && S.stat == DEAD) + var/rendered2 = "Robotic Talk, [name] (Follow) [message_a]" + S.show_message(rendered2, 2) else S.show_message(rendered, 2) @@ -205,12 +154,10 @@ message = say_quote(message) - rendered = "Robotic Talk, [name] [message_a]" +// rendered = "Robotic Talk, [name] [message_a]" + rendered = null for (var/mob/M in dead_mob_list) if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping - M.show_message(rendered, 2) - -#undef IS_AI -#undef IS_ROBOT -#undef IS_PAI + rendered = "Robotic Talk, [name] (Follow) [message_a]" + M.show_message(rendered, 2) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 6ee6b1f975c..13f320472ba 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -13,7 +13,6 @@ a_intent = "harm" stop_automated_movement = 1 status_flags = CANPUSH - universal_speak = 1 attack_sound = 'sound/weapons/punch1.ogg' min_oxy = 0 max_oxy = 0 diff --git a/code/modules/mob/living/simple_animal/head.dm b/code/modules/mob/living/simple_animal/head.dm index 9b12edb4ed6..fdf381f279a 100644 --- a/code/modules/mob/living/simple_animal/head.dm +++ b/code/modules/mob/living/simple_animal/head.dm @@ -8,7 +8,6 @@ speak_emote = list("clicks") emote_hear = list("clicks") emote_see = list("clacks") - universal_speak = 1 speak_chance = 1 turns_per_move = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat @@ -57,4 +56,4 @@ src.say(msg) else var/msg = pick(comments) - src.say(msg) + src.say(msg) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 22378a85779..a8f575c64ee 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -48,7 +48,6 @@ response_disarm = "gently moves aside the" response_harm = "swats the" stop_automated_movement = 1 - universal_speak = 1 var/parrot_state = PARROT_WANDER //Hunt for a perch when created var/parrot_sleep_max = 25 //The time the parrot sits while perched before looking around. Mosly a way to avoid the parrot's AI in life() being run every single tick. diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index ae0fc99e5db..7c31082bba2 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -8,7 +8,6 @@ icon_dead = "shade_dead" maxHealth = 50 health = 50 - universal_speak = 1 speak_emote = list("hisses") emote_hear = list("wails","screeches") response_help = "puts their hand through" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 93752329e03..3a8fae11f1f 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -17,7 +17,7 @@ var/turns_per_move = 1 var/turns_since_move = 0 - universal_speak = 0 //No, just no. + universal_speak = 0 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. @@ -531,14 +531,3 @@ if (M.occupant) return 0 return 1 - - -/mob/living/simple_animal/say(var/message, var/datum/language/speaking= null, var/verb = "says") - - if(stat) - return - if(speak_emote.len) - verb = pick(speak_emote) - - ..(message, null, verb) - diff --git a/code/modules/mob/living/simple_animal/worm.dm b/code/modules/mob/living/simple_animal/worm.dm index 389e5bad53b..80868dc19e6 100644 --- a/code/modules/mob/living/simple_animal/worm.dm +++ b/code/modules/mob/living/simple_animal/worm.dm @@ -19,8 +19,6 @@ maxHealth = 30 health = 30 - universal_speak =1 - stop_automated_movement = 1 animate_movement = SYNC_STEPS @@ -196,4 +194,4 @@ for(var/atom/movable/stomachContent in contents) //or poop it out loc.contents += stomachContent - return + return \ No newline at end of file diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index e6f7e0a20d5..ceabbc244e8 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -475,12 +475,4 @@ src << browse(null, "window=playersetup") //closes the player setup window src << browse(null, "window=preferences") //closes job selection src << browse(null, "window=mob_occupation") - - - -/mob/new_player/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) - return - -/mob/new_player/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) - return - + src << browse(null, "window=latechoices") //closes late job selection