#include "cutscene_ch1"

void FinalPlace(int iPlace, string sObj, string sWay)
{
object oTarget2 = GetWaypointByTag(sWay);
location lTarget2 = GetLocation(oTarget2);
object oSpawn2 = CreateObject(iPlace, sObj, lTarget2);
}

void MakeFire(string oPlaceable, string sWaypoint)
{
effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_BLUE_20);
object oTarget = GetWaypointByTag(sWaypoint);
location lTarget = GetLocation(oTarget);
object oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, oPlaceable, lTarget);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSpawn);
}


void CutsceneEffect4(float oDelay, int iDuration, int oEffect, object oTarget)
{

int nInt;
nInt = GetObjectType(oTarget);
effect eEffect;
eEffect = EffectVisualEffect(oEffect);
DelayCommand(oDelay, ApplyEffectToObject(iDuration,
   eEffect, oTarget));
}


void FlyOff2(object oPC)
{
GestaltApplyEffect(1.0, oPC, EffectVisualEffect(VFX_IMP_PULSE_WIND), INSTANT);
GestaltApplyEffect(0.0, oPC, EffectDisappear(), PERMANENT);
}


void TakeFlight2(float oDelay, object oPC)
{
DelayCommand(oDelay, FlyOff2(oPC));
}


void main()
{
object oPC = OBJECT_SELF;
object oMod = GetModule();
object oArea = GetArea(oPC);
object oTarget;
object oTarget1;
object oSpawn;
object oStarfall = GetObjectByTag("starfall");
object oCaster;
object oWP1=GetWaypointByTag("limbo_portal_wp");
object oPort = GetWaypointByTag("limbo_portal_pc");
location iLocation = GetLocation(GetWaypointByTag("limbo_portal_sf"));
location iLocation2 = GetLocation(GetWaypointByTag("limbo_portal_pc"));
location lTarget;
int iMode = GetLocalInt(oMod, "gamemode");


 // Initiate cutscene mode

GestaltStartCutscene(oPC, "",TRUE,TRUE,TRUE,FALSE,2);

// Fade camera in

GestaltCameraFade(0.0,  oPC,   FADE_IN,FADE_SPEED_FAST);

GestaltSpeak(2.0,  oStarfall, "Congratulations "+GetName(oPC)+". You have trancended beyond your limitations as a mortal!",
             ANIMATION_FIREFORGET_VICTORY2);

GestaltSpeak(8.0,  oPC, "I have?",
             ANIMATION_LOOPING_TALK_PLEADING, 2.0);

GestaltSpeak(12.0,  oStarfall, "Yes! You have conquored every arena challenge and defeated me in a duel!",
             ANIMATION_NONE);

GestaltSpeak(19.0,  oStarfall, "Come, I have something to show you!",
             ANIMATION_NONE);




oCaster = oStarfall;
oTarget = oPC;
GestaltFace(20.0, oStarfall, 0.0, 2, oTarget);
CutsceneEffect4(25.0, DURATION_TYPE_PERMANENT, VFX_DUR_GLOBE_INVULNERABILITY , oPC);
GestaltActionSpellCast(23.0, oStarfall, oPC,
 SPELL_LIGHTNING_BOLT, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, "", TRUE, FALSE);
GestaltSpeak(26.0,  oStarfall, "The atmosphere isn't safe where we are going! That energy sphere will protect you!",
             ANIMATION_NONE);
GestaltSpeak(30.0,  oStarfall, "Let's go!",
             ANIMATION_NONE);
GestaltActionSpellCast(33.0, oStarfall, oPC,
 SPELL_POWER_WORD_STUN, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, "", TRUE, FALSE);

GestaltApplyEffect(35.0, oPC, EffectVisualEffect(VFX_IMP_ELEMENTAL_PROTECTION), INSTANT);
GestaltApplyEffect(35.2, oStarfall, EffectVisualEffect(VFX_IMP_ELEMENTAL_PROTECTION), INSTANT);

GestaltJump(36.5, oStarfall, OBJECT_INVALID, "limbo_portal_sf");
GestaltJump(36.5, oPC, OBJECT_INVALID, "limbo_portal_pc");

GestaltSpeak(45.0,  oStarfall, "Hmmm...",
             ANIMATION_NONE);

if (iMode==1){GestaltAnimate(48.0, oStarfall, ANIMATION_FIREFORGET_TAUNT);}
else{GestaltAnimate(48.0, oStarfall, ANIMATION_FIREFORGET_VICTORY2);}
CutsceneEffect(49.0, VFX_FNF_FIREBALL, "sf_fire1");
CutsceneEffect(49.3, VFX_FNF_FIREBALL, "sf_fire2");
CutsceneEffect(49.6, VFX_FNF_FIREBALL, "sf_fire3");

DelayCommand(49.2, MakeFire("sf_fire", "sf_fire1"));
DelayCommand(49.5, MakeFire("sf_fire", "sf_fire2"));
DelayCommand(49.7, MakeFire("sf_fire", "sf_fire3"));


GestaltSpeak(54.0,  oStarfall, "That's better....",
             ANIMATION_NONE);
GestaltSpeak(60.0,  oStarfall, "Welcome to Limbo, the place where time does not exist.",
             ANIMATION_NONE);

GestaltSpeak(64.0,  oPC, "Why have you brought me here?",
             ANIMATION_NONE);

GestaltSpeak(67.0,  oStarfall, "That's a good question.",
             ANIMATION_NONE);

GestaltSpeak(70.0,  oStarfall, "You have been brought here so that time can pass in the 3rd realm without us having to wait.",
             ANIMATION_NONE);

GestaltSpeak(76.0,  oPC, "Wait for what?",
             ANIMATION_LOOPING_TALK_PLEADING, 2.0);

GestaltSpeak(80.0,  oStarfall, "Why, your initiation ceremony of course!",
             ANIMATION_FIREFORGET_VICTORY2);

GestaltSpeak(86.0,  oStarfall, "You are the first mortal who has ever trancended to become the supreme arena champion!",
             ANIMATION_LOOPING_TALK_PLEADING, 4.0);

GestaltSpeak(92.0,  oStarfall, "Therefore, we will have a great ceremony to induct you into the fellowship of supreme champions.",
             ANIMATION_NONE);

 GestaltSpeak(106.0,  oPC, "I see...",
             ANIMATION_NONE);

GestaltSpeak(109.0,  oStarfall, "Just take the portal when you are ready. Then, my friend, you shall certainly see!",
             ANIMATION_NONE);

GestaltSpeak(113.0,  oPC, "What portal???",
             ANIMATION_LOOPING_TALK_FORCEFUL, 4.0);

GestaltSpeak(116.0,  oStarfall, "This portal...",
             ANIMATION_NONE);

object oTarget2 = GetWaypointByTag("limbo_portal_wp");
DelayCommand(118.0, AssignCommand(oStarfall,
ActionCastFakeSpellAtLocation(SPELL_BANISHMENT,
GetLocation(oTarget2), PROJECTILE_PATH_TYPE_DEFAULT)));
CutsceneEffect(119.5, VFX_FNF_FIREBALL, "limbo_portal_wp");
DelayCommand(119.6, CutscenePlace("limbo_portal", "limbo_portal_wp"));




DelayCommand(124.0, PlayVoiceChat(VOICE_CHAT_LAUGH, oStarfall));

GestaltFace         (125.0, oStarfall, 0.0, 2, oPC);

GestaltSpeak(127.0,  oStarfall, "See you there...",
             ANIMATION_FIREFORGET_GREETING);

GestaltFace         (128.5, oStarfall, 0.0, 2, oWP1);

TakeFlight2(129.0, oStarfall);

DelayCommand(135.0, FinalPlace(OBJECT_TYPE_CREATURE, "starfall", "starfall_wp"));
DelayCommand(136.0, FinalPlace(OBJECT_TYPE_PLACEABLE, "limbo_portal", "arena_home"));



// Set up camera

SetLocalFloat(oPC,"fCameraDirection",210.0);
SetLocalFloat(oPC,"fCameraRange",16.0);
SetLocalFloat(oPC,"fCameraPitch",75.0);

// camera choreograpgy

GestaltCameraMove       (0.0,
                         210.0,16.0,75.0,
                          232.0, 10.0,70.0,
                          10.0,30.0,oPC);

GestaltCameraMove       (10.0,
                           232.0,10.0,70.0,
                           232.0,10.0,70.0,
                           30.0,30.0,oPC);

GestaltCameraMove       (40.0,
                           232.0,10.0,70.0,
                           232.0,25.0,75.0,
                           10.0,30.0,oPC);

 GestaltCameraMove       (50.0,
                           232.0,25.0,75.0,
                           400.0,18.0,65.0,
                           35.0,30.0,oPC);

GestaltCameraMove       (85.0,
                           400.0,18.0,65.0,
                           420.0,14.0,75.0,
                           35.0,30.0,oPC);
// Fade camera out

GestaltCameraFade       (135.0, oPC,   FADE_OUT, FADE_SPEED_SLOW, 3.0);

// end of cutscene

GestaltStopCutscene     (138.0, oPC);

}