Fix slurring, commanding, alarms and loopsounds (#15339)

This commit is contained in:
Wildkins
2022-12-17 12:13:50 +01:00
committed by GitHub
parent c5aa03ed44
commit 4de081600a
8 changed files with 58 additions and 10 deletions
+14 -2
View File
@@ -125,7 +125,13 @@
if(!message_range)
message_range = world.view
. = ..(message, say_verb, message_mode, message_range)
var/list/speech_params = ..(message, say_verb, message_mode, message_range)
if(speech_params)
message = speech_params[HSP_MSG] || message
say_verb = speech_params[HSP_VERB] || say_verb
message_mode = speech_params[HSP_MSGMODE] || message_mode
message_range = speech_params[HSP_MSGRANGE] || message_range
. = TRUE
if(losebreath >= 5 && prob(50))
var/list/words = splittext(message," ")
@@ -151,7 +157,13 @@
say_verb = pick(M.say_verbs)
. = TRUE
return species.handle_speech_problems(message, say_verb, message_mode, message_range) || .
if(.)
return list(
HSP_MSG = message,
HSP_VERB = say_verb,
HSP_MSGMODE = message_mode,
HSP_MSGRANGE = message_range,
)
/mob/living/carbon/human/get_radio()
var/list/headsets = list()
+14 -1
View File
@@ -122,6 +122,14 @@ proc/get_radio_key_from_channel(var/channel)
say_verb = pick("slobbers", "slurs")
. = TRUE
if(.)
return list(
HSP_MSG = message,
HSP_VERB = say_verb,
HSP_MSGMODE = message_mode,
HSP_MSGRANGE = message_range
)
/mob/living/proc/get_stutter_verbs()
return list("stammers", "stutters")
@@ -223,7 +231,12 @@ proc/get_radio_key_from_channel(var/channel)
var/message_range = world.view
if(!(speaking && (speaking.flags & NO_STUTTER)))
message = handle_autohiss(message, speaking)
handle_speech_problems(message, verb, message_mode, message_range)
var/list/hsp_params = handle_speech_problems(message, verb, message_mode, message_range)
if(hsp_params)
message = hsp_params[HSP_MSG] || message
verb = hsp_params[HSP_VERB] || verb
message_mode = hsp_params[HSP_MSGMODE] || message_mode
message_range = hsp_params[HSP_MSGRANGE] || message_range
if(!message || message == "")
return FALSE
@@ -43,15 +43,23 @@
return
short_name = input
/mob/living/simple_animal/hostile/commanded/proc/get_command(cmdtext, list/searchnames)
searchnames |= list("everyone", "everybody")
for(var/name in searchnames)
if(dd_hasprefix(cmdtext, name))
return copytext(cmdtext, length(name) + 1)
/mob/living/simple_animal/hostile/commanded/think()
while(command_buffer.len > 0)
var/mob/speaker = command_buffer[1]
var/text = command_buffer[2]
var/filtered_name = lowertext(html_decode(name))
var/filtered_short = lowertext(html_decode(short_name))
if(dd_hasprefix(text,filtered_name) || dd_hasprefix(text,filtered_short) || dd_hasprefix(text,"everyone") || dd_hasprefix(text, "everybody")) //in case somebody wants to command 8 bears at once.
var/substring = copytext(text,length(filtered_name)+1) //get rid of the name.
listen(speaker,substring)
var/substring = get_command(text, list(filtered_name, filtered_short))
if(substring)
listen(speaker, substring)
command_buffer.Remove(command_buffer[1],command_buffer[2])
..()
switch(stance)