HoS_PRC8/_mod/_module/nss/offset_h.nss
Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

81 lines
2.0 KiB
Plaintext

//////////////////////////////////////////////////////////////////
// offset_h - Provides an offset location based on a location
// By Deva Bryson Winblood. 04/27/2005
//////////////////////////////////////////////////////////////////
///////////////////////////
// PROTOTYPES
///////////////////////////
// FILE: offset_h FUNCTION: GetOffsetLocation()
// This function will return a location a random direction from
// the start location within specified range.
location GetOffsetLocation(location lStart,float fRange=0.5);
///////////////////////////
// FUNCTIONS
///////////////////////////
vector fnGetNewVector(vector vStart,float fRange)
{ // PURPOSE: Return a vector
vector vNew;
int nR=d8();
if (nR==1)
{ // north
vNew.x=vStart.x;
vNew.y=vStart.y+fRange;
} // north
else if (nR==2)
{ // east
vNew.y=vStart.y;
vNew.x=vStart.x+fRange;
} // east
else if (nR==3)
{ // south
vNew.x=vStart.x;
vNew.y=vStart.y-fRange;
} // south
else if (nR==4)
{ // west
vNew.y=vStart.y;
vNew.x=vStart.x-fRange;
} // west
else if (nR==5)
{ // north east
vNew.y=vStart.y+(fRange/2.0);
vNew.x=vStart.x+(fRange/2.0);
} // north east
else if (nR==6)
{ // south east
vNew.y=vStart.y-(fRange/2.0);
vNew.x=vStart.x+(fRange/2.0);
} // south east
else if (nR==7)
{ // south west
vNew.y=vStart.y-(fRange/2.0);
vNew.x=vStart.x-(fRange/2.0);
} // south west
else
{ // north west
vNew.y=vStart.y+(fRange/2.0);
vNew.x=vStart.x-(fRange/2.0);
} // north west
return vNew;
} // fnGetNewVector()
location GetOffsetLocation(location lStart,float fRange=0.5)
{
vector vStart=GetPositionFromLocation(lStart);
vector vNew;
object oArea=GetAreaFromLocation(lStart);
vNew=fnGetNewVector(vStart,fRange);
while(vNew.x<0.0||vNew.y<0.0)
{ // get valid vector
vNew=fnGetNewVector(vStart,fRange);
} // get valid vector
return Location(oArea,vNew,0.0);
} // GetOffsetLocation()
//void main(){}