Man language
From LSWiki
Current revision
Files
/lib/language.h /mod/character/language.c /mod/character/communication.c
Description
The language system mediates ordinary communication between intelligent beings. The languages usable are defined in language.h, as well as the different levels of comprehension possible with them.
Wizards automatically understand all languages and are 100% comprehensible to all who hear them, no matter what language they use. With normal communication commands, one may append "in <language>" to the end of the string to be spoken.
Functions
string language_status();
Returns a natural-language string outlining the living's linguistic
capabilities.
void add_language(string lang);
Adds a language at base (no comprehension) level to the target's
languages data. Must be a valid language from language.h
string query_native_language();
Returns the subject's native language. The native language is the one
spoken by default if none is specified; also, if a message heard is in
this language, no text such as "in Anglic" or "in Sperethiel" will be
appended to the end.
string set_native_language(string lang);
Sets the subject's native language. He must at least be able to
recognize this language.
void set_language_level(string lang, string level);
Sets the subject's comprehension level with 'lang' to 'level'. 'level'
must be a valid comprehension level from language.h; if the subject
does not already have the language in its data mapping, it will be
added.
void set_comprehend_func(object obj);
Sets a comprehend_func object for purposes of tongues/babel spells
and the like. comprehend_func in obj will be sent three arguments: the
player attempting to comprehend something, the language the message
is in, and the appropriate comprehension type flag (see the section
on query_language_comprehension()). It should return a percentile
modifier to the person's chance of understanding a given word.
status query_recognize_language(string lang);
Returns whether or not the person will recognize the name of the
language specified. If it is in their data mapping at all, they
will recognize it by name.
status query_speak_language(string lang);
Returns whether or not the person understands enough of the language
to attempt to speak it.
string query_language_level(string lang);
Returns the person's base comprehension level with the language.
int query_language_comprehension(string lang, int type);
Returns the person's percentile comprehension level with the language.
This is computed using the base comprehension level, their intelligence
bonus, their linguistics skill if any, and any comprehend_func present.
The value returned is their chance of understanding any given word of
the language. The 'type' variable should be one of six macros from
language.h: Comp_Speak for ability to speak, Comp_Hear for deciphering
spoken language, Comp_Read for understanding written language,
Comp_Write for writing, Comp_Send for telepathic transmission that
uses language, and Comp_Receive for similar telepathic reception.
If the type is Comp_Read or Comp_Write, then the comprehension level
is limited to 1.5 times the character's Literacy skill before any
comprehend_func modifiers are applied.
string message_comprehension(string text, string lang, int type, int mod);
Processes the string 'text' according to the subject's comprehension
of 'lang', modified percentile-wise by 'mod'. If the person cannot
understand any of it, No_Comprehension from language.h will be
returned. The 'type' argument is the same as is used by the function
query_language_comprehension() above, and has the same effects.
