#include "x4_inc_functions"
void main()
{
    object oPC = GetEnteringObject();
    if (!GetIsPC(oPC)) return;

//::: Not needed due to PRC having this built in.
/*  if (GetCampaignInt(CharacterDB(oPC), "PC_DEAD") == TRUE)
        {
            ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(GetMaxHitPoints(oPC), DAMAGE_TYPE_POSITIVE), oPC);
            DeleteCampaignVariable(CharacterDB(oPC), "PC_DEAD");
        }    */

    int nHench;
    object oHench;
    object oTarget;
    effect eVFX;

    // Apply a visual effect.
    eVFX = SupernaturalEffect(EffectVisualEffect(VFX_DUR_BLACKOUT));
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVFX, oPC, 2.0);

    // Find the location to which to teleport.
    oTarget = GetWaypointByTag("PC_START");

    // 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);
    }
}