This is an old script you did for me for my first module, kevL_s, that I’ve modified to fit here in this context. Maybe there’s something here that gives a clue as to what’s going on? This script runs at the end of a conversation, where the characters teleport to this indoor area, and then the OnClientEnter script runs (maybe I’ve somehow modified your script the wrong way? Though, to be fair, it kind of works since everyone shows up where they are supposed to):
// dialog script. Assumes conversation between the PC and a Companion whose
// attempt to teleport will glitch. Also assumes that both the PC and the
// Companions will end up in the same module that the teleport starts in.
// NOTE: no checks are done for the validity of waypoints, etc.
// 2018 jan 7 - this version jumps Taik to a separate destination if in the
// party. Player-control then switches to Zecane.
#include "x0_i0_assoc" // SetAssociateState()
const string sDEST_PC = "pit_pc"; // waypoint tag of the PC's destination
const string sDEST_Z = "pit_tai"; // waypoint tag of the Taik's destination
const string sDEST_COMPANIONS = "pit_party"; // waypoint tag of the Companions' destination
const float fSAFE = 5.f; // interval to allow the next area to fully load.
void Glitch(object oPC);
void Taik(object oPC);
// note: OBJECT_SELF is Speaker (not PcSpeaker)
object oPC = GetPCSpeaker();
if (!GetIsPC(oPC)) return;
//if (nInt == 11)
ClearAllActions(); // safety. Ends conversation
FadeToBlack(oPC, FADE_SPEED_MEDIUM, fSAFE + 5.f); // single player
// Delayed to give time for the fade to finish.
void Glitch(object oPC)
oPC = SetOwnersControlledCompanion(oPC); // get this done pronto.
object oDestCompanions = GetWaypointByTag(sDEST_COMPANIONS);
string sRosterListCurrent = ""; // roster who are removed from the party
object oParty = GetFirstFactionMember(oPC, FALSE);
sRoster = GetRosterNameFromObject(oParty);
if (sRoster != "taik")
sRosterListCurrent += sRoster + ";";
RemoveRosterMemberFromParty(sRoster, oPC, FALSE);
oParty = GetFirstFactionMember(oPC, FALSE);
oParty = GetNextFactionMember(oPC, FALSE);
if (sRosterListCurrent != "")
SetLocalString(oPC, "CurrentRosterList", sRosterListCurrent);
SetAssociateState(NW_ASC_MODE_STAND_GROUND, TRUE, oPC);
// The transition to another area has to be complete before Zecane will part
// from the PC. So Zecane's jump is delayed by fSAFE sec.
void Taik(object oPC)
object oTaik = GetObjectFromRosterName("taik");