72 lines
2.1 KiB
Plaintext
72 lines
2.1 KiB
Plaintext
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));
|
|
|
|
}
|