Left 4 Dead 2/Scripting/Expanded Mutation System/StageTypeAppendix

__NOTOC__ 
== STAGE_SETUP ==
In SETUP, the Director is essentially shut down. Things like wandering zombies that initially spawned in and such may be there, but the director wont otherwise spawn or control anything. 
* VALUE: # of seconds to spend in SETUP, or 0 for infinite.
* EXIT: When the seconds run out, or when you ForceNextStage.
== STAGE_PANIC ==
Run a Panic event! This does many director-y things. But primarily it spawns mobs based on the SessionOptions table until it is finished. The main "finish" criteria are about commons - the MegaMobSize controls the total # of commons to spawn, with no more than CommonLimit on at once. Once it has spawned the complete MegaMob, it considers that Panic Wave done. Note: this is at finish of SPAWNING the mob, not once they are all killed.
In the new mutation system, there is also a set of TotalSpecials/TotalBoomers/TotalSmokers/etc - in case you want your Panic wave to be about spawning a certain number of specials, as opposed to commons. You can check the Spawning Infected for info about this, but worth noting that you need to think about how both the Special count and the Common count are checked here, so you need to set the various parameters carefully to get exactly what you want.
* VALUE: How many Panic waves to spawn.
* EXIT: When the waves are fully spawned - as above re:MegaMobSize or various Special "Total<type>" variables.
== STAGE_DELAY ==
Wait a given # of seconds. 
* VALUE: # of seconds to wait, or -1 for infinite.
* EXIT: When the timeout occurs, or ForceNextStage of course (esp. to get out of infinite delay)
NOTE: the Options table is still live during this (@TODO: CHECK THIS! is it all options, or only some). I.e. if you do a Delay but leave BoomerLimit and MaxSpecials high - boomers might spawn.
== STAGE_CLEAROUT ==
This is a special mode that is basically "wait for Panic to Clear out". If you have a mode where you do a panic wave, but you dont want to move on until that wave is killed off by the players, you can do a Clearout. Clearout waits until all mobs or gone (well, or if the mob count is low and stable for a # of seconds... so if some common is stuck out behind a fence somewhere things dont grind to a halt)
* VALUE: How long the count has to remain stable before CLEAROUT gives up and allows things to continue.
* EXIT: When the mob count hits zero, or it plateau's for VALUE seconds.
NOTE: in practice, there are some other rules - no Witches or Tanks can be up, and even if the count is stable if it is above 10 it still wont go on, and so on.
NOTE: There is also a "Script_Clearout" which is a fancier version of this implemented totally in script. You can look at scripted_holdout to see it get called, and the actual code is in sm_utilities.nut. It works by putting the director into a STAGE_DELAY that is infinite, then using a SlowPoll function to monitor the counts of various types, and decide when to ForceNextStage out of the delay.
== STAGE_ESCAPE ==
Run an escape - endless waves, tank, etc, etc
* VALUE: ignored, i believe
* EXIT: When you escape?
== STAGE_TANK ==
Run a stage with a tank in it.
* VALUE: How many tanks to spawn - has delay between spawns but will spawn more than one together.
* EXIT: Usual panic rules, i believe (@TODO: unless it is when the tank dies? dont think so though)
== STAGE_RESULTS ==
@TODO: Make this a useful thing! (i.e. fill this in, but also actually make results something that works...)
* VALUE: 
* EXIT:
== STAGE_NONE ==
@TODO: Make this a useful thing! (i.e. fill this in, but also actually make results something that works...)
* VALUE: 
* EXIT:
Category:Left_4_Dead_2Category:Level Design