61 lines
2.0 KiB
Plaintext
61 lines
2.0 KiB
Plaintext
|
//:: plcused_portal.nss
|
||
|
//::
|
||
|
//:: Reads destination waypoint from string var "DESTINATION" on self
|
||
|
//::
|
||
|
|
||
|
void ClearAndJumpToObject(object oDestination);
|
||
|
void ClearAndJumpToObject(object oDestination)
|
||
|
{
|
||
|
ClearAllActions();
|
||
|
JumpToObject(oDestination);
|
||
|
}
|
||
|
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
object oSelf = OBJECT_SELF;
|
||
|
int nHench;
|
||
|
object oHench;
|
||
|
effect eVFX;
|
||
|
object oTarget;
|
||
|
string sDestination = GetLocalString(oSelf, "DESTINATION");
|
||
|
|
||
|
// Get the creature who triggered this event.
|
||
|
object oPC = GetLastUsedBy();
|
||
|
|
||
|
// Find the location to which to teleport.
|
||
|
oTarget = GetWaypointByTag(sDestination);
|
||
|
|
||
|
// Save the PC's current location for the return trip.
|
||
|
SetLocalLocation(oPC, "ls_stored_loc", GetLocation(oPC));
|
||
|
|
||
|
// Teleport the PC.
|
||
|
eVFX = EffectVisualEffect(VFX_IMP_UNSUMMON);
|
||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oPC);
|
||
|
DelayCommand(3.0, AssignCommand(oPC, ClearAndJumpToObject(oTarget)));
|
||
|
|
||
|
// Also teleport associates (but no visual effect for them).
|
||
|
oHench = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC);
|
||
|
DelayCommand(3.1, AssignCommand(oHench, ClearAndJumpToObject(oTarget)));
|
||
|
oHench = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC);
|
||
|
DelayCommand(3.1, AssignCommand(oHench, ClearAndJumpToObject(oTarget)));
|
||
|
oHench = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC);
|
||
|
DelayCommand(3.1, AssignCommand(oHench, ClearAndJumpToObject(oTarget)));
|
||
|
oHench = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC);
|
||
|
DelayCommand(3.1, AssignCommand(oHench, ClearAndJumpToObject(oTarget)));
|
||
|
|
||
|
// Support for multiple henchmen (includes horses).
|
||
|
nHench = 1;
|
||
|
oHench = GetHenchman(oPC, 1);
|
||
|
while ( oHench != OBJECT_INVALID )
|
||
|
{
|
||
|
DelayCommand(3.1, AssignCommand(oHench, ClearAndJumpToObject(oTarget)));
|
||
|
// Next henchman.
|
||
|
oHench = GetHenchman(oPC, ++nHench);
|
||
|
}
|
||
|
|
||
|
// Apply a visual effect.
|
||
|
eVFX = EffectVisualEffect(VFX_COM_HIT_NEGATIVE);
|
||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oSelf);
|
||
|
}
|