A bunch of saycode fixes

Fixes:
	- Xenomorphs having cutoff speech
	- Brains fucking up all of say
	- Redundant say code under slimes, simple animals, xenomorphs
	- Redundant say_quotes for humans
	- All mobs will now correctly process language speech verbs

Features:
	- Xenomorphs now have custom speech verbs for common
	- Default languges for Xenomorphs makes more sense, and work
	  properly
This commit is contained in:
Tigercat2000
2015-09-18 21:19:14 -07:00
parent 942c1abc76
commit 8f90964629
8 changed files with 48 additions and 106 deletions
+19 -1
View File
@@ -39,9 +39,27 @@
verbs += /mob/living/carbon/verb/mob_sleep
verbs += /mob/living/verb/lay_down
internal_organs += new /obj/item/organ/brain/xeno
..()
/mob/living/carbon/alien/get_default_language()
if(default_language)
return default_language
return all_languages["Xenomorph"]
/mob/living/carbon/alien/say_quote(var/message, var/datum/language/speaking = null)
var/verb = "hisses"
var/ending = copytext(message, length(message))
if(speaking && (speaking.name != "Galactic Common")) //this is so adminbooze xenos speaking common have their custom verbs,
verb = speaking.get_spoken_verb(ending) //and use normal verbs for their own languages and non-common languages
else
if(ending=="!")
verb = "roars"
else if(ending=="?")
verb = "hisses curiously"
return verb
/mob/living/carbon/alien/adjustToxLoss(amount)
storedPlasma = min(max(storedPlasma + amount,0),max_plasma) //upper limit of max_plasma, lower limit of 0
updatePlasmaDisplay()
@@ -1,44 +0,0 @@
/mob/living/carbon/alien/say(var/message)
var/verb = "says"
var/message_range = world.view
if(client)
if(client.prefs.muted & MUTE_IC)
src << "\red You cannot speak in IC (Muted)."
return
message = trim_strip_html_properly(message)
if(stat == 2)
return say_dead(message)
if(copytext(message,1,2) == "*")
return emote(copytext(message,2))
var/datum/language/speaking = parse_language(message)
if(speaking)
message = copytext(message,2+length(speaking.key))
else
var/quickcheck = get_default_language()
if(quickcheck)
speaking = get_default_language()
else //because no clue how to actually set xeno's default language since they aren't a species, just do it here
speaking = all_languages["Xenomorph"]
var/ending = copytext(message, length(message))
if (speaking)
// This is broadcast to all mobs with the language,
// irrespective of distance or anything else.
if(speaking.flags & HIVEMIND)
speaking.broadcast(src,trim(message))
return
//If we've gotten this far, keep going!
verb = speaking.get_spoken_verb(ending)
message = trim(message)
if(!message || stat)
return
..(message, speaking, verb, null, null, message_range, null)
+12 -23
View File
@@ -1,39 +1,28 @@
//TODO: Convert this over for languages.
/mob/living/carbon/brain/say(var/message)
/mob/living/carbon/brain/say(var/message, var/datum/language/speaking = null)
if (silent)
return
if (stat == 2) // Dead.
return say_dead(message)
if(!(container && (istype(container, /obj/item/device/mmi) || istype(container, /obj/item/device/mmi/posibrain))))
return //No MMI, can't speak, bucko./N
else
var/datum/language/speaking = parse_language(message)
if(speaking)
message = copytext(message, 2+length(speaking.key))
var/verb = "says"
var/ending = copytext(message, length(message))
if (speaking)
verb = speaking.get_spoken_verb(ending)
else
if(ending=="!")
verb=pick("exclaims","shouts","yells")
if(ending=="?")
verb="asks"
if(prob(emp_damage*4))
if(prob(10))//10% chane to drop the message entirely
return
else
message = Gibberish(message, (emp_damage*6))//scrambles the message, gets worse when emp_damage is higher
if(speaking && speaking.flags & HIVEMIND)
speaking.broadcast(src,trim(message))
return
if(istype(container, /obj/item/device/mmi/radio_enabled))
var/radio_MMI_message = message //split off so the MMI can get a trimmed message without fucking up living/say()
if(!speaking)
speaking = parse_language(message)
if(speaking)
radio_MMI_message = copytext(message, 2 + length(speaking.key))
else
speaking = get_default_language()
var/obj/item/device/mmi/radio_enabled/R = container
if(R.radio)
spawn(0) R.radio.hear_talk(src, trim(sanitize(message)), verb, speaking)
..(trim(message), speaking, verb)
spawn(0) R.radio.hear_talk(src, trim(sanitize(radio_MMI_message)), say_quote(radio_MMI_message), speaking)
..(message)
@@ -97,22 +97,6 @@
/mob/living/carbon/human/proc/GetSpecialVoice()
return special_voice
/mob/living/carbon/human/say_quote(var/message, var/datum/language/speaking = null)
var/verb = "says"
var/ending = copytext(message, length(message))
if(speaking)
verb = speaking.get_spoken_verb(ending)
else
if(ending == "!")
return pick("exclaims", "shouts", "yells")
if(ending == "?")
return "asks"
return verb
/mob/living/carbon/human/handle_speech_problems(var/message, var/verb)
var/list/returns[3]
var/speech_problem_flag = 0
+5 -12
View File
@@ -1,20 +1,13 @@
/mob/living/carbon/slime/say(var/message)
var/verb = say_quote(message)
if(copytext(message,1,2) == "*")
return emote(copytext(message,2))
return ..(message, null, verb)
/mob/living/carbon/slime/say_quote(var/text)
/mob/living/carbon/slime/say_quote(var/text, var/datum/language/speaking)
var/verb = "telepathically chirps"
var/ending = copytext(text, length(text))
if (ending == "?")
return "telepathically asks";
verb = "telepathically asks"
else if (ending == "!")
return "telepathically cries";
verb = "telepathically cries"
return "telepathically chirps";
return verb
/mob/living/carbon/slime/say_understands(var/other)
if (istype(other, /mob/living/carbon/slime))
@@ -544,10 +544,10 @@
gib()
return
/mob/living/simple_animal/say(var/message)
/mob/living/simple_animal/say_quote(var/message)
var/verb = "says"
if(speak_emote.len)
verb = pick(speak_emote)
..(message, null, verb)
return verb
+10 -7
View File
@@ -84,14 +84,17 @@
/mob/proc/say_quote(var/message, var/datum/language/speaking = null)
var/verb = "says"
var/ending = copytext(message, length(message))
if(ending=="!")
verb=pick("exclaims","shouts","yells")
else if(ending=="?")
verb="asks"
var/verb = "says"
var/ending = copytext(message, length(message))
return verb
if(speaking)
verb = speaking.get_spoken_verb(ending)
else
if(ending=="!")
verb = pick("exclaims","shouts","yells")
else if(ending=="?")
verb = "asks"
return verb
/mob/proc/emote(var/act, var/type, var/message)