void OnStart()
{
	Awaken();
	SetEntityPlayerInteractCallback("puzzlehelp", "InsanityEvent_1", true);
	SetEntityPlayerInteractCallback("conscience", "SetMonster", true);
	AddEntityCollideCallback("Player", "ScriptArea_3", "MonsterActivated", true, 1);
	AddUseItemCallback("", "smallkey", "prison_3", "UsedKeyOnDoor", true);
	AddUseItemCallback("", "rightkey_1", "prison_7", "RealKeyOnDoor", true);
	AddEntityCollideCallback("Player", "lightscare", "InsanityEvent_2", true, 1);
	AddUseItemCallback("", "fakekey_1", "prison_7", "FakeKeyOnDoor1", true);
	AddUseItemCallback("", "fakekey_2", "prison_7", "FakeKeyOnDoor2", true);
	AddUseItemCallback("", "fakekey_3", "prison_7", "FakeKeyOnDoor3", true);
	AddUseItemCallback("", "fakekey_4", "prison_7", "FakeKeyOnDoor4", true);
	AddUseItemCallback("", "fakekey_5", "prison_7", "FakeKeyOnDoor5", true);
AddUseItemCallback("", "fakekey_6", "prison_7", "FakeKeyOnDoor6", true);
AddUseItemCallback("", "fakekey_7", "prison_7", "FakeKeyOnDoor7", true);
AddUseItemCallback("", "fakekey_8", "prison_7", "FakeKeyOnDoor8", true);
AddUseItemCallback("", "fakekey_9", "prison_7", "FakeKeyOnDoor9", true);
AddUseItemCallback("", "fakekey_10", "prison_7", "FakeKeyOnDoor10", true);
AddUseItemCallback("", "fakekey_11", "prison_7", "FakeKeyOnDoor11", true);
AddUseItemCallback("", "fakekey_12", "prison_7", "FakeKeyOnDoor12", true);
AddUseItemCallback("", "fakekey_13", "prison_7", "FakeKeyOnDoor13", true);
AddUseItemCallback("", "fakekey_14", "prison_7", "FakeKeyOnDoor14", true);
AddUseItemCallback("", "fakekey_15", "prison_7", "FakeKeyOnDoor15", true);
AddUseItemCallback("", "fakekey_16", "prison_7", "FakeKeyOnDoor16", true);
AddUseItemCallback("", "fakekey_17", "prison_7", "FakeKeyOnDoor17", true);
AddUseItemCallback("", "fakekey_18", "prison_7", "FakeKeyOnDoor18", true);
AddUseItemCallback("", "fakekey_19", "prison_7", "FakeKeyOnDoor19", true);
AddUseItemCallback("", "fakekey_20", "prison_7", "FakeKeyOnDoor20", true);
AddUseItemCallback("", "fakekey_21", "prison_7", "FakeKeyOnDoor21", true);
AddUseItemCallback("", "fakekey_22", "prison_7", "FakeKeyOnDoor22", true);
AddUseItemCallback("", "fakekey_23", "prison_7", "FakeKeyOnDoor23", true);
AddUseItemCallback("", "fakekey_24", "prison_7", "FakeKeyOnDoor24", true);
AddUseItemCallback("", "fakekey_25", "prison_7", "FakeKeyOnDoor25", true);
AddUseItemCallback("", "fakekey_26", "prison_7", "FakeKeyOnDoor26", true);
AddUseItemCallback("", "fakekey_27", "prison_7", "FakeKeyOnDoor27", true);
AddUseItemCallback("", "fakekey_28", "prison_7", "FakeKeyOnDoor28", true);
AddUseItemCallback("", "fakekey_29", "prison_7", "FakeKeyOnDoor29", true);
AddUseItemCallback("", "fakekey_30", "prison_7", "FakeKeyOnDoor30", true);
AddUseItemCallback("", "fakekey_31", "prison_7", "FakeKeyOnDoor31", true);
AddUseItemCallback("", "fakekey_32", "prison_7", "FakeKeyOnDoor32", true);	
AddUseItemCallback("", "fakekey_33", "prison_7", "FakeKeyOnDoor33", true);	
}

void OnEnter()
{
	PlayMusic("amb_extra01.ogg", true, 1, 5, 0.9, false);
}


void Awaken()
{
	FadeImageTrailTo(2, 2);
	SetPlayerMoveSpeedMul(0.3);
	SetPlayerRunSpeedMul(0.3);
	SetPlayerLookSpeedMul(0.7);
	SetInventoryDisabled(true);
	FadeOut(0);
	StartPlayerLookAt("IntroView_1", 1, 1, "");
	FadeIn(1.5);
	AddTimer("IntroTimer_1", 5, "Awaken_2");
	SetMessage("Messages", "Intro_1", 4.5f);
	PlayMusic("05_paper_transformation.ogg", false, 1, 1, 1, false);
}

