Language Utilities #125

Parent #79Owner #2Flags Source QuestCore.db

Aliases: Language Utilities

8 verbs · 5 properties · 0 children

Verbs

VerbSpecFlagsDefinerLines
speakingthis none thisrxd#12510
can_speakthis none thisrxd#1256
languagesthis none thisrxd#1256
encryptthis none thisrxd#12513
can_speak_languagesthis none thisrxd#12510
in_line_forthis none thisrxd#12523
advance_levelthis none thisrxd#12523
announcethis none thisrxd#12521

Properties

PropertyDefinerFlagsOwnerValue
help_msg#79rc#2<clear>
key#1c#20
aliases#1rc#2{"Language Utilities"}
description#1rc#2"This object contains code for using languages in a roleplay situation."
object_size#1r#36{5522, 1539462952}

Ancestry

Ancestors (nearest first): #79 Generic Utilities Package#1 Root Class

Children: none

Call graph

calls n125_1 #125:can_speak n125_2 #125:languages n125_1->n125_2 n125_3 #125:encrypt n125_3->n125_1 n125_0 #125:speaking n125_3->n125_0 n20_39 #20:words n125_3->n20_39 n20_12 #20:strip_chars n125_3->n20_12 n20_14 #20:uppercase n125_3->n20_14 n20_49 #20:reverse n125_3->n20_49 n20_15 #20:capitalize n125_3->n20_15 n125_4 #125:can_speak_languages n125_4->n125_1 n125_4->n125_2 n125_5 #125:in_line_for n125_5->n125_1 n125_5->n125_2 n125_7 #125:announce n125_7->n125_3 n125_7->n125_0 n125_7->n125_5 n125_6 #125:advance_level n125_7->n125_6

Source

speaking

Spec this none thisFlags rxdOwner #36Definer #125

Referenced by

Source

1"ARGs => what is [1] speaking?";
2if (!`!(!property_info(args[1], "speaking")) ! E_PROPNF => 0')
3speaking = $default_lang;
4else
5speaking = args[1].speaking;
6if (speaking == $nothing)
7speaking = $default_lang;
8endif
9endif
10return speaking;

can_speak

Spec this none thisFlags rxdOwner #36Definer #125

Referenced by

Source

1"ARGs => can [1] speak [2]?";
2langs = this:languages(args[1]);
3lin = args[2] in langs[1];
4if ((lin && (llin = langs[2][lin])) && (llin >= 2.0))
5return 1;
6endif

languages

Spec this none thisFlags rxdOwner #36Definer #125

Referenced by

Source

1"ARGs => what [1] has in its .languages property, or $default_lang.";
2if (!`!(!property_info(args[1], "languages")) ! E_PROPNF => 0')
3return {{$default_lang}, {2.0}};
4else
5return args[1].languages;
6endif

encrypt

Spec this none thisFlags rxdOwner #36Definer #125

Referenced by

Source

1"ARGs => [1] is saying [3] to [2]";
2talking = args[1];
3listening = args[2];
4saying = args[3];
5talking_lang = this:speaking(talking);
6if (`(listening.stats_current[2][3] < 2.5) && listening.alive ! ANY => 0' || `(talking.stats_current[2][3] < 2.5) && talking.alive ! ANY => 0')
7extry = (x = $string_utils:words(saying)) ? $string_utils:strip_chars($string_utils:lowercase($string_utils:reverse(x[1])), "!,.?':;()<>") | "";
8return $string_utils:capitalize((($string_utils.alphabet[random($)] + "uh") + $string_utils.alphabet[random($)]) + extry);
9elseif (this:can_speak(listening, talking_lang) || (!`!(!property_info(listening, "languages")) ! E_PROPNF => 0'))
10return saying;
11else
12return talking_lang:encrypt(listening, saying);
13endif

can_speak_languages

Spec this none thisFlags rxdOwner #36Definer #125

Referenced by

Source

1"ARGs => what languages can [1] speak?";
2langs = this:languages(@args)[1];
3cslangs = {};
4for l in (langs)
5(ticks_left() < 4000) && suspend(0);
6if (this:can_speak(args[1], l))
7cslangs = {@cslangs, l};
8endif
9endfor
10return cslangs;

in_line_for

Spec this none thisFlags rxdOwner #36Definer #125

Referenced by

Source

1"ARGs => the language [1]'s 'in <lang>' blurb for person [2]";
2lang = args[1];
3p = args[2];
4if (`(p.stats_current[2][3] < 2.5) && p.alive ! ANY => 0')
5return "but you can't understand the sounds.";
6endif
7if ((lang == $default_lang) && this:can_speak(p, lang))
8return "";
9endif
10langs = $lang_utils:languages(p);
11lin = lang in langs[1];
12if (!lin)
13return ("in " + lang.unknown_lang_desc) + ".";
14endif
15cl = langs[2][lin];
16if (lang == $default_lang)
17return "";
18endif
19if (cl > lang.unknown_level)
20return ("in " + lang.lang_name) + ".";
21else
22return ("in " + lang.unknown_lang_desc) + ".";
23endif

advance_level

Spec this none thisFlags rxdOwner #36Definer #125

Referenced by

Source

1"ARGs => person [1] will advance in language [2]";
2if (!`!(!property_info(p = args[1], "skills")) ! E_PROPNF => 0')
3return;
4endif
5lang = args[2];
6langs = p.languages;
7lin = lang in langs[1];
8if (!lin)
9langs = p.languages = {{@p.languages[1], lang}, {@p.languages[2], 0.0}};
10lin = length(langs[1]);
11endif
12cl = langs[2][lin];
13lskill = ((ls = p.skills[2]["language" in p.skills[1]]) >= 0.0001) ? ls | 0.1;
14if (cl > 2.0)
15return p.skills[2]["language" in p.skills[1]] = p.skills[2]["language" in p.skills[1]] + (0.0001 / lskill);
16endif
17if (cl > 1.0)
18amt = lang.learning_speeds[2] * sqrt(lskill);
19else
20amt = lang.learning_speeds[1] * sqrt(lskill);
21endif
22langs[2][lin] = langs[2][lin] + amt;
23p.languages = langs;

announce

Spec this none thisFlags rxdOwner #36Definer #125

Referenced by

Source

1"ARGs => [1] announces [3] to [2], replacing %lang_encrypt in [3] with [4]";
2s = args[1];
3d = args[2];
4fstr = args[3];
5rstr = args[4];
6if (typeof(d) == OBJ)
7d = {d};
8endif
9if (`(s.stats_current[2][3] < 2.5) && s.alive ! ANY => 0')
10for c in (d)
11(ticks_left() < 4000) && suspend(0);
12`c:tell(strsub(fstr, "%lang_encrypt", $lang_utils:encrypt(s, c, rstr)), " as if it really meant something.") ! ANY';
13endfor
14return;
15endif
16for c in (d)
17(ticks_left() < 4000) && suspend(0);
18ilf = this:in_line_for(lang = this:speaking(s), c);
19(((random(3) - 1) && (c in connected_players())) && (c != s)) && this:advance_level(c, lang);
20`c:tell(strsub(fstr, "%lang_encrypt", $lang_utils:encrypt(s, c, rstr)), " ", ilf) ! ANY';
21endfor