52 lines
1.5 KiB
Plaintext
52 lines
1.5 KiB
Plaintext
|
// hc_track_start
|
||
|
// Starts tracking of creatures
|
||
|
// Archaegeo 17 Aug, 2002
|
||
|
|
||
|
#include "hc_inc_track"
|
||
|
#include "hc_text_track"
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
int nDC;
|
||
|
object oTracker=OBJECT_SELF;
|
||
|
//object oTrackPlc=GetNearestObjectByTag("Tracker");
|
||
|
//if(GetIsObjectValid(oTrackPlc))
|
||
|
nDC=10;
|
||
|
//if(!nDC || !GetIsObjectValid(oTrackPlc))
|
||
|
// {
|
||
|
// SendMessageToPC(oTracker,NOTPOSSIBLE);
|
||
|
// return;
|
||
|
// }
|
||
|
object oCritter;
|
||
|
object oArea=GetArea(oTracker);
|
||
|
int nLevel=GetLevelByClass(CLASS_TYPE_RANGER, oTracker);
|
||
|
int nCnt=1;
|
||
|
float fDistance;
|
||
|
int nDCAdj;
|
||
|
int nDCbyHD;
|
||
|
vector vCritter;
|
||
|
oCritter=GetNearestObject(OBJECT_TYPE_CREATURE, oTracker, nCnt);
|
||
|
while(GetIsObjectValid(oCritter) &&
|
||
|
GetArea(oCritter)==oArea)
|
||
|
{
|
||
|
fDistance=GetDistanceBetween(oCritter, oTracker);
|
||
|
nDCAdj=FloatToInt(fDistance/10.0);
|
||
|
nDCbyHD=GetHitDice(oCritter);
|
||
|
if((d20()+nLevel) > (nDC+nDCAdj+nDCbyHD) &&
|
||
|
(!GetLocalInt(oCritter,"NOTRACK") &&
|
||
|
!GetHasFeat(FEAT_TRACKLESS_STEP, oCritter)))
|
||
|
{
|
||
|
vCritter=GetPosition(oCritter);
|
||
|
AssignCommand(oTracker,SetFacingPoint (vCritter));
|
||
|
AssignCommand(oTracker,GetDirection(GetFacing(oTracker),oTracker,
|
||
|
oCritter));
|
||
|
}
|
||
|
nCnt++;
|
||
|
oCritter=GetNearestObject(OBJECT_TYPE_CREATURE, oTracker, nCnt);
|
||
|
}
|
||
|
|
||
|
/////Witch Wake: Added feedback to completion in case no creatures were found.
|
||
|
DelayCommand(0.5, SendMessageToPC(oTracker, "Tracking Completed."));
|
||
|
return;
|
||
|
}
|