From 2d34d142a78bbbb9e2a45863b3f31dcedd84da53 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Sun, 20 Apr 2014 04:37:46 -0500 Subject: [PATCH] Say code fixes. Lobby players won't hear stuffs Universal hearing with animals won't be a thing. Players won't hear stuff if they are sleeping, though somethings might slip through... Conflicts: code/modules/mob/living/carbon/human/say.dm code/modules/mob/living/simple_animal/simple_animal.dm code/modules/mob/new_player/new_player.dm --- code/modules/mob/hear_say.dm | 53 +++++++++++++++++-- code/modules/mob/living/carbon/human/say.dm | 9 +++- .../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 +++- 9 files changed, 85 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index a175009a03a..06a76218e78 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -4,10 +4,19 @@ if(!client) return + if(sleeping) + hear_sleep(message) + return + var/style = "body" - if(language) - if(!say_understands(speaker,language)) + 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 @@ -36,15 +45,29 @@ 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(language) - if(!say_understands(speaker,language)) + + 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 @@ -90,3 +113,25 @@ 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/say.dm b/code/modules/mob/living/carbon/human/say.dm index cc4e78d0b27..387e3e72209 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -8,7 +8,7 @@ if(client.prefs.muted & MUTE_IC) src << "\red You cannot speak in IC (Muted)." return - + if(stat == 2) return say_dead(message) @@ -128,8 +128,8 @@ ..(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,6 +139,11 @@ 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() diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 13f320472ba..6ee6b1f975c 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -13,6 +13,7 @@ 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 fdf381f279a..9b12edb4ed6 100644 --- a/code/modules/mob/living/simple_animal/head.dm +++ b/code/modules/mob/living/simple_animal/head.dm @@ -8,6 +8,7 @@ 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 @@ -56,4 +57,4 @@ src.say(msg) else var/msg = pick(comments) - src.say(msg) \ No newline at end of file + src.say(msg) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index a8f575c64ee..22378a85779 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -48,6 +48,7 @@ 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 7c31082bba2..ae0fc99e5db 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -8,6 +8,7 @@ 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 3a8fae11f1f..93752329e03 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 + 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. @@ -531,3 +531,14 @@ 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 80868dc19e6..389e5bad53b 100644 --- a/code/modules/mob/living/simple_animal/worm.dm +++ b/code/modules/mob/living/simple_animal/worm.dm @@ -19,6 +19,8 @@ maxHealth = 30 health = 30 + universal_speak =1 + stop_automated_movement = 1 animate_movement = SYNC_STEPS @@ -194,4 +196,4 @@ for(var/atom/movable/stomachContent in contents) //or poop it out loc.contents += stomachContent - return \ No newline at end of file + return diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index ceabbc244e8..e6f7e0a20d5 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -475,4 +475,12 @@ src << browse(null, "window=playersetup") //closes the player setup window src << browse(null, "window=preferences") //closes job selection src << browse(null, "window=mob_occupation") - src << browse(null, "window=latechoices") //closes late job selection + + + +/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 +