void Awaken_2(string &in asTimer)
{
	FadeOut(1.5);
	AddTimer("IntroTimer_2", 1.5f, "Awaken_3");
}	

void Awaken_3(string &in asTimer)
{
	TeleportPlayer("PlayerStartArea_3");
	StartPlayerLookAt("IntroView_2", 1, 1, "");
	FadeIn(1.5);
	AddTimer("IntroTimer_3", 5, "Awaken_4");
	SetMessage("Messages", "Intro_2", 4.5f);
	
}

void Awaken_4(string &in asTimer)
{
	FadeOut(1.5);
	AddTimer("IntroTimer_4", 1.5f, "Awaken_5");
}	

void Awaken_5(string &in asTimer)
{
	TeleportPlayer("PlayerStartArea_2");
	StartPlayerLookAt("bed_simple_movable_1", 1, 1, "");
	FadeIn(1.5);
	AddTimer("IntroTimer_5", 3, "Awaken_6");
	SetMessage("Messages", "Intro_3", 2.5f);	
}

void Awaken_6(string &in asTimer)
{
	FadeOut(1.5);
	AddTimer("IntroTimer_6", 1.5f, "Awaken_7");
}

void Awaken_7(string &in asTimer)
{
	TeleportPlayer("PlayerStartArea_1");
	SetPlayerCrouching(true);
	FadeImageTrailTo(0.5f, 10);
	SetPlayerMoveSpeedMul(1);
	SetPlayerRunSpeedMul(1);
	SetPlayerLookSpeedMul(1);
	SetInventoryDisabled(false);
	StartScreenShake(0.5f, 0.2f, 0.1f, 0.02f);
	AddTimer("IntroTimer_7", 1.5f, "Awaken_8");
}

void Awaken_8(string &in asTimer)
{

	AddTimer("IntroTimer_8", 0.5f, "Awaken_9");
}

void Awaken_9(string &in asTimer)
{
	StartPlayerLookAt("prison_1", 1, 1, "");
	PlaySoundAtEntity("", "lurker_hit_wood", "prison_1", 0, false);
	FadeIn(0.5);
	AddTimer("IntroTimer_9", 0.215f, "Awaken_10");
}

void Awaken_10(string &in asTimer)
{
	PlaySoundAtEntity("", "react_pant", "Player", 0, false);
	SetPlayerCrouching(false);
	StopPlayerLookAt();
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
	SetSwingDoorLocked("prison_3", false, true);
	PlaySoundAtEntity("", "unlock_door", "prison_3", 0, false);
	RemoveItem("smallkey");
}

void InsanityEvent_1(string &in asEntity)
{
	PlaySoundAtEntity("", "scare_ghost", "Player", 0, false);
	SetLampLit("hanging_lantern_ceiling_19", true, true);
	SetLampLit("torch_static01_nosound_8", true, true);
	SetLampLit("torch_static01_nosound_7", true, true);
	SetLampLit("torch_static01_nosound_6", true, true);
	SetLampLit("hanging_lantern_ceiling_20", true, true);
	SetLampLit("torch_static01_nosound_10", true, true);
	SetLampLit("torch_static01_nosound_2", true, true);
	SetLampLit("torch_static01_nosound_9", true, true);
	StartScreenShake(0.5f, 0.01f, 0.1f, 0.02f);
	GiveSanityDamage(25.0f, true);
	AddTimer("Derp", 0.8f, "DanielScared");
}	

void InsanityEvent_2(string &in asParent, string &in asChild, int alState)
{
	SetLampLit("bridge_torch_1", true, true);
	SetLampLit("bridge_torch_2", true, true);
	SetLampLit("bridge_torch_3", true, true);
	SetLampLit("bridge_torch_4", true, true);
	SetEntityActive("lightscare", false);
}


void DanielScared(string &in asTimer)
{
	PlaySoundAtEntity("", "react_scare", "Player", 0, false);
}
	
