void OnStart()
{
    AddUseItemCallback("UnlockDoor", "key_study_1", "mansion_1", "UsedKeyOnDoor", false);
    
    AutoSave();
    
    GiveHint("", "Messages", "Hint_3", 4.5f);
    
    AddQuest("Door02", "Door02");
    
    SetMapDisplayNameEntry("Hallway");
    
    SetDeathHint("Messages", "Death_Hint_1");
    
    AddQuest("Door02", "Door02");
    
    PlayMusic("18_amb.ogg", false, 0.7f, 0, 10, false);
    
    AddEntityCollideCallback("Player", "SlimeAreaActive_1", "CollideSlimeActive", true, 1);
    AddEntityCollideCallback("Player", "Servent_Active_1", "CollideGruntActive", true, 1);
    AddEntityCollideCallback("servent_grunt_1", "AreaGruntDeactivate", "CollideGruntDeactivate", true, 1);
    AddEntityCollideCallback("Player", "AreaPlayerTeleport", "CollidePlayerTeleport", true, 1);
    AddEntityCollideCallback("Player", "AreaPlayerTeleport_2", "CollidePlayerTeleport2", true, 1);
}
void CollideGruntDeactivate(string &in asParent, string &in asChild, int alState)
{
        SetEntityActive("servent_grunt_1", false);
        
        SetDeathHint("Messages", "Death_Hint_1");
        
        PlayMusic("18_amb.ogg", false, 0.7f, 0, 10, false);
}
void CollidePlayerTeleport(string &in asParent, string &in asChild, int alState)
{
   TeleportPlayer("PlayerStartArea_2");
   FadeOut(0);
   FadeIn(20);
   SetMessage("Messages", "Player_1", 5.0f);
   AddDebugMessage("Teleporting!", false);
}
void CollidePlayerTeleport2(string &in asParent, string &in asChild, int alState)
{
   TeleportPlayer("PlayerStartArea_3");
   FadeOut(0);
   FadeIn(20);
   AddDebugMessage("Home? NOOO!", false);
}
void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
    SetSwingDoorLocked("mansion_1", false, true);
    
    PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
    RemoveItem("key_study_1");
    AutoSave();
    PlayMusic("04_puzzle_acid.ogg", false, 0.7f, 0, 10, false);
    GiveSanityBoostSmall();
    CompleteQuest("Door02", "Door02");
    AddDebugMessage("Key Used on door Success.", false);
}
void InteractLockedDoor(string &in asEntity)
{
    SetMessage("Messages", "Door_Locked_9", 0);
    
    PlayGuiSound("locked_door.snt", 0.8f);
    
    AddTimer("castle_1", 1.0f, "TimerDoorMessageOnAgain");
    
    AddDebugMessage("Stupid Door!", false);
}
void TimerDoorMessageOnAgain(string &in asTimer)
{
    SetEntityPlayerInteractCallback("castle_1", "InteractLockedDoor", true);
}
void CollideSlimeActive()
{
    PlaySoundAtEntity("slime", "slime/slime_create1.ogg", "Player", 0, false);
    AutoSave();
}
void CollideGruntActive()
{
    PlayMusic("10_event_coming.ogg", false, 1, 0.1, 10, false);
    PlaySoundAtEntity("grunt","grunt/amb_idle.snt", "mansion_2", 3, false);
    AddDebugMessage("MONSTER!", false);
    SetPlayerSanity(40.0f);
    AutoSave();
    SetEntityActive("servent_grunt_1", true);
    SetDeathHint("Messages", "Death_Hint_2");
    ClearEnemyPatrolNodes("servent_grunt_1");
    AddEnemyPatrolNode("servent_grunt_1", "PathNodeArea_21", 5, "");
    AddEnemyPatrolNode("servent_grunt_1", "PathNodeArea_32", 1, "");
    AddEnemyPatrolNode("servent_grunt_1", "PathNodeArea_35", 1, "");
    AddEnemyPatrolNode("servent_grunt_1", "PathNodeArea_41", 2, "");
    AddEnemyPatrolNode("servent_grunt_1", "PathNodeArea_40", 4, "");
    AddEnemyPatrolNode("servent_grunt_1", "PathNodeArea_50", 1, "");
    AddEnemyPatrolNode("servent_grunt_1", "PathNodeArea_54", 1, "");
    AddEnemyPatrolNode("servent_grunt_1", "PathNodeArea_56", 0, "");
}
////////////////////////////
// Run when entering map
void OnEnter()
{
    SetupLoadScreen("LoadingText", "2_level_loading", 5, "game_loading_alexander.jpg");
}
////////////////////////////
// Run when leaving map
void OnLeave()
{
}