NWScript:
object GetFirstPCInArea(object oAreaTest)
{
object oPCTestValid = GetFirstPC();
while(GetArea(oPCTestValid)!=oAreaTest&&GetIsObjectValid(oPCTestValid))
oPCTestValid = GetNextPC();
return(oPCTestValid);
}
object GetNextPCInArea(object oAreaTest)
{
object oPCTestValid = GetNextPC();
while(GetArea(oPCTestValid)!=oAreaTest&&GetIsObjectValid(oPCTestValid))
oPCTestValid = GetNextPC();
return(oPCTestValid);
}
location OffSetLocation(location lPlayer)
{
int iDirection=d8();
float fX;
float fY;
float fF;
switch(iDirection) {
case 1:
fX=0.0; fY=10.0; fF=270.0;
break;
case 2:
fX=0.0; fY=-10.0; fF=90.0;
break;
case 3:
fX=10.0; fY=0.0; fF=180.0;
break;
case 4:
fX=-10.0; fY=0.0; fF=0.0;
break;
case 5:
fX=10.0; fY=10.0; fF=225.0;
break;
case 6:
fX=10.0; fY=-10.0; fF=135.0;
break;
case 7:
fX=-10.0; fY=-10.0; fF=45.0;
break;
case 8:
fX=-10.0; fY=10.0; fF=315.0;
break;
}
object oTemp = GetAreaFromLocation(lPlayer);
vector vStart = GetPositionFromLocation(lPlayer);
vector vOffset = Vector(fX,fY);
vector vEndvector = vStart+vOffset;
location lEndLocation = Location(oTemp,vEndvector,fF);
return(lEndLocation);
}
int GetAreaPCCount(object oArea)
{
int iPCCount=0;
object oPCTest = GetFirstPCInArea(oArea);
while(GetIsObjectValid(oPCTest))
{
oPCTest = GetNextPCInArea(oArea);
iPCCount++;
}
return(iPCCount);
}
object GetRandomPCInArea(object oArea)
{
int iRandomPCNumber = d100();
while(iRandomPCNumber>GetAreaPCCount(oArea))
iRandomPCNumber = d100();
object oReturnPC = GetFirstPCInArea(oArea);
int iCounter = 0;
while(iCounter<iRandomPCNumber&&GetIsObjectValid(oReturnPC))
{
GetNextPCInArea(oArea);
if(!GetIsObjectValid(oReturnPC))
GetFirstPCInArea(oArea);
iCounter++;
}
return(oReturnPC);
}