/**
* Funky little command to let players silently set their position,
* with the aim of encouraging players to improve their health and
* well-being by experimenting with new and exciting positions.
*
* @author Mansarde
* @started 9-apr-99
*/
// For SET_POSITION_COST and NO_POWER
#include <player.h>
// Max length of a position
#define MAXLEN 30
inherit "/cmds/base";
private string* _bad_words;
void create() {
_bad_words = ({ "teach", "skill", "finger", "lesson", ":)", ";)",
"chainsaw", "0", "1", "2", "3", "4", "5", "6", "7", "8",
"9", ":", ";", ",", "'", "*", "%", "!",
"@", "~", "`", "#", "$", "^", "&", "(", ")",
"_", "-", "=", "+", "{", "}", "[", "]",
"<", ".", ">", "?", "/", "\\",
":->", ":-)", ";-)", ";->", "\""});
} /* create() */
/** @ignore yes */
int cmd( string new_pos ) {
object player = this_player();
string word, tmp;
if (!new_pos) {
write("You are " + player->query_position_short() + ".\n");
return 1;
}
if ( strlen(new_pos) > MAXLEN ) {
add_failed_mess("Sorry, your position cannot be more than " +
MAXLEN + " letters long.\n");
return 0;
}
if ( player->query_sp() < SET_POSITION_COST ) {
add_failed_mess( NO_POWER );
return 0;
}
new_pos = replace_string(new_pos, "^", "");
new_pos = replace_string(new_pos, "%", "");
// Check it for invalid words.
tmp = lower_case(new_pos);
foreach(word in _bad_words) {
if(strsrch(tmp, word) != -1) {
add_failed_mess("You cannot bring yourself to set that position.\n");
return 0;
}
}
player->set_position( new_pos );
player->adjust_sp( - SET_POSITION_COST );
tell_object( player, "People will now see:\n" +
player->query_cap_name() + " is " + new_pos + ".\n");
return 1;
} /* cmd */
/** @ignore yes */
mixed *query_patterns() {
return ({ "", (: cmd(0) :),
"<string'new position'>", (: cmd( $4[0] ) :) });
} /* query_patterns */