/* The extra value on move_char is for disabling the character seeing any
movement message when it is TRUE and showing when it is FALSe. You can
either edit the calls below or the move_char() function.
*/
void do_run( CHAR_DATA *ch, char * argument) {
char arg1[MSL], arg2[MSL];
int value, door = 0, i;
argument = one_argument (argument, arg1);
strcpy (arg2, argument);
if (!strstr(arg1, "north") && !strstr(arg1, "south") && !strstr(arg1, "east")
&& !strstr(arg1, "west") && !strstr(arg1, "n") && !strstr(arg1, "s")
&& !strstr(arg1, "e") && !strstr(arg1, "w")) {
send_to_char("run <direction> <amount>\n\r", ch);
return;
}
value = atoi(arg2);
if (value < 1 || value > 20) {
send_to_char("You can run up to twenty and no less then one.", ch);
return;
}
if (!str_cmp (arg1, "n") || !str_cmp (arg1, "north"))
door = 0;
else if (!str_cmp (arg1, "e") || !str_cmp (arg1, "east"))
door = 1;
else if (!str_cmp (arg1, "s") || !str_cmp (arg1, "south"))
door = 2;
else if (!str_cmp (arg1, "w") || !str_cmp (arg1, "west"))
door = 3;
else if (!str_cmp (arg1, "u") || !str_cmp (arg1, "up"))
door = 4;
else if (!str_cmp (arg1, "d") || !str_cmp (arg1, "down"))
door = 5;
for (i = 1; i <= value; ++i)
if (i != value)
move_char( ch, door, FALSE, TRUE);
else
move_char( ch, door, FALSE, FALSE);
}