void main() { object oActor; object oSpawn; int nHench; object oHench; object oTarget; // Get the creature who triggered this event. object oPC = GetEnteringObject(); // Only fire for (real) PCs. if ( !GetIsPC(oPC) || GetIsDMPossessed(oPC) ) return; // Abort if the PC does not have the item "ptnwtrfnl232". if ( GetItemPossessedBy(oPC, "towerofangarngit") == OBJECT_INVALID ) return; // Cutscene functions: StopFade(oPC); // Find the location to which to teleport. oTarget = GetWaypointByTag("WP_SLSink1"); // Teleport the PC. AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, JumpToObject(oTarget)); // Also teleport associates. oHench = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC); AssignCommand(oHench, ClearAllActions()); AssignCommand(oHench, JumpToObject(oTarget)); oHench = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC); AssignCommand(oHench, ClearAllActions()); AssignCommand(oHench, JumpToObject(oTarget)); oHench = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC); AssignCommand(oHench, ClearAllActions()); AssignCommand(oHench, JumpToObject(oTarget)); oHench = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC); AssignCommand(oHench, ClearAllActions()); AssignCommand(oHench, JumpToObject(oTarget)); // Support for multiple henchmen (includes horses). nHench = 1; oHench = GetHenchman(oPC, 1); while ( oHench != OBJECT_INVALID ) { AssignCommand(oHench, ClearAllActions()); AssignCommand(oHench, JumpToObject(oTarget)); // Next henchman. oHench = GetHenchman(oPC, ++nHench); } // Cutscene functions: FadeFromBlack(oPC); // Spawn "slsink1". oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "slsink1", GetLocation(oTarget)); // Cutscene functions: SetCutsceneMode(oPC, TRUE); // Have "slsink1" strike up a conversation with the PC. oActor = GetNearestObjectByTag("slsink1", oPC); DelayCommand(2.0, AssignCommand(oActor, ActionStartConversation(oPC))); // Cutscene functions: DelayCommand(2.5, SetCutsceneMode(oPC, FALSE)); }