void RealKeyOnDoor(string &in asItem, string &in asEntity)
{
	SetSwingDoorLocked("prison_7", false, true);
	PlaySoundAtEntity("", "unlock_door", "prison_7", 0, false);
	RemoveItem("rightkey_1");
	RemoveItem("fakekey_1");
	RemoveItem("fakekey_2");
	RemoveItem("fakekey_3");
	RemoveItem("fakekey_4");
	RemoveItem("fakekey_5");
	RemoveItem("fakekey_6");
	RemoveItem("fakekey_7");
	RemoveItem("fakekey_8");
	RemoveItem("fakekey_9");
	RemoveItem("fakekey_10");
	RemoveItem("fakekey_11");
	RemoveItem("fakekey_12");
	RemoveItem("fakekey_13");
	RemoveItem("fakekey_14");
	RemoveItem("fakekey_15");
	RemoveItem("fakekey_16");
	RemoveItem("fakekey_17");
	RemoveItem("fakekey_18");
	RemoveItem("fakekey_19");
	RemoveItem("fakekey_20");
	RemoveItem("fakekey_21");
	RemoveItem("fakekey_22");
	RemoveItem("fakekey_23");
	RemoveItem("fakekey_24");
	RemoveItem("fakekey_25");
	RemoveItem("fakekey_26");
	RemoveItem("fakekey_27");
	RemoveItem("fakekey_28");
	RemoveItem("fakekey_29");
	RemoveItem("fakekey_30");
	RemoveItem("fakekey_31");
	RemoveItem("fakekey_32");
	RemoveItem("fakekey_33");
	SetEntityActive("fakekey_1", false);
	SetEntityActive("fakekey_2", false);
	SetEntityActive("fakekey_3", false);
	SetEntityActive("fakekey_4", false);
	SetEntityActive("fakekey_5", false);
	SetEntityActive("fakekey_6", false);
	SetEntityActive("fakekey_7", false);
	SetEntityActive("fakekey_8", false);
	SetEntityActive("fakekey_9", false);
	SetEntityActive("fakekey_10", false);
	SetEntityActive("fakekey_11", false);
	SetEntityActive("fakekey_12", false);
	SetEntityActive("fakekey_13", false);
	SetEntityActive("fakekey_14", false);
	SetEntityActive("fakekey_15", false);
	SetEntityActive("fakekey_16", false);
	SetEntityActive("fakekey_17", false);
	SetEntityActive("fakekey_18", false);
	SetEntityActive("fakekey_19", false);
	SetEntityActive("fakekey_20", false);
	SetEntityActive("fakekey_21", false);
	SetEntityActive("fakekey_22", false);
	SetEntityActive("fakekey_23", false);
	SetEntityActive("fakekey_24", false);
	SetEntityActive("fakekey_25", false);
	SetEntityActive("fakekey_26", false);
	SetEntityActive("fakekey_27", false);
	SetEntityActive("fakekey_28", false);
	SetEntityActive("fakekey_29", false);
	SetEntityActive("fakekey_30", false);
	SetEntityActive("fakekey_31", false);
	SetEntityActive("fakekey_32", false);
	SetEntityActive("fakekey_33", false);

}

void SetMonster(string &in asEntity)
{
	SetEntityActive("ScriptArea_3", true);
}	

void MonsterActivated(string &in asParent, string &in asChild, int alState)
{
	SetSwingDoorLocked("cellar_wood01_1", false, true);
	SetSwingDoorClosed("cellar_wood01_1", false, true);	
	SetEntityActive("servant_grunt_1", true); 
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_2", 0.0f, "");
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_3", 0.0f, "");
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_4", 0.0f, "");
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_5", 0.0f, "");
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_6", 3, "");
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_7", 0.0f, "");
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_8", 0.0f, "");
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_9", 0.0f, "");
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_10", 0.0f, "");
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_11", 0.0f, "");
	AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_54", 3, "");
}

void FakeKeyOnDoor1(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_1");}
void FakeKeyOnDoor2(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_2");}
void FakeKeyOnDoor3(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_3");}
void FakeKeyOnDoor4(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_4");}
void FakeKeyOnDoor5(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_5");}
void FakeKeyOnDoor6(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_6");}
void FakeKeyOnDoor7(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_7");}
void FakeKeyOnDoor8(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_8");}
void FakeKeyOnDoor9(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_9");}
void FakeKeyOnDoor10(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_10");}
void FakeKeyOnDoor11(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_11");}
void FakeKeyOnDoor12(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_12");}
void FakeKeyOnDoor13(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_13");}
void FakeKeyOnDoor14(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_14");}
void FakeKeyOnDoor15(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_15");}
void FakeKeyOnDoor16(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_16");}
void FakeKeyOnDoor17(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_17");}
void FakeKeyOnDoor18(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_18");}
void FakeKeyOnDoor19(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_19");}
void FakeKeyOnDoor20(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_20");}
void FakeKeyOnDoor21(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_21");}
void FakeKeyOnDoor22(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_22");}
void FakeKeyOnDoor23(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_23");}
void FakeKeyOnDoor24(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_24");}
void FakeKeyOnDoor25(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_25");}
void FakeKeyOnDoor26(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_26");}
void FakeKeyOnDoor27(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_27");}
void FakeKeyOnDoor28(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_28");}
void FakeKeyOnDoor29(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_29");}
void FakeKeyOnDoor30(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_30");}
void FakeKeyOnDoor31(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_31");}
void FakeKeyOnDoor32(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_32");}
void FakeKeyOnDoor33(string &in asItem, string &in asEntity) {PlaySoundAtEntity("", "close_door", "prison_7", 0, false); RemoveItem("fakekey_33");}

void OnLeave()
{


	StopMusic(3, 0.9);
}