// File : /std/body/track.c
// Creator : Watcher@TMI (03/28/93)
//
// This file is inherited by /std/body, and allows living
// objects to track other living objects.
int follow_other(object target, object where, string dir) {
int prop, skill, tskill;
if((object)this_object()->query_temp("track") != target || !dir) return 0;
// If this object can't see ... they can't very well track someone.
if(!this_object()->query("vision")) return 0;
skill = (int)this_object()->query_skill("Wilderness");
tskill = (int)target->query_skill("Wilderness");
// This is the probability formula to see if the track
// attempt succeeds. I have not really tested it fully
// to see if it is accurate, so you may want to tweak
// it a bit, after you see tracking in a true setting.
prop = 20 + skill*3 - tskill*2;
if(random(100) > prop) {
tell_object(this_object(), "You lose sight of " +
(string)target->query("cap_name") + ".\n");
if(!random(4)) this_object()->improve_skill("Wilderness", 1);
this_object()->delete_temp("track");
return 0; }
this_object()->improve_skill("Wilderness", 1); // A little reward
tell_object(this_object(),
"You follow " + (string)target->query("cap_name") + " " + dir + ".\n");
command( dir );
return 1; }