When it comes to collecting keys or batteries and unlocking doors,
the basic Cyberix tutorials are a good start.
With the lights you can configure the strength of the lights via the "diffuse" parameter, and control the strength and color of shadows/ambient lights via the ambient parameters. You can find out more about lights
here.
Pathfinding NPCs is not officially supported but you can implement a custom kind of pathfinding using raycasts or alternative methods. There is an old thread where we discussed possible ways to implement this and an example provided by GODEBEX
here.
Not to make any promises but I'm considering creating an example of pathfinding in the near future.
The initial idea I have for freezing the Chaser is first having an invisible trigger that is in front of the player at all times, and checks if the Chaser is within the xyz position + the size of the trigger. Then if the Chaser is in the trigger, add a "Stop" codeblock assuming it's using physics for it's movement like the NPC coding in the Cyberix FPS Template.
Example of triggers
Although for NPCs I recommend building a custom one off the Character Codeblock since the Template NPC doesn't have limits to it's speed so it'll continue to accelerate but that's also easy to fix by itself anyway. In that case with the Character codeblock based NPC, you can set it's speed to 0 when freezing with the flashlight.
The Charger & the Searcher finding the player or areas the Blocker would block the path of can be achieved with the pathfinding solution mentioned earlier. Maybe when freezing the Charger, enable a barrier within the charger so that the player doesn't go around the Charger?
For the Flashlight, I'd add a Loop codeblock, a Wait codeblock set to 1 second, and an Increment codeblock with it's value set to minus however much you want to subtract from the Flashlight power every second. You can easily change how much the power drains depending if the flashlight is shining bright or not. For the UI of the Flashlight power, if you want to create something similar, I made a
healthbar example a while ago.
As for the randomized keys I'd still have set positions of where the keys should spawn but you can randomize which ones would be active via the Random codeblock.
For the menu I recommend organizing the ui elements using the Groups codeblock, a bit unorthodox but it helps. You can create Variables and toggle certain UI elements depending on those Variables.
Forgive me if I didn't go into enough detail, this is a lot to write lol. But your game ideas sound awesome, the enemy variations reminds me of the Left 4 Dead 2 special zombies haha. Good luck