#include <lib.h>
#include <daemons.h>
inherit LIB_DAEMON;
varargs int cmd(string str){
object env = environment(this_player());
int err;
mixed dest;
if(env && living(env)) env = environment(env);
if(!env){
write("There are no exits here.");
return 1;
}
if(!str){
write("Please specify an exit.");
return 1;
}
dest = env->GetExit(str);
if(!dest) dest = env->GetEnter(str);
if(!dest){
string coord = ROOMS_D->GetCoordinates(env);
if(coord){
int x, y, z, res = sscanf(coord,"%d,%d,%d",x,y,z);
string des_coord;
mixed tmp;
if(res == 3){
des_coord = calculate_coordinates(str, x, y, z, "string");
}
if(sizeof(des_coord)){
tmp = ROOMS_D->GetGrid(des_coord);
if(sizeof(tmp)) dest = tmp["room"];
}
}
}
if(!dest || !stringp(dest)){
write("It appears that you can't noclip in that direction.");
return 1;
}
err = catch( dest = load_object(dest) );
if(err){
write("There seems to be a problem with that direction.");
write("You remain where you are.");
return 1;
}
this_player()->eventMoveLiving(dest);
if(!environment(this_player()) || environment(this_player()) != dest){
write("It appears that you are unable to noclip there.");
}
return 1;
}
void help()
{
write("Syntax: noclip <direction>\n\nAllows you to walk through doors and other obstacles, under most circumstances.\n\nSee also: go, swim, fly, crawl");
}