In looking at your script, you don't need to create an aura. In fact, that script has alot of redundancy and it (seems to?) have a logic error of using "else if (d100()<=25)" three times.
Anyway, your particular problem can be addressed by modifying all the sectons of code that look like this:
while (GetIsObjectValid(oTarget))
{
AssignCommand(oTarget, ClearAllActions());
AssignCommand(oTarget, ActionJumpToLocation(lTarget));
oTarget=GetNextFactionMember(oPC, FALSE);
}
}
To this:
while (GetIsObjectValid(oTarget)) {
float fMetersAway = 10.0;
if (GetIsPC(oTarget) && (GetArea(oTarget) != GetArea(oPC) || GetDistanceBetween(oPC, oTarget) > fMetersAway)) {
RemoveFromParty(oTarget);
SendMessageToPC(oPC, "You have moved on before gathering your party, and have left "+GetName(oTarget)+" behind.");
}
else {
AssignCommand(oTarget, ClearAllActions());
AssignCommand(oTarget, ActionJumpToLocation(lTarget));
}
oTarget=GetNextFactionMember(oPC, FALSE);
}
---
HOWEVER, because this script's redundancy and those logic errors bugged me so much I rewrote it for you to something more simplified and fixed the logic errors (assuming they are indeed 'errors'). So just replace all the code in the script you provided with this:
void DoTravel(object oPC, location lTarget);
void main()
{
object oPC = GetEnteringObject();
location lTarget;
if (!GetIsPC(oPC)) return;
int iRoll = d100(); //Logic error(?) fix recommended by Tchos
if (iRoll<=5) lTarget = GetLocation(GetWaypointByTag("DesertOasis_W"));
else if (iRoll<=25) lTarget = GetLocation(GetWaypointByTag("DesertRoadNW_W"));
else if (iRoll<=50) lTarget = GetLocation(GetWaypointByTag("DesertRoadEW1_W")); //Thayan - Logic error? Changed <=25 to <=50
else if (iRoll<=75) lTarget = GetLocation(GetWaypointByTag("DesertRoadEW2_W")); //Thayan - Logic Error? Changed <=25 to <=75
else if (iRoll<=100) lTarget = GetLocation(GetWaypointByTag("DesertRoadSW_W"));
DoTravel(oPC, lTarget);
}
void DoTravel(object oPC, location lTarget)
{
//only do the jump if the location is valid.
//check if it is in a valid area.
//the script will stop if the location isn't valid - meaning that nothing put after the teleport will fire.
if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
object oTarget = GetFirstFactionMember(oPC, FALSE);
while (GetIsObjectValid(oTarget)) {
//Thayan - If the oTarget is a PC is not in the same area, or more than fMetersAway meters away, boot them from the party
float fMetersAway = 10.0; //Thayan - Change this to an acceptable distance a member of the party can be from the entering PC in order to travel with them
if (GetIsPC(oTarget) && (GetArea(oTarget) != GetArea(oPC) || GetDistanceBetween(oPC, oTarget) > fMetersAway)) {
RemoveFromParty(oTarget);
SendMessageToPC(oPC, "You have moved on before gathering all of your party, and have left "+GetName(oTarget)+" behind.");
}
else {
AssignCommand(oTarget, ClearAllActions());
AssignCommand(oTarget, ActionJumpToLocation(lTarget));
}
oTarget=GetNextFactionMember(oPC, FALSE);
}
}