void main()
{
int iSX = 0;
string sText = "[The Portal needs time to recharge.]";
float fSpeed=1.0;
location llocation = GetLocation(GetObjectByTag("fr_iwd_gw_portal_locb"));
object oTarget = GetObjectByTag("fr_iwd_gw_portal_invb");
object oPC = GetLastUsedBy();

if((GetLocalInt(oTarget, "Chk")==0) && (GetItemPossessedBy(oPC, "NW_IT_GEM003") != OBJECT_INVALID))
{
    SetLocalInt(oTarget,"Chk", 1);
    object oGem = GetItemPossessedBy(oPC, "NW_IT_GEM003");

    if(GetItemStackSize(oGem)==1){
        DestroyObject(oGem);
        }
    else{
        SetItemStackSize(oGem, GetItemStackSize(oGem) - 1);
        }

    AssignCommand(OBJECT_SELF, DelayCommand(0.2,ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)));

    object oPillar1=GetObjectByTag("fr_gway_inv_iwd01b");
    object oPillar2=GetObjectByTag("fr_gway_inv_iwd02b");
    object oPillar3=GetObjectByTag("fr_gway_inv_iwd03b");
    object oPillar4=GetObjectByTag("fr_gway_inv_iwd04b");
    object oPillar5=GetObjectByTag("fr_gway_inv_iwd05b");
    object oPillar6=GetObjectByTag("fr_gway_inv_iwd06b");

    effect eBeam1 = EffectBeam(VFX_BEAM_FIRE_W, oPillar1, BODY_NODE_CHEST);
    effect eBeam2 = EffectBeam(VFX_BEAM_FIRE_W, oPillar2, BODY_NODE_CHEST);
    effect eBeam3 = EffectBeam(VFX_BEAM_FIRE_W, oPillar3, BODY_NODE_CHEST);
    effect eBeam4 = EffectBeam(VFX_BEAM_FIRE_W, oPillar4, BODY_NODE_CHEST);
    effect eBeam5 = EffectBeam(VFX_BEAM_FIRE_W, oPillar5, BODY_NODE_CHEST);
    effect eBeam6 = EffectBeam(VFX_BEAM_FIRE_W, oPillar6, BODY_NODE_CHEST);

    effect eFlame1 = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_FIRE, FALSE);
    effect eFlame2 = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_FIRE, FALSE);
    effect eFlame3 = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_FIRE, FALSE);
    effect eFlame4 = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_FIRE, FALSE);
    effect eFlame5 = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_FIRE, FALSE);
    effect eFlame6 = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_FIRE, FALSE);

    effect eBoom = EffectVisualEffect(VFX_IMP_PULSE_FIRE , FALSE);
    effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_20 , FALSE);

    //flames on top of the spikes
    DelayCommand(0.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFlame1, oPillar1, 20.0));
    DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFlame2, oPillar2, 20.0));
    DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFlame3, oPillar3, 20.0));
    DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFlame4, oPillar4, 20.0));
    DelayCommand(4.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFlame5, oPillar5, 20.0));
    DelayCommand(5.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFlame6, oPillar6, 20.0));

    //triangle to form a star
    DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam1, oPillar2, 15.0));
    DelayCommand(1.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam2, oPillar3, 15.0));
    DelayCommand(2.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam3, oPillar4, 15.0));

    DelayCommand(3.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam4, oPillar5, 15.0));
    DelayCommand(4.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam5, oPillar6, 15.0));
    DelayCommand(5.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam6, oPillar1, 15.0));

    DelayCommand(5.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam1, oTarget, 10.0));
    DelayCommand(6.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam2, oTarget, 10.0));
    DelayCommand(7.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam3, oTarget, 10.0));
    DelayCommand(8.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam4, oTarget, 10.0));
    DelayCommand(9.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam5, oTarget, 10.0));
    DelayCommand(10.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam6, oTarget, 10.0));

    //open portal
    DelayCommand(14.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBoom, oTarget, 5.0));
    DelayCommand(14.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLight, oTarget, 55.0));
    DelayCommand(14.0, ActionInteractObject(CreateObject(OBJECT_TYPE_PLACEABLE, "fr_iwd_gw_p02b", llocation, TRUE)));
    DelayCommand(14.0, PlaySound("as_mg_telepin1"));
    DelayCommand(16.0, SoundObjectPlay(GetNearestObjectByTag("fr_iwd_uzsnd")));


    effect eEND = EffectVisualEffect(VFX_IMP_PULSE_HOLY_SILENT, FALSE);

    //close portal
    DelayCommand(68.0, SetPlotFlag(GetObjectByTag("fr_iwd_gw_p02b"), FALSE));
    DelayCommand(69.0, DestroyObject(GetObjectByTag("fr_iwd_gw_p02b")));
    DelayCommand(69.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEND, oTarget, 5.0));
    DelayCommand(68.0, SoundObjectStop(GetNearestObjectByTag("fr_iwd_uzsnd")));
    DelayCommand(69.0, PlaySound("as_mg_telepout1"));
    DelayCommand(69.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBoom, oTarget, 5.0));
    AssignCommand(OBJECT_SELF, DelayCommand(69.0,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)));
    DelayCommand(70.0, SetLocalInt(oTarget,"Chk", 0));
    }
else
ActionSpeakString(sText, TALKVOLUME_TALK);

}