Merge pull request #5708 from Walter0o/pai_lang_fix

adds proper pAI language based translator
This commit is contained in:
Zuhayr
2014-07-21 16:00:58 +09:30
5 changed files with 39 additions and 14 deletions

6
code/modules/mob/language.dm Normal file → Executable file
View File

@@ -54,7 +54,7 @@
speech_verb = "shrieks"
colour = "vox"
key = "v"
flags = RESTRICTED | UNTRANSLATABLE
flags = RESTRICTED
/datum/language/diona
name = "Rootspeak"
@@ -62,7 +62,7 @@
speech_verb = "creaks and rustles"
colour = "soghun"
key = "q"
flags = RESTRICTED | UNTRANSLATABLE
flags = RESTRICTED
/datum/language/human
name = "Sol Common"
@@ -106,7 +106,7 @@
// Can we speak this language, as opposed to just understanding it?
/mob/proc/can_speak(datum/language/speaking)
return ((universal_speak && !(speaking.flags & UNTRANSLATABLE)) || speaking in src.languages)
return (universal_speak || speaking in src.languages)
//TBD
/mob/verb/check_languages()

2
code/modules/mob/living/silicon/pai/pai.dm Normal file → Executable file
View File

@@ -52,6 +52,8 @@
var/obj/item/radio/integrated/signal/sradio // AI's signaller
var/translator_on = 0 // keeps track of the translator module
/mob/living/silicon/pai/New(var/obj/item/device/paicard)
canmove = 0

40
code/modules/mob/living/silicon/pai/software.dm Normal file → Executable file
View File

@@ -266,7 +266,7 @@
src.medHUD = !src.medHUD
if("translator")
if(href_list["toggle"])
src.universal_speak = !src.universal_speak
src.translator_toggle()
if("doorjack")
if(href_list["jack"])
if(src.cable && src.cable.machine)
@@ -325,7 +325,7 @@
if(s == "medical HUD") //This file has to be saved as ANSI or this will not display correctly
dat += "<a href='byond://?src=\ref[src];software=medicalhud;sub=0'>Medical Analysis Suite</a> [(src.medHUD) ? "<font color=#55FF55><3E></font>" : "<font color=#FF5555><3E></font>"] <br>"
if(s == "universal translator") //This file has to be saved as ANSI or this will not display correctly
dat += "<a href='byond://?src=\ref[src];software=translator;sub=0'>Universal Translator</a> [(src.universal_speak) ? "<font color=#55FF55><3E></font>" : "<font color=#FF5555><3E></font>"] <br>"
dat += "<a href='byond://?src=\ref[src];software=translator;sub=0'>Universal Translator</a> [(src.translator_on) ? "<font color=#55FF55><3E></font>" : "<font color=#FF5555><3E></font>"] <br>"
if(s == "projection array")
dat += "<a href='byond://?src=\ref[src];software=projectionarray;sub=0'>Projection Array</a> <br>"
if(s == "camera jack")
@@ -438,9 +438,9 @@
for (var/ch_name in radio.channels)
dat+=radio.text_sec_channel(ch_name, radio.channels[ch_name])
dat+={"[radio.text_wires()]</TT></body></html>"}
return dat
// Crew Manifest
/mob/living/silicon/pai/proc/softwareManifest()
var/dat = ""
@@ -498,7 +498,7 @@
/mob/living/silicon/pai/proc/softwareTranslator()
var/dat = {"<h2>Universal Translator</h2><hr>
When enabled, this device will automatically convert all spoken and written languages into a format that any known recipient can understand.<br><br>
The device is currently [ (src.universal_speak) ? "<font color=#55FF55>en" : "<font color=#FF5555>dis" ]abled</font>.<br>
The device is currently [ (src.translator_on) ? "<font color=#55FF55>en" : "<font color=#FF5555>dis" ]abled</font>.<br>
<a href='byond://?src=\ref[src];software=translator;sub=0;toggle=1'>Toggle Device</a><br>
"}
return dat
@@ -538,7 +538,7 @@
return dat
dat += {"<b>Bioscan Results for [M]</b>: <br>
Overall Status: [M.stat > 1 ? "dead" : "[M.health]% healthy"] <br><br>
<b>Scan Breakdown</b>: <br>
Respiratory: [M.getOxyLoss() > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][M.getOxyLoss()]</font><br>
Toxicology: [M.getToxLoss() > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][M.getToxLoss()]</font><br>
@@ -676,7 +676,7 @@
dat += "</li>"
dat += "</ul>"
dat += "Messages: <hr>"
dat += "<style>td.a { vertical-align:top; }</style>"
dat += "<table>"
for(var/index in pda.tnote)
@@ -685,4 +685,28 @@
else
dat += addtext("<tr><td class='a'><i><b>From</b></i></td><td class='a'><i><b>&rarr;</b></i></td><td><i><b><a href='byond://?src=\ref[src];software=pdamessage;target=",index["target"],"'>", index["owner"],"</a>: </b></i>", index["message"], "<br></td></tr>")
dat += "</table>"
return dat
return dat
/mob/living/silicon/pai/proc/translator_toggle()
// Sol Common, Tradeband and Gutter are added with New() and are therefore the current default, always active languages
if(translator_on)
translator_on = 0
remove_language("Sinta'unathi")
remove_language("Siik'maas")
remove_language("Siik'tajr")
remove_language("Skrellian")
src << "\blue Translator Module toggled OFF."
else
translator_on = 1
add_language("Sinta'unathi")
add_language("Siik'maas")
add_language("Siik'tajr", 0)
add_language("Skrellian")
src << "\blue Translator Module toggled ON."

View File

@@ -74,7 +74,7 @@
return 1
//Universal speak makes everything understandable, for obvious reasons.
else if((src.universal_speak || src.universal_understand) && !(speaking.flags & UNTRANSLATABLE))
else if(src.universal_speak || src.universal_understand)
return 1
//Languages are handled after.

View File

@@ -748,7 +748,6 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
#define RESTRICTED 2 // Language can only be accquired by spawning or an admin.
#define NONVERBAL 4 // Language has a significant non-verbal component. Speech is garbled without line-of-sight
#define SIGNLANG 8 // Language is completely non-verbal. Speech is displayed through emotes for those who can understand.
#define UNTRANSLATABLE 16 // Language is not translated by universal_speak or universal_understand.
//Flags for zone sleeping
#define ZONE_ACTIVE 1
@@ -812,4 +811,4 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
#define IS_DIONA 1
#define IS_VOX 2
#define IS_SKRELL 3
#define IS_UNATHI 4
#define IS_UNATHI 4