#include <player.h>
inherit COMMAND_BASE;
int cmd(string str) {
string desc;
desc = TP->query_desc();
if (!str) {
if (desc)
write("Description reads:\n" + TP->query_cap_name() + " " +
desc + "\n");
else
write("No description set.\n");
return 1;
}
else if (str == "clear") {
write("Description cleared.\n");
TP->set_desc(0);
return 1;
}
else if (str == "edit") {
/*
* The cap name is stuck on so they can see what their desc will look
* like.
*/
if (desc)
this_player()->do_edit(sprintf("%-=*s", this_player()->query_cols(),
this_player()->query_cap_name() + " " +
replace(desc, "\n", "\n\n") + "\n"),
"finish_desc_edit");
else
this_player()->do_edit("", "finish_desc_edit");
return 1;
}
else if (strlen(str) > MAX_DESC) {
notify_fail("Description unchanged. Given description was too long. "
"Maximum allowed length is " + MAX_DESC+ ".\n");
return 0;
}
TP->set_desc(str);
write("Description set.\n");
return 1;
}
void finish_desc_edit(string str) {
string cname;
if (!str) {
write("Description unchanged.\n");
return;
}
/* Save them some trouble if they started off with their name... */
cname = this_player()->query_cap_name();
if (str[0 .. strlen(cname)] == cname + " ")
str = str[strlen(cname) + 1 .. 10000];
str = replace(str, ({ "\n\n", "$NEW_LINE$", "\n", " " }));
str = replace(str, "$NEW_LINE$", "\n");
if (strlen(str) > MAX_DESC) {
write("Description unchanged. Given description was too long. "
"Maximum allowed length is " + MAX_DESC+ ".\n");
return;
}
TP->set_desc(str);
write("Description set.\n");
return;
}
mixed *query_patterns() {
return ({ "", (: cmd(0) :),
"<string'description'>", (: cmd($4[0]) :),
"edit", (: cmd("edit") :),
"clear", (: cmd("clear") :) });
}