/* track someone ...basically, it is just a follow command 8) */
#define TRACK (int)this_player()->query_tracking()
status find_where_the_creature_is(object ob);
status track(string str, string alt_type) {
object obj;
obj = present(str, environment(this_player()));
if(!obj) {
if(!obj=find_living(str)) {
write("There is no "+capitalize(str)+" to track.\n");
return 1;
}
find_where_the_creature_is(obj);
return 1;
}
if(obj->query_followers(this_player())) {
write("You are already following "+obj->short()+".\n");
write("You stop following "+obj->short()+"\n");
obj->remove_followers(this_player());
return 1;
}
write("You start to follow "+obj->short()+".\n");
obj->add_followers(this_player());
return 1;
}
status find_where_the_creature_is(object ob) {
object room;
int resist;
if(!ob) {
write("You're unsure where the tracks lead.\n");
return 1;
}
room = environment(ob);
resist = (int)ob->query_resistance() + (int)ob->query_stealth();
if((status)room->query_no_track()) {
write("You're unsure where the tracks lead.\n");
return 1;
}
if(random(resist) > random(TRACK)) {
write("You're unsure where the tracks lead.\n");
return 1;
}
write("You think "+ob->query_name()+"'s tracks lead to "+
room->short()+"\n");
return 1;
}