#include "scripts/common.txt"
#include "scripts/BP_common.txt"
#include "scripts/BP_MapCommon.txt"

//Tag IDs
//1000: Start Warp
//1001: Exit Button, Pillars, End Enemies
//1002: Mid Button, Pillars
//1003: Played flame Cutscene?
//1004: Flame
//1005: Flame EventLink
//1006: Warp From Outside Start
//1007: Warp Exit
//1008: Warp From Freeze Weapon
//1009: Spirit Statue Enemy
//1010: 

//Need:
//*speed talisman
//*mortal wound
//*rocket launcher
//*a feather
//*a warp back to the start of outdoor water temple


const kVec3 hidePos(13772.799805f, 14080.0f, 0.0f);
kActor@ flameScene;
kActor@ flame;
kVec3 flamePos;
bool pressedMidButton;
//------------------------------------------------------------------------------------------------------------------------
// Start Map
//------------------------------------------------------------------------------------------------------------------------
$script 0
{
	StartMap();
	@flameScene = World.GetActorByTID(1003);
	@flame = World.GetActorByTID(1004);
	flamePos = flame.Origin();
	flame.Origin() = hidePos;
	
	Game.CallDelayedMapScript(1, instigator, 0); //Update Map
}
//------------------------------------------------------------------------------------------------------------------------
// Update Map
//------------------------------------------------------------------------------------------------------------------------
$script 1
{
	TickMap();
	PlayWavMusic("music_spirit.ksnd");
	$restart;
}
//------------------------------------------------------------------------------------------------------------------------
// Update Flame Cinematic
//------------------------------------------------------------------------------------------------------------------------
$script 2
{
    if (Camera.UserInterrupted())
    {
		EndFlameCinematic(10000);
        return;
    }
	$restart;
}
//------------------------------------------------------------------------------------------------------------------------
// Flame Event Link Activated
//------------------------------------------------------------------------------------------------------------------------
$script 3
{
	flame.Origin() = flamePos; //show flame
}
//------------------------------------------------------------------------------------------------------------------------
void EndFlameCinematic(const int haltScriptID)
{
	Camera.StopCinematic();
	flameScene.MarkPersistentBit(false);
	Game.HaltMapScript(haltScriptID);
}
//------------------------------------------------------------------------------------------------------------------------
// On Mid Button
//------------------------------------------------------------------------------------------------------------------------
$script 10000
{
	if ((instigator.Flags() & AF_ENTEREDAREAEVENT) == 0 && !flameScene.IsPersistentMarked() && !pressedMidButton)
	{
		pressedMidButton = true;
		World.TriggerActorsByTID(instigator, 1002); //Mid Button, Pillars
		delay(3.0f);
		Camera.StartCinematic(CMF_LOCK_PLAYER | CMF_UNLOCK_PLAYER_ON_FINISH);
		Camera.SetLookAtActor(flame);
		Camera.ClearFinalView();
		Camera.ClearViewTracks();
		Camera.fov = 74.0f;
		Camera.origin = kVec3(830.0f, 1843.199951f, 93.0f);
		while (Camera.CinematicState() < 2) { delay(0.000001f); }
		CameraMove(instigator, Camera.origin, kVec3(-701.0f, 1843.199951f, 202.0f), 6.0f);
		Game.CallDelayedMapScript(2, instigator, 0); //Update Flame Cinematic
		World.TriggerActorsByTID(instigator, 1005); //Flame EventLink
		Game.PlaySound("sounds/shaders/event01.ksnd");
		delay(7.0f);
		EndFlameCinematic(2);
	}
}
//------------------------------------------------------------------------------------------------------------------------
// On Portal To Freeze Weapon
//------------------------------------------------------------------------------------------------------------------------
$script 10001
{
	//and doesn't have freeze weapon
	if ((instigator.Flags() & AF_ENTEREDAREAEVENT) == 0 && flameScene.IsPersistentMarked() && !HasProgress(PROGESS_BEATSPIRITS))
	{
		PlayLoop.StartWarp(instigator, 1000, 124);
	}
}
//------------------------------------------------------------------------------------------------------------------------
