mirror of
https://github.com/Aurorastation/Aurora-Old.git
synced 2026-08-24 05:06:16 +01:00
Conversion of sign language
- Added visual languages - Sign Language is now a visual language - New visual languages can be added by adding 'vocal = 0' to the language datum - Visual languages can be used in a vacuum - Visual languages can't be used on the radio
This commit is contained in:
@@ -160,3 +160,49 @@
|
||||
heard = "<span class = 'game_say'>...<i>You almost hear someone talking</i>...</span>"
|
||||
|
||||
src << heard
|
||||
|
||||
/mob/proc/see_say(var/message, var/verb = "signs", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/signer = null)
|
||||
if(!client)
|
||||
return
|
||||
|
||||
if(sleeping || stat == 1)
|
||||
return
|
||||
|
||||
var/style = "body"
|
||||
if(!say_understands(signer,language))
|
||||
if(istype(signer,/mob/living/simple_animal))
|
||||
var/mob/living/simple_animal/S = signer
|
||||
message = pick(S.speak)
|
||||
else
|
||||
message = stars(message)
|
||||
|
||||
if(language)
|
||||
verb = language.speech_verb
|
||||
style = language.colour
|
||||
|
||||
var/signer_name = signer.name
|
||||
if(istype(signer, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = signer
|
||||
signer_name = H.GetVoice()
|
||||
|
||||
if(italics)
|
||||
message = "<i>[message]</i>"
|
||||
|
||||
var/track = null
|
||||
if(istype(src, /mob/dead/observer))
|
||||
if(italics && client.prefs.toggles & CHAT_GHOSTRADIO)
|
||||
return
|
||||
if(signer_name != signer.real_name && signer.real_name)
|
||||
signer_name = "[signer.real_name] ([signer_name])"
|
||||
track = "(<a href='byond://?src=\ref[src];track=\ref[signer]'>follow</a>) "
|
||||
if(client.prefs.toggles & CHAT_GHOSTEARS && signer in view(src))
|
||||
message = "<b>[message]</b>"
|
||||
world << "[signer.name] / [signer_name] / [signer.real_name]"
|
||||
if(sdisabilities & BLIND)
|
||||
if(signer == src)
|
||||
src << "<span class='warning'>You cannot see yourself sign!</span>"
|
||||
else
|
||||
if((signer_name != signer.name) || (istype(src.wear_mask, /obj/item/clothing/mask/gas)))
|
||||
src << "<span class='game say'><span class='name'>[signer.name]</span>[track] [verb], <span class='message'><span class='[style]'>\"[message]\"</span></span></span>"
|
||||
else
|
||||
src << "<span class='game say'><span class='name'>[signer_name]</span>[alt_name]</span>[track] [verb], <span class='message'><span class='[style]'>\"[message]\"</span></span></span>"
|
||||
@@ -10,6 +10,7 @@
|
||||
var/key = "x" // Character used to speak in language eg. :o for Unathi.
|
||||
var/flags = 0 // Various language flags.
|
||||
var/native // If set, non-native speakers will have trouble speaking.
|
||||
var/vocal = 1 // Is a spoken language
|
||||
|
||||
/datum/language/unathi
|
||||
name = "Sinta'unathi"
|
||||
@@ -87,6 +88,7 @@
|
||||
speech_verb = "signs"
|
||||
colour = "say_quote"
|
||||
key = "4"
|
||||
vocal = 0
|
||||
|
||||
// Language handling.
|
||||
/mob/proc/add_language(var/language)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
if(name != GetVoice())
|
||||
alt_name = "(as [get_id_name("Unknown")])"
|
||||
|
||||
|
||||
//parse the radio code and consume it
|
||||
var/message_mode = parse_message_mode(message)
|
||||
if (message_mode)
|
||||
@@ -30,13 +30,12 @@
|
||||
message = copytext(message,2)
|
||||
else
|
||||
message = copytext(message,3)
|
||||
|
||||
|
||||
//parse the language code and consume it
|
||||
var/datum/language/speaking = parse_language(message)
|
||||
if (speaking)
|
||||
verb = speaking.speech_verb
|
||||
message = copytext(message,3)
|
||||
|
||||
message = capitalize(trim(message))
|
||||
|
||||
if(speech_problem_flag)
|
||||
@@ -54,8 +53,12 @@
|
||||
if(ending=="?")
|
||||
verb="asks"
|
||||
|
||||
var/list/obj/item/used_radios = new
|
||||
if(speaking) //speaking = null if used through say without a language
|
||||
if(!speaking.vocal)
|
||||
sign(message, verb, speaking, alt_name, italics, message_range)
|
||||
return
|
||||
|
||||
var/list/obj/item/used_radios = new
|
||||
switch (message_mode)
|
||||
if("headset")
|
||||
if(l_ear && istype(l_ear,/obj/item/device/radio))
|
||||
@@ -185,7 +188,7 @@
|
||||
return special_voice
|
||||
|
||||
|
||||
/*
|
||||
/*
|
||||
***Deprecated***
|
||||
let this be handled at the hear_say or hear_radio proc
|
||||
This is left in for robot speaking when humans gain binary channel access until I get around to rewriting
|
||||
@@ -204,7 +207,7 @@
|
||||
|
||||
return verb
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/handle_speech_problems(var/message)
|
||||
|
||||
@@ -138,3 +138,47 @@ var/list/department_radio_keys = list(
|
||||
|
||||
/mob/living/proc/GetVoice()
|
||||
return name
|
||||
|
||||
/mob/living/sign(var/message, var/verb="signs", var/datum/language/speaking = null, var/alt_name="", var/italics=0, var/message_range = world.view)
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
var/list/listening = list()
|
||||
if(T)
|
||||
|
||||
var/list/objects = list()
|
||||
var/list/hear = hear(message_range, T)
|
||||
var/list/hearturfs = list()
|
||||
|
||||
for(var/I in hear)
|
||||
if(istype(I, /mob/))
|
||||
var/mob/M = I
|
||||
listening += M
|
||||
hearturfs += M.locs[1]
|
||||
for(var/obj/O in M.contents)
|
||||
objects |= O
|
||||
else if(istype(I, /obj/))
|
||||
var/obj/O = I
|
||||
hearturfs += O.locs[1]
|
||||
objects |= O
|
||||
|
||||
for(var/mob/M in player_list)
|
||||
if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTEARS))
|
||||
listening |= M
|
||||
continue
|
||||
if(M.loc && M.locs[1] in hearturfs)
|
||||
listening |= M
|
||||
|
||||
// Can object see signing?
|
||||
// Only if they have cameras.
|
||||
// Do any objects currently have cameras? -- SoundScopes
|
||||
|
||||
// for(var/obj/O in objects)
|
||||
// spawn(0)
|
||||
// if(O) //It's possible that it could be deleted in the meantime.
|
||||
// O.hear_talk(src, message, verb, speaking)
|
||||
|
||||
for(var/mob/M in listening)
|
||||
M.see_say(message,verb,speaking,alt_name, italics, src)
|
||||
|
||||
log_say("[name]/[key] : [message]")
|
||||
@@ -1,6 +1,9 @@
|
||||
/mob/proc/say()
|
||||
return
|
||||
|
||||
/mob/proc/sign()
|
||||
return
|
||||
|
||||
/mob/verb/whisper()
|
||||
set name = "Whisper"
|
||||
set category = "IC"
|
||||
@@ -157,7 +160,7 @@
|
||||
if(length(message) >= 2)
|
||||
var/channel_prefix = copytext(message, 1 ,3)
|
||||
return department_radio_keys[channel_prefix]
|
||||
|
||||
|
||||
return null
|
||||
|
||||
//parses the language code (e.g. :j) from text, such as that supplied to say.
|
||||
|
||||
Reference in New Issue
Block a user