/* follower */ inherit "obj/shadows/shadow"; object who; object follower; status follow_self_stop; void follow(object arg1, object arg2) { who = arg1; follower = arg2; shadow_object(who); } status move_player(string dest, mixed opt, status safe) { status flag; string tmp; if(follow_self_stop) { destruct(this_object()); return 0; } follow_self_stop = 1; flag = (status)who->move_player(dest,opt,safe); if(!follower) { destruct(this_object()); return flag; } if(dest) { sscanf(dest,"%s#%s",dest,tmp); command(dest, follower); /*why this instead of follower->move_player()*/ } /*there maybe extra things to do. eg. pub */ follow_self_stop = 0; if(!present(follower, environment(who))) { destruct(this_object()); } return flag; } object query_follow_object() { return this_object(); }