/* -*- LPC -*- */
/*
* $Locker: $
* $Id: sp_eak.c,v 1.10 2002/11/12 23:35:45 ceres Exp $
* $Log: sp_eak.c,v $
* Revision 1.10 2002/11/12 23:35:45 ceres
* Can't remember
*
* Revision 1.8 2002/07/16 20:11:03 pinkfish
* Add in the default languiage information.
*
* Revision 1.7 2001/03/10 20:28:46 ceres
* Fixed problems from womens day
*
* Revision 1.6 2001/03/10 20:27:50 taffyd
* Forcibly unlocked by ceres
*
* Revision 1.5 2001/03/07 21:52:22 pinkfish
* Fix up a fail message in speak.
*
* Revision 1.4 2000/10/15 01:40:43 presto
* Removed cap_words function.... now a simul_efun
*
* Revision 1.3 1999/05/19 04:31:06 pinkfish
* Clear something up.
*
* Revision 1.2 1999/05/19 04:23:23 pinkfish
* Capitalise the names.
*
* Revision 1.1 1998/01/06 05:28:43 ceres
* Initial revision
*
*/
inherit "/cmds/base";
#include <language.h>
#define TP this_player()
int cmd(string which)
{
string *langs;
string skill;
int i;
mapping skills;
skills = TP->query_skills();
if (!which) {
langs = LANGUAGE_HAND->query_languages();
for (i = 0; i < sizeof(langs); i++) {
if (TP->
query_skill(LANGUAGE_HAND->
query_language_spoken_skill(langs[i])) > 1
|| TP->query_skill(LANGUAGE_HAND->
query_language_written_skill(langs[i])) > 1) {
} else {
langs = langs[0..i - 1] + langs[i + 1..];
i--;
}
}
write("You are currently speaking " +
cap_words(TP->query_current_language()) + " and your default "
"language is " + cap_words(TP->query_default_language()) + ".\n");
write("You can speak " +
query_multiple_short(map(langs, (: cap_words :)) +
({ "Grunt" })) + ".\n");
write("Please note that the language you are speaking is used for "
"writing as well, so some of the languages may be just written.\n");
return 1;
}
which = lower_case(which);
skill = LANGUAGE_HAND->query_language_spoken_skill(which);
if (!skill) {
return notify_fail("You cannot speak that language.\n");
}
if((!TP->query_skill(skill) && which != "grunt" && which != "general") ||
(which == "general" && !TP->query_creator() && interactive(TP)))
return notify_fail("You don't know that language.\n");
if (which == this_player()->query_current_language()) {
add_failed_mess("You are already speaking " + cap_words(which) + ".\n");
return 0;
}
if (!TP->set_language(which)) {
return notify_fail("Argh... something weird happened.\n");
}
write("Now using " + cap_words(which) + " for speaking and writing.\n");
return 1;
} /* cmd() */
mixed *query_patterns()
{
string *languages;
string tmp;
languages = LANGUAGE_HAND->query_languages();
if ( TP->query_womens_day() ) {
languages += ({ "wommon" });
}
tmp = implode(languages + map(languages, (: cap_words :)), "|");
return ({ "{" + tmp + "}", (: cmd(implode($4, " ")) :),
"", (: cmd(0) :) });
/* return ({ (TP->query_womens_day()? "wommon" : "{" + tmp + "}"),
(: cmd(implode($4, " ")) :), "", (: cmd(0) :) }); */
} /* query_patterns() */