====== Scary events ====== Today I (xtron) will show you! (the reader) how to make scary events that will yea…scare the player!. ===== The door slam ===== ==== The Door. ==== we will startoff this tutorial with the basic door slam!. Start with adding a door. Go to entities > Door > Choose a door that you want to slam. Change the name of it. Now when you got the door added you need to change the open ammount. Click on the door > Entity > Look for "OpenAmount" and change it to 1. 1 is just a recommendation you can choose anything really. Now you're done with the door. Let's get going to the Script Area. ==== The Script Area. ==== Press on Area (8) > Script and make an area infront of the door like so: [[http://img705.imageshack.us/img705/4039/doorslam.png|img705.imageshack.us/img705/4039/doorslam.png]] When you're done with that you need to change it's name, pick anything just remember it. Now we're done with the Script Area, let's get going to the actuall scripting. ==== The Script ==== First off we will be needing to add an EntityCollideCallBack to the void OnStart() AddEntityCollideCallback("Player", "script_slam", "func_slam", true, 1); When you're done adding that we will need to start working on the function. First function we're gonna add is the actuall slam!. void func_slam(string &in asParent, string &in asChild, int alState) { SetSwingDoorClosed("door1", true, true); } That was the first function of a couple. After the slam we want some sanity increase and maybe one or two sounds! (three actually). void func_move_box1(string &in asParent, string &in asChild, int alState) { SetSwingDoorClosed("door1", true, true); 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); } Now we got the door slam setup. The result of this one should look like this void OnStart() { AddEntityCollideCallback("Player", "script_slam", "func_slam", true, 1); } void func_slam(string &in asParent, string &in asChild, int alState) { SetSwingDoorClosed("door2", true, true); 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); } ===== The exploding door ===== The exploding door! My favorite!. It's almost like the slaming door but with a few modifications. ==== The Door ==== You will need to go to the level editor: Click on the door > Entity > Change OpenAmount to 0. So it's closed. ==== The Script ==== We will be using the same function as the door slam so copy&paste it. void func_slam(string &in asParent, string &in asChild, int alState) { SetSwingDoorClosed("door2", true, true); 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); } What you now want to do is replace the SetSwingDoorClose with SetPropHealth("door1", 0.0f); So it looks like this void func_slam(string &in asParent, string &in asChild, int alState) { SetPropHealth("door1", 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); } Then we need to change the void OnStart abit. Replace SetEntityPlayerInteractCallback("door1", "func_slam", true); And replace void func_slam(string &in asParent, string &in asChild, int alState) with void func_slam(string &in asEntity) Now we're done with the Exploding door!. The result should look something like this: void OnStart() { SetEntityPlayerInteractCallback("door1", "func_slam", true); } void func_slam(string &in asParent, string &in asChild, int alState) { SetPropHealth("door1", 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); } This is how you create some door events. I hope you find this usefull. If you got any questions or requests on tutorials please send me a PM on the forum. Thanks for reading. //\\ // //tutorial by xtron//