#include "x4_inc_functions" #include "_sh_inc_list" void main() { object oPC = GetPCSpeaker(); object oArea = GetArea(OBJECT_SELF); //A conditional check float fDistance; object oMember = GetFirstFactionMember(oPC); while (GetIsObjectValid(oMember)) { fDistance = GetDistanceBetween(oMember, oPC); //Get the distance between the PC and a party member if (oPC != oMember && (fDistance == 0.0 || fDistance > 10.0)) //If they are in different areas or the distance is longer than 10 meters... { FloatingTextStringOnCreature("Your party wants to travel, but you are absent!", oMember, FALSE); return; } oMember = GetNextFactionMember(oPC); } //Get area string string sAreaString = GetLocalString(oArea, "AreaString"); string sRegionString = GetStringLeft(sAreaString, 1); //Randomly select a village area int nElementIndex = Random(3)+22; //22, 23 or 24 string sRandomAreaString = sRegionString+"_"+IntToString(nElementIndex); //Teleport the PC (and their party) to the southern entrance waypoint of the chosen area object oWaypoint = GetWaypointByTag("exit_wp_"+sRandomAreaString+"_s"); //We should teleport the party leader first to make him trigger the OnEnter event object oParty = GetFactionLeader(oPC); SetLocalInt(oParty, "CanDiscover", GetLocalInt(oParty, "CanDiscover")+1); AssignCommand(oParty, ClearAllActions()); SetLocalInt(oParty, "Miles", GetLocalInt(oParty, "Miles")+1); AssignCommand(oParty, JumpToObject(oWaypoint)); //Now for the rest of the party oParty = GetFirstFactionMember(oPC, FALSE); while ( oParty != OBJECT_INVALID ) { if (oParty != GetFactionLeader(oParty)) { SetLocalInt(oParty, "Miles", GetLocalInt(GetFactionLeader(oPC), "Miles")); //Set everyone's distance travelled to that of the party leader SetLocalInt(oParty, "CanDiscover", GetLocalInt(oParty, "CanDiscover")+1); AssignCommand(oParty, ClearAllActions()); SetLocalInt(oParty, "Miles", GetLocalInt(oParty, "Miles")+1); if (GetLocalString(GetModule(), "MODE") == "LOCAL" && GetIsPC(oParty)) SetCampaignInt(CharacterDB(oParty), "MILES", GetLocalInt(oParty, "Miles")); //store miles travelled in LOCAL mode AssignCommand(oParty, JumpToObject(oWaypoint)); } oParty = GetNextFactionMember(oPC, FALSE); } }