////////////////////////////
// Run first time starting map
void OnStart()
{
SetPlayerLampOil(0);
AddUseItemCallback("", "Crowbar", "Door", "UseCrowbarOnDoor", true);
AddEntityCollideCallback("Joint", "AreaBreak", "BreakDoor", true, 1);
SetEntityCallbackFunc("potion_sanity_2", "PianoShut");
SetEntityCallbackFunc("Awesome_key1", "jump");
AddEntityCollideCallback("Player", "explode_scare", "Explode", true, 1);
SetEntityPlayerInteractCallback("mansion_4", "func_slam", true);
AddEntityCollideCallback("Player", "START_BRUTE", "monster", true, 1);
AddEntityCollideCallback("Player", "LIGHTS_OFF", "LIGHTSOFF", true, 1);
}
void LIGHTSOFF(string &in asParent, string &in asChild, int alState)
{
SetLampLit("torch_floor_*", false, true); //This means that any entity that have the word (beginning part) "torch_floor_" will be un-lit. That means it will be made to shut down. You also had the wrong parameter and string signature. You have to made the torch floor lamp to be lit and active for this to work.
} //You forgot to add the curly brackets. I also shortened this script.
void monster(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("BRUTE", true);
AddEnemyPatrolNode("BRUTE", "NODE_1", 0, "");
}
void func_slam(string &in asEntity) //You had the wrong callback syntax. The one you have earlier is for the AECC.
{
SetPropHealth("mansion_4", 0.0f);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);
PlaySoundAtEntity("", "react_scare", "Player", 0, false);
PlaySoundAtEntity("", "close_door.snt", "Player", 0, false);
GiveSanityDamage(5.0f, true);
}
void Explode(string &in asParent, string &in asChild, int alState)
{
SetPropHealth("pot_explode", 0);
GiveSanityDamage(15.0f, true);
}
void jump(string &in asEntity, string &in type)
{
SetEntityActive("GRUNT_PART_1", true);
PlaySoundAtEntity("", "react_scare.snt", "Player", 0, false);
PlaySoundAtEntity("", "sanity_damage.snt", "Player", 0, false);
GiveSanityDamage(10.0f, true);
}
void PianoShut(string &in asEntity, string &in type) //You also had the wrong syntax here too. [jump] and this had the same parameter, therefore, had the same syntax.
{
SetLeverStuckState("piano_1", 0, true);
AddPropImpulse("piano_1", 0, 0, 50, "world");
SetLeverStuckState("piano_1", -1, true);
PlaySoundAtEntity("PianoShut", "break_wood", "piano_1", 0, false);
CreateParticleSystemAtEntity("", "ps_dust_impact.ps", "impact", false);
GiveSanityDamage(60, true);
}
void UseCrowbarOnDoor(string &in asItem, string &in asEntity)
{
RemoveItem(asItem);
PlaySoundAtEntity("", "player_crouch.snt", "Player", 0.05f, false); //You forgot to add a f
AddTimer("", 0.2, "TimerPlaceCrowbar");
}
void TimerPlaceCrowbar(string &in asTimer)
{
SetEntityActive("Joint", true);
PlaySoundAtEntity("", "puzzle_place_jar.snt", asTimer, 0, false);
}
void BreakDoor(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("Joint", false);
SetEntityActive("Broken", true);
SetSwingDoorLocked("Door", false, false);
SetSwingDoorClosed("Door", false, false);
SetSwingDoorDisableAutoClose("Door", true);
AddPropImpulse("Door", 0, 0, 3, "world");
CreateParticleSystemAtEntity("", "ps_hit_wood.ps", "AreaEffect", false);
PlaySoundAtEntity("", "break_wood_metal", "AreaEffect", 0, false);
GiveSanityBoostSmall();
PlayMusic("10_puzzle01.ogg", false, 0.7, 0.1, 10, false);
AddTimer("", 0.1, "TimerPushDoor");
}
void TimerPushDoor(string &in asTimer)
{
AddPropImpulse("Door", -4, 2, 1, "world");
AddTimer("", 1.1, "TimerDoorCanClose");
}
void TimerDoorCanClose(string &in asTimer)
{
SetSwingDoorDisableAutoClose("Door", false);
}
////////////////////////////
// Run when entering map
void OnEnter() //You might wanna move this to void OnStart unless you want the door to be locked each time the Player enters the map.
{
AddUseItemCallback("", "Awesome_key1", "Door_1", "UsedKeyOnDoor", true);
AddUseItemCallback("", "Awesome_key2", "locked_2", "UsedKeyOnLocked", true);
}
void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("Door_1", false, true);
PlaySoundAtEntity("", "unlock_door", "Door_1", 0, false);
RemoveItem("Awesome_key1");
}
void UsedKeyOnLocked(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("locked_2", false, true);
PlaySoundAtEntity("", "unlock_door", "locked_2", 0, false);
RemoveItem("Awesome_key2");
}
////////////////////////////
// Run when leaving map
void OnLeave()
{
AutoSave();
}