This is an instance made for Zombie Escape, but it can in theory be used for other game modes, like mini games or surf.
You can download the instance's vmf from here.
(Click on the image to make it big)
The very first thing you want to do, is to collapse the instance into the map. You should not modify the instance's vmf, because then you cannot use it for other maps, or in case you need the original. If you do not collapse it into the map, you are gonna have a bad time adding outputs to the proper relays.
Before I can explain how to use it, i thin kit is better to understand how it works. Each cilinder represents a difficulty. and on the bottom is a trigger_once that triggers out a relay for its corresponding difficulty. To stop all sphere from falling down and causing an output mess, I put a func\_brush between the cylinders and the triggers.
Func\_brushes have a special property in CSS and CSGO. Their enable/disable property maintains between rounds. Some people hate that "bug" because it requires manual reseting, but in this case, it is glorious. Because it means at the end of a zombie escape vechicle/bunker, I can activate an output to the brush to be disable, which will stay disable for the next round, thus changing the difficulty in the next round.
So now, I can go on and explain by the numbers.
When the map is loaded, (1) disables 1 brush, which in this case is for the easy difficulty. Each difficulty has a number from 0 to 3. (0 = easy, 1 = normal, 2 = hard, 3 = suicide). Once the brush is disable, the sphere (2) falls down into the trigger (3). The trigger has an output to trigger a relay(4), which in turns triggers 3 relays (5). Relay (4) also kills all cylinders, to avoid any weird outputs when humans win, or an admin changes the difficulty.
It might sound silly to trigger 3 relays, but they are divided in trigger entities (So, any outputs that target entities, like sounds, music, sprites, go there), in brushes that get turned on (Boxes, walls, etc. It is nice to tag them with brush\_on\_easy\_hard, this way, you know where you have to enable them) and brushes that get turned off (brush\_on\_hard\_normal\_suicide would be here for example, for the easy difficulty relays). You need to have off and on said explicitly, to avoid any gaps when an admin no clips and presses a button via (8).
When humans win reach the exit, you create an output to a relay (6). This will enable the corresponding brush for the following difficulty and it will also write in the chat if you have a point\_servercommand with a targetname of @command somewhere in the level. Relay (7) is similar to (6), exepct that it does not changes difficulty and it triggers a say command that informs players they won the map.
There are 4 computers. When you press their buttons, it will change the difficulty into the corresponding one. It also leaves a message of what diffuclty and the time until the map restarts. For the map restarts you will need a trigger\_hurt named @kill\_all. Do not use the nuke, as the final nuke usually does not cover the whole map and leaves a space for the bunker/rescue vehicle.
Relay 9 does nothing. It is there for you to write and keep track of all the brush outputs. If you create a brush\_on\_easy, add an output there. Then at the end, copy and paste them into the respective relays.
I hope this instance helps you out and I hope you can achieve great levels with it!