Zh/Left 4 Dead 2/Scripting/Director Scripts

求生之路2导演脚本 是主要用于影响人工智能导演系统（AI Director）的行为的 . 它们被广泛用于自定义结局和尸潮事件. 
本页面内容由Dazai Nerau译自. 欢迎任何人补充新内容或者修改其中的错误.
== 用法 ==
执行导演脚本的方式是向 实体进行输入（input）. 一个导演设置表用于给导演系统所使用的变量提供新的临时值. 其他额外的命令可以通过Director对象访问. 
=== 输入 ===
;BeginScript <script name>
:执行一个普通的导演脚本, 比如为了onslaught事件而设计的脚本.
;EndScript
:停止执行脚本并重置导演系统设置中的变量值.
;BeginScriptedPanicEvent <script name>
:执行一次脚本化的尸潮
== 通用脚本与僵尸围攻 ==
当导演系统执行BeginScript输入时，指定的脚本便会运行，直到新的脚本被执行。或者脚本也可通过EndScript输入来手动结束. 除非改变了导演设置，否则游戏模式照常运行。 
尸潮围攻事件可以通过操纵普感和特感的数量上限以及游戏节奏来实现。
c2m4_barns_onslaught.nut (附注释):
== 结局与脚本化的尸潮事件 ==
结局与脚本化的尸潮事件包含了数种被设置于DirectorOptions之中的不同的阶段. 
结局的导演脚本通常从 <map name>_finale.nut 中被加载. 脚本化的尸潮事件则可以从 的 BeginScriptedPanicEvent 输入中被执行. 
阶段的类型有四种 (其他值会打断结局并使得玩家直接成功获救（ESCAPE）):
*PANIC - 尸潮, 数值是感染者的波数.
*TANK - 产生tank, 数值是产生tank的数量.
*DELAY - 间歇, 数值是进入下一阶段前等待的秒数.
*SCRIPTED (也叫ONSLAUGHT) - 数值是要调用的VScript的脚本名或者"" (这样设置的的话导演系统将不做任何行为), 如果在这里乱写的话你的游戏就会崩溃. 你的脚本会负责发送 EndCustomScriptedStage 输入给导演系统 (你选择的目标, 比如某个确切的触发量, 计时器, 随机值, 等等.). 输入 AdvanceFinaleState 应该也能工作. 否则, 尸潮事件不会结束
一个关于自定义结局脚本的例子:
== 智能的剧情性节奏（Adaptive Dramatic Pacing） ==
== 回调 ==
*void Update()
:If you define an Update() function in your Director Script, it will run repeatedly much like a Think() function, but ONLY a finale via is triggered, if you have multiple scripts that are running that define it, they all will be called. The use of Update() is also found in the Bleed Out mutation (mutation3.nut), but needs further testing to see see if it behaves the same way like during a finale.
=== 结局脚本专属 ===
*void OnBeginCustomFinaleStage(int num, int type)
:If defined, will be called on every stage change with the number, and type, this is how you would change director options between stages (spawn directions, etc). num refers to the finale stage number passed by the director and type is the stage type (PANIC, TANK, etc.).
*function OnChangeFinaleMusic() 
:
*function OnChangeFinaleStage(?) 
:
== 导演设置 ==
DirectorOptions表里的各种变量就是用来让你随便改的。
更多关于导演设置的信息可以查阅Steam论坛.
=== 通用 ===
Name 	Type 	Default value	Description
AddToSpawnTimer 	 	 	
AllowCrescendoEvents 	bool 	 	
AllowWitchesInCheckpoints 	bool 	 	
AlwaysAllowWanderers 	bool 	 	
BuildUpMinInterval 	 	 	
ClearedWandererRespawnChance 	int 	 	已经安全的nav区域重新填充普感的百分比机会（0-100）
DisallowThreatType 	int 	 	禁止BOSS感染者在合作模式的threat 区域中产生. 有效类型: ZOMBIE_WITCH, ZOMBIE_TANK
FallenSurvivorPotentialQuantity 	int 	 	总共有多少倒地的幸存者能出生.
FallenSurvivorSpawnChance 	float 	 	[0...1]
FarAcquireRange 	int 	2500 	感染者能识别人类的最大距离.
NearAcquireRange 	int 	200 	感染者能识别人类的最近距离.
FarAcquireTime 	float 	5.0 	感染者识别人类需要花费的最长时间
NearAcquireTime 	float 	0.5 	感染者识别人类需要花费的最短时间
GasCansOnBacks 	bool 	 	将Hard Rain的油罐放在生还者的背上
IgnoreNavThreatAreas 	bool 	 	或许会阻止BOSS沿着nav产生.
InfectedFlags 	int 	 	赋予新产生的感染者一些标签，标签包括: INFECTED_FLAG_CANT_SEE_SURVIVORS, INFECTED_FLAG_CANT_HEAR_SURVIVORS, INFECTED_FLAG_CANT_FEEL_SURVIVORS
IntensityRelaxAllowWanderersThreshold	float 	 	
IntensityRelaxThreshold 	float 	 	在允许Peak转换为Relax之前，所有幸存者必须低于此强度(除了正常的峰值计时器)
JournalString 	string	 	
LockTempo 	bool 	false 	尸潮产生的节奏是这样的: BUILD_UP -> 产生尸潮 -> SUSTAIN_PEAK -> RELAX -> 再次 BUILD_UP . 设置LockTempo = true 会移除 "SUSTAIN_PEAK -> RELAX -> BUILD_UP" 使你的尸潮无延迟地直接产生.
MobRechargeRate 	int 	 	emmm应该是普通僵尸再生后的速度之类的 (也就是下一只僵尸).
MobSpawnMaxTime 	int 	180-240 	两波尸潮产生的最大时间间隔（单位秒）.默认值取决于难度.
MobSpawnMinTime 	int 	90-120 	两波尸潮产生的最小时间间隔（单位秒）. 默认值取决于难度.
MusicDynamicMobScanStopSize 	int 	 	当尸潮的僵尸数量小于此数时，尸潮背景音乐停止
MusicDynamicMobSpawnSize 	int 	25 	当尸潮僵尸数量大于此数时播放尸潮背景音乐
MusicDynamicMobStopSize 	int 	 	当尸潮的僵尸数量达到这个数值时停止播放音乐
NumReservedWanderers 	int 	 	不能因成为尸潮而消失的闲逛感染者的数量
NoMobSpawns 	bool 	false 	防止产生新的尸潮. 并不重设计时器, 并且会暂挂已经出生的感染者.
PanicForever 	int 	 	只在gauntlets中有效.
PausePanicWhenRelaxing 	bool 	 	
PreferredMobDirection 	int 	 	有效标签: SPAWN_ABOVE_SURVIVORS, SPAWN_ANYWHERE, SPAWN_BEHIND_SURVIVORS, SPAWN_FAR_AWAY_FROM_SURVIVORS, SPAWN_IN_FRONT_OF_SURVIVORS, SPAWN_LARGE_VOLUME, SPAWN_NEAR_IT_VICTIM, SPAWN_NO_PREFERENCE
PreferredMobPosition 	Vector	 	
PreferredMobPositionRange 	int 	 	
PreferredSpecialDirection 	int 	 	
ProhibitBosses 	bool 	 	禁止导演系统产生Witch和Tank. 只在合作模式中有效.
RelaxMaxFlowTravel 	float 	 	在节奏从RELAX转换到BUILD_UP的期间生还者可以前进多远
RelaxMaxInterval 	float 	 	RELAX节奏持续的最大时间
RelaxMinInterval 	float 	 	RELAX节奏持续的最小时间
ShouldAllowMobsWithTank 	bool 	 	尸潮是否能与Tank并存.
ShouldAllowSpecialsWithTank 	bool 	 	是否允许特感与Tank并存.
ShouldConstrainLargeVolumeSpawn 	bool 	 	
ShouldIgnoreClearStateForSpawn 	bool 	 	
SpawnBehindSurvivorsDistance 	 	 	前提是PreferredSpecialDirection = SPAWN_BEHIND_SURVIVORS
SpecialInfectedAssault 	 	 	
SpecialInitialSpawnDelayMax 	float 	 	
SpecialInitialSpawnDelayMin 	float 	 	
SpecialRespawnInterval 	float 	 	一个特感通道产生一个特感的冷却时间.
SurvivorMaxIncapacitatedCount 	int 	 	死前倒地的幸存者的最大数量.
SustainPeakMaxTime 	float 	 	单位分钟
SustainPeakMinTime 	float 	 	单位分钟
TankHitDamageModifierCoop 	float 	1.0 	(mutation1.nut Last Man on Earth)
TankRunSpawnDelay 	float 	15 	单位秒 (mutation19.nut Taaannnkk!)
TempHealthDecayRate 	float 	0.27 	0.27 是 pain_pills_decay_rate 默认的, 数值越高衰减越快.
WanderingZombieDensityModifier 	float 	1.0 	流浪感染者的乘数.
ZombieDiscardRange 	int 	 	
ZombieDontClear 	 	 	
ZombieSpawnInFog 	bool 	false 	允许僵尸在处于雾区的幸存者的视线内产生.
ZombieSpawnRange 	float 	 	僵尸最多可以从距离幸存者多远的地方产生.
ZombieTankHealth 	int 	 	设置Tank的生命值.
==== 限制出生 ====
Name 	Type	Default value	Description
BileMobSize 	int 	 	胆汁瓶爆炸之后产生的僵尸数量。似乎只在结局中有效。死亡中心和牺牲这两个地图中使用了这个变量。
BoomerLimit 	int 	1 	最多允许多少Boomer同时存在.
ChargerLimit 	int 	1 	最多允许多少Charger同时存在.
CommonLimit 	int 	30 	最多允许多少普感同时存在.
DominatorLimit	int 	 	最多允许多少Hunters, Smokers, Jockeys和 Chargers同时存在.
HunterLimit 	int 	1 	最多允许多少Hunter同时存在.
JockeyLimit 	int 	1 	最多允许多少Jockey同时存在.
MaxSpecials 	int 	2 	导演系统最多允许多少种特感同时存在.
MegaMobSize 	int 	 	一次尸潮最多产生多少感染者.
MobMaxPending 	int 	 	当尸潮的僵尸数量超过CommonLimit时最多有多少感染者可以暂时等待生成.
MobMaxSize 	int 	30 	一次尸潮最多产生多少感染者.
MobMinSize 	int 	10 	一次尸潮最少产生多少感染者.
MobSpawnSize 	int 	 	一次尸潮中感染者的静态数量. 优先级高于MobMinSize 和MobMinSize.
PreTankMobMax 	int 	 	
SmokerLimit 	int 	1 	最多允许多少Smoker同时存在.
SpitterLimit 	int 	1 	最多允许多少Spitter同时存在.
TankLimit 	int 	1 	最多允许多少Tank同时存在.
WitchLimit 	int 	1 	最多允许多少Witch同时存在.
=== EMS阶段专属 ===
See 
Name 	Type 	Default value	Description
PanicSpecialsOnly 	bool 	 	The Panic should end when we finish with Specials, not wait for the MegaMob.
PanicWavePauseMax 	float 	 	
PanicWavePauseMin 	float 	 	
ScriptedStageType 	int 	 	The type of stage to run next. See for a description of stage types.
ScriptedStageValue 	int 	 	Dependant on the stage type.
SpawnDirectionCount	 	 	
SpawnDirectionMask 	int 	 	A bitfield (using SPAWNDIR_N, _NE, _E, etc) of directors to spawn from _relative to_ a map entity named Compass in your map. Designed for Survival-like game modes. See .
SpawnSetPosition 	Vector	 	The center point of the area infected can spawn in, when SpawnSetRule is set to SPAWN_POSITIONAL.
SpawnSetRadius 	int 	 	How far from the center point infected can spawn, when SpawnSetRule is set to SPAWN_POSITIONAL.
SpawnSetRule 	int 	 	Overrides the mode of spawning used. Seems to be non-functional in finales. Valid flags are: SPAWN_ANYWHERE, SPAWN_FINALE, SPAWN_BATTLEFIELD, SPAWN_SURVIVORS, SPAWN_POSITIONAL
TotalBoomers 	int 	 	Number of Boomers allowed in a wave.
TotalChargers 	int 	 	Number of Chargers allowed in a wave.
TotalHunters 	int 	 	Number of Hunters allowed in a wave.
TotalJockeys 	int 	 	Number of Jockeys allowed in a wave.
TotalSmokers 	int 	 	Number of Smokers allowed in a wave.
TotalSpecials 	int 	 	Total number of Special Infected allowed in a wave.
TotalSpitters 	int 	 	Number of Spitters allowed in a wave.
*function void g_ModeScript::GetNextStage() 
: Called by the director when it wants a new stage. It can be forced with Director.ForceNextStage()
=== 结局专属/相关 ===
通常一个结局会包含X个阶段. DirectorOptions中的一些变量只能用于结局阶段. 在脚本中也能定义多阶段结局, 只要在选项开头冠以A_, B_, C_ 等等即可
Name 	Type 	Default value	Description
A_CustomFinale_StageCount 	int 	 	阶段数量. 需要设置对抗得分才能正常运行.
A_CustomFinaleX 	int 	 	阶段类型 (包含PANIC, SCRIPTED (AKA ONSLAUGHT), DELAY, TANK), X是阶段数. 也用于脚本化尸潮.
A_CustomFinaleValueX 	* 	 	值取决于上面的阶段类型. 也用于脚本化尸潮. 请看上方的举例.
A_CustomFinaleMusicX 	string	 	引入游戏. 例如, A_CustomFinaleMusic1 = "C2M5.BadManTank2". 注意 c2m5_concert_finale.nut 不使用此方法，而是选择使用地图中的实体. 在c2m5 的脚本中 A_CustomFinaleMusic4 = "", 意味着实际上没有歌曲通过脚本自动播放.
EnforceFinaleNavSpawnRules	bool 	 	可能用于强制执行结局出生行为但并不进入结局阶段。
HordeEscapeCommonLimit 	 	 	逃离阶段允许的感染者数量.
EscapeSpawnTanks 	bool 	 	是否在逃离阶段中产生Tank.
MinimumStageTime 	int 	 	在结束之前允许SCRIPTED阶段运行的最短时间.
=== 夹击战专属/相关 ===
These options are specific to Gauntlet finales. Most of these can be found in director_gauntlet.nut
Name 	Type	Default value	Description
CustomTankKiteDistance	int 	3000 	
;Movement Bonus related options 
:The Movement Bonus successively increases the delay between hordes when the survivors are not making progress toward the Gauntlet goal. The Current Bonus value ticks down every second, allows a horde to spawn when it reaches 0. When a horde spawns the Current Bonus is reset to the Movement Bonus value. The Movement Bonus increases at set intervals, and is reset when the survivors cross the Movement Threshold, which is then incremented. Use director_debug 1 to see the values.
Name 	Type 	Default value	Description
GauntletMovementThreshold 	float	 	The amount of flow units the survivors can advance before the Movement Bonus is reset.
GauntletMovementTimerLength	float	 	The interval between each Movement Bonus increase, in seconds.
GauntletMovementBonus 	float	 	The initial value, and the amount the movement Bonus increases each interval, in seconds.
GauntletMovementBonusMax 	float	 	The maximum value that the Movement Bonus can reach.
=== 对抗模式专属/相关 ===
Name 	Type 	Default value	Description
TankHitDamageModifierVersus	float	1.0 	
ZombieGhostDelayMax 	int 	30 	Maximum time in seconds until allowing player infected to respawn.
ZombieGhostDelayMin 	int 	20 	Minimum time in seconds until allowing player infected to respawn.
=== 清道夫模式专属/相关 ===
Name 	Type 	Default value	Description
ScavengeClusterBonusTime	float	 	
ScavengeRoundInitialTime	float	 	
ScavengeScoreBonusTime 	float	 	(used in mutation13.nut Follow the Liter)
===生还者模式专属/相关 ===
Name 	Type 	Default value	Description
SurvivalSetupTime	float	 	(Used in mutation15.nut for Survival Versus with setup time of 90 seconds)
=== 突变模式专属/相关 ===
Some of these values are mutation specific values of the global ones (cm_CommonLimit,cm_MaxSpecials, etc.), so use them if you are making a mutation, in case any map scripts are changing the global values.
Name 	Type	Default value	Description
cm_AggressiveSpecials 	bool	true 	
cm_AllowPillConversion 	bool	true 	Allows pills to be converted to health kits.
cm_AllowSurvivorRescue 	bool	 	
cm_AutoReviveFromSpecialIncap 	bool	false 	Instantly revives a survivor when incapacitated by a Special Infected.
cm_AutoSpawnInfectedGhosts 	bool	 	
cm_BaseCommonAttackDamage 	 	 	
cm_BaseSpecialLimit 	int 	 	
cm_CommonLimit 	int 	 	
cm_DominatorLimit 	int 	 	
cm_FirstManOut 	int 	false 	Ends the escape when the first survivor reaches the escape vehicle.
cm_frustrationTimer 	 	 	
cm_HeadshotOnly 	 	 	
cm_HealingGnome 	 	 	
cm_InfiniteFuel 	 	 	(mutation7.nut Chainsaw Massacre)
cm_MaxSpecials 	 	 	
cm_NoRescueClosets 	 	 	
cm_NoSurvivorBots 	 	 	
cm_ProhibitBosses 	 	 	
cm_ShouldEscortHumanPlayers 	 	 	
cm_ShouldHurry 	 	 	
cm_SingleScavengeCluster 	 	 	Used for scavenge cans to spawn one-by-one.
cm_SpecialRespawnInterval 	 	 	
cm_SpecialSlotCountdownTime 	 	 	
cm_SpecialsRetreatToCover 	 	 	
cm_TankLimit 	 	 	
cm_TankRun 	 	 	Used in Taaank! mutation (mutation19.nut).
cm_TempHealthOnly 	 	 	
cm_VIPTarget 	 	 	
cm_WanderingZombieDensityModifier	 	 	
cm_WitchLimit 	 	 	
=== 无用设置 ===
These don't seem to be read by the director.
Name 	Type	Default value	Description
ActiveChallenge	bool	false 	Activates mutation mode. Seems to be obsolete with the EMS update.
MegaMobMaxSize 	int 	 	Maximum amount of total infected spawned during a panic event. Doesn't work 2014.04.29
MegaMobMinSize 	int 	 	Minimum amount of total infected spawned during a panic event. Doesn't work 2014.04.29
=== 钩子函数 === 
These functions are placed in the DirectorOptions table, and get called at map load.
Function 	Signature 	Description
AllowWeaponSpawn 	bool AllowWeaponSpawn(string classname) 	Returns true or false if the given classname is allowed to spawn, used by several mutations.
ConvertWeaponSpawn	string ConvertWeaponSpawn(string classname)	Converts a weapon spawn of given classname to another, used by several mutations.
ConvertZombieClass	int ConvertZombieClass(infectedClass) 	Converts one spawn into another, used by the Taaannnk!! mutation (mutation19.nut).
GetDefaultItem 	string GetDefaultItem(index) 	Repeatedly called with incrementing indices. Return a string of a weapon name to make it a default item for survivors, or 0 to end the iteration.
ShouldAvoidItem 	bool ShouldAvoidItem(string classname) 	
== 枚举 ==
*Director Enumerations 
**ALLOW_BASH_ALL	= 0
**ALLOW_BASH_NONE	= 2
**ALLOW_BASH_PUSHONLY	= 1
**BOT_CANT_FEEL	= 4
**BOT_CANT_HEAR	= 2
**BOT_CANT_SEE	= 1
**BOT_CMD_ATTACK	= 0
**BOT_CMD_MOVE	= 1
**BOT_CMD_RESET	= 3
**BOT_CMD_RETREAT	= 2
**BOT_QUERY_NOTARGET	= 1
**DMG_BLAST	= 64
**DMG_BLAST_SURFACE	= 134217728
**DMG_BUCKSHOT	= 536870912
**DMG_BULLET	= 2
**DMG_BURN	= 8
**DMG_HEADSHOT	= 1073741824
**DMG_MELEE	= 2097152
**DMG_STUMBLE	= 33554432
**FINALE_CUSTOM_CLEAROUT	= 11
**FINALE_CUSTOM_DELAY	= 10
**FINALE_CUSTOM_PANIC	= 7
**FINALE_CUSTOM_SCRIPTED	= 9
**FINALE_CUSTOM_TANK	= 8
**FINALE_FINAL_BOSS	= 5
**FINALE_GAUNTLET_1	= 0
**FINALE_GAUNTLET_2	= 3
**FINALE_GAUNTLET_BOSS	= 16
**FINALE_GAUNTLET_BOSS_INCOMING	= 15
**FINALE_GAUNTLET_ESCAPE	= 17
**FINALE_GAUNTLET_HORDE	= 13
**FINALE_GAUNTLET_HORDE_BONUSTIME	= 14
**FINALE_GAUNTLET_START	= 12
**FINALE_HALFTIME_BOSS	= 2
**FINALE_HORDE_ATTACK_1	= 1
**FINALE_HORDE_ATTACK_2	= 4
**FINALE_HORDE_ESCAPE	= 6
**HUD_FAR_LEFT	= 7
**HUD_FAR_RIGHT	= 8
**HUD_FLAG_ALIGN_CENTER	= 512
**HUD_FLAG_ALIGN_LEFT	= 256
**HUD_FLAG_ALIGN_RIGHT	= 768
**HUD_FLAG_ALLOWNEGTIMER	= 128
**HUD_FLAG_AS_TIME	= 16
**HUD_FLAG_BEEP	= 4
**HUD_FLAG_BLINK	= 8
**HUD_FLAG_COUNTDOWN_WARN	= 32
**HUD_FLAG_NOBG	= 64
**HUD_FLAG_NOTVISIBLE	= 16384
**HUD_FLAG_POSTSTR	= 2
**HUD_FLAG_PRESTR	= 1
**HUD_FLAG_TEAM_INFECTED	= 2048
**HUD_FLAG_TEAM_MASK	= 3072
**HUD_FLAG_TEAM_SURVIVORS	= 1024
**HUD_LEFT_BOT	= 1
**HUD_LEFT_TOP	= 0
**HUD_MID_BOT	= 3
**HUD_MID_BOX	= 9
**HUD_MID_TOP	= 2
**HUD_RIGHT_BOT	= 5
**HUD_RIGHT_TOP	= 4
**HUD_SCORE_1	= 11
**HUD_SCORE_2	= 12
**HUD_SCORE_3	= 13
**HUD_SCORE_4	= 14
**HUD_SCORE_TITLE	= 10
**HUD_SPECIAL_COOLDOWN	= 4
**HUD_SPECIAL_MAPNAME	= 6
**HUD_SPECIAL_MODENAME	= 7
**HUD_SPECIAL_ROUNDTIME	= 5
**HUD_SPECIAL_TIMER0	= 0
**HUD_SPECIAL_TIMER1	= 1
**HUD_SPECIAL_TIMER2	= 2
**HUD_SPECIAL_TIMER3	= 3
**HUD_TICKER	= 6
**INFECTED_FLAG_CANT_FEEL_SURVIVORS	= 32768
**INFECTED_FLAG_CANT_HEAR_SURVIVORS	= 16384
**INFECTED_FLAG_CANT_SEE_SURVIVORS	= 8192
**IN_ATTACK	= 1
**IN_ATTACK2	= 2048
**IN_BACK	= 16
**IN_CANCEL	= 64
**IN_DUCK	= 4
**IN_FORWARD	= 8
**IN_JUMP	= 2
**IN_LEFT	= 512
**IN_RELOAD	= 8192
**IN_RIGHT	= 1024
**IN_USE	= 32
**SCRIPTED_SPAWN_BATTLEFIELD	= 2
**SCRIPTED_SPAWN_FINALE	= 0
**SCRIPTED_SPAWN_POSITIONAL	= 3
**SCRIPTED_SPAWN_SURVIVORS	= 1
**SCRIPT_SHUTDOWN_EXIT_GAME	= 4
**SCRIPT_SHUTDOWN_LEVEL_TRANSITION	= 3
**SCRIPT_SHUTDOWN_MANUAL	= 0
**SCRIPT_SHUTDOWN_ROUND_RESTART	= 1
**SCRIPT_SHUTDOWN_TEAM_SWAP	= 2
**SPAWNDIR_E	= 4
**SPAWNDIR_N	= 1
**SPAWNDIR_NE	= 2
**SPAWNDIR_NW	= 128
**SPAWNDIR_S	= 16
**SPAWNDIR_SE	= 8
**SPAWNDIR_SW	= 32
**SPAWNDIR_W	= 64
**SPAWN_ABOVE_SURVIVORS	= 6
**SPAWN_ANYWHERE	= 0
**SPAWN_BATTLEFIELD	= 2
**SPAWN_BEHIND_SURVIVORS	= 1
**SPAWN_FAR_AWAY_FROM_SURVIVORS	= 5
**SPAWN_FINALE	= 0
**SPAWN_IN_FRONT_OF_SURVIVORS	= 7
**SPAWN_LARGE_VOLUME	= 9
**SPAWN_NEAR_IT_VICTIM	= 2
**SPAWN_NEAR_POSITION	= 10
**SPAWN_NO_PREFERENCE	= -1
**SPAWN_POSITIONAL	= 3
**SPAWN_SPECIALS_ANYWHERE	= 4
**SPAWN_SPECIALS_IN_FRONT_OF_SURVIVORS	= 3
**SPAWN_SURVIVORS	= 1
**SPAWN_VERSUS_FINALE_DISTANCE	= 8
**STAGE_CLEAROUT	= 4
**STAGE_DELAY	= 2
**STAGE_ESCAPE	= 7
**STAGE_NONE	= 9
**STAGE_PANIC	= 0
**STAGE_RESULTS	= 8
**STAGE_SETUP	= 5
**STAGE_TANK	= 1
**TIMER_COUNTDOWN	= 2
**TIMER_COUNTUP	= 1
**TIMER_DISABLE	= 0
**TIMER_SET	= 4
**TIMER_STOP	= 3
**TRACE_MASK_ALL	= -1
**TRACE_MASK_NPC_SOLID	= 33701899
**TRACE_MASK_PLAYER_SOLID	= 33636363
**TRACE_MASK_SHOT	= 1174421507
**TRACE_MASK_VISIBLE_AND_NPCS	= 33579137
**TRACE_MASK_VISION	= 33579073
**UPGRADE_EXPLOSIVE_AMMO	= 1
**UPGRADE_INCENDIARY_AMMO	= 0
**UPGRADE_LASER_SIGHT	= 2
**ZOMBIE_BOOMER	= 2
**ZOMBIE_CHARGER	= 6
**ZOMBIE_HUNTER	= 3
**ZOMBIE_JOCKEY	= 5
**ZOMBIE_NORMAL	= 0
**ZOMBIE_SMOKER	= 1
**ZOMBIE_SPITTER	= 4
**ZOMBIE_TANK	= 8
**ZOMBIE_WITCH	= 7
**ZSPAWN_MOB	= 10
**ZSPAWN_MUDMEN	= 12
**ZSPAWN_WITCHBRIDE	= 11
== 推荐阅读 ==
*
*
*
*
*
*
*
*