求生之路 2 .fgd 文件

From Valve Developer Community
Jump to navigation Jump to search
English (en)中文 (zh)Translate (Translate)

Template:Translate in Progress:zh-cn 本文由大康翻译。


有关的文件


来自:\common\Left 4 Dead 2\bin\left4dead2.fgd

//
// 求生之路的实体
// 
// Translate by DaKang/由大康翻译

@include "base.fgd"

@SolidClass base(func_brush) = func_block_charge : "Chargers 不能通过这个固体冲锋"
[
]

@PointClass base(Targetname) = info_ambient_mob_start : "环境尸潮(Mobs)的潜在起始位置(已过时)"
[
]

@PointClass base(Targetname) = info_ambient_mob_end : "环境尸潮(Mobs)的结束位置(已过时)"
[
]

@PointClass base(Targetname) = info_ambient_mob : "环境尸潮(Mobs)的通用开始/结束(位置)(已过时,谨慎使用!)"
[
]

@PointClass base(Targetname, Angles, Parentname) studioprop() = info_item_position :
	"这个实体表示地图中可能的物品位置。脚本可以"+ 
	"搜索这些实体并使用它们为不同的游戏模式生成对象"
[
	model(studio) : "辅助模型"
	group(integer) : "组" : 0 : "组的编号(组号)"
	rarity(choices) : "稀有度" : 0 : "此位置的物品稀有度" =
	[
		0 : "常见的"
		1 : "偶尔的"
		2 : "稀有的"
	]

	input SetGroup(integer) : "设置组号。"
	input SetRarity(integer) : "设置稀有度。"

	replace01(string) : "替换" : : "这是一个替换参数。它以 $variable 值的形式出现。生成组内在某处具有 $variable 的所有实体都将替换为该值的内容。示例:$color 255 0 0"
	replace02(string) : "替换" : : "这是一个替换参数。它以 $variable 值的形式出现。生成组内在某处具有 $variable 的所有实体都将替换为该值的内容。示例:$color 255 0 0"
	replace03(string) : "替换" : : "这是一个替换参数。它以 $variable 值的形式出现。生成组内在某处具有 $variable 的所有实体都将替换为该值的内容。示例:$color 255 0 0"
	replace04(string) : "替换" : : "这是一个替换参数。它以 $variable 值的形式出现。生成组内在某处具有 $variable 的所有实体都将替换为该值的内容。示例:$color 255 0 0"
	replace05(string) : "替换" : : "这是一个替换参数。它以 $variable 值的形式出现。生成组内在某处具有 $variable 的所有实体都将替换为该值的内容。示例:$color 255 0 0"
	replace06(string) : "替换" : : "这是一个替换参数。它以 $variable 值的形式出现。生成组内在某处具有 $variable 的所有实体都将替换为该值的内容。示例:$color 255 0 0"
	replace07(string) : "替换" : : "这是一个替换参数。它以 $variable 值的形式出现。生成组内在某处具有 $variable 的所有实体都将替换为该值的内容。示例:$color 255 0 0"
	replace08(string) : "替换" : : "这是一个替换参数。它以 $variable 值的形式出现。生成组内在某处具有 $variable 的所有实体都将替换为该值的内容。示例:$color 255 0 0"
	replace09(string) : "替换" : : "这是一个替换参数。它以 $variable 值的形式出现。生成组内在某处具有 $variable 的所有实体都将替换为该值的内容。示例:$color 255 0 0"
	replace10(string) : "替换" : : "这是一个替换参数。它以 $variable 值的形式出现。生成组内在某处具有 $variable 的所有实体都将替换为该值的内容。示例:$color 255 0 0"
]

@PointClass base(Targetname) studio("models/survivors/survivor_biker.mdl") = info_l4d1_survivor_spawn : "生成一个一代的生还者"
[
	character(choices) : "角色" : 5 : "哪一个生还者要在这里生成。" = 
	[
		4 : "比尔"
		5 : "佐伊"
		6 : "弗朗西斯"
		7 : "路易斯"
	]
	
	input SpawnSurvivor(void) : "生成生还者。"
]

@PointClass base(Targetname) = env_airstrike_indoors : "室内空袭效果(摇摇欲坠的天花板)"
[
	height(choices) : "效果高度" : -1 : "指定用于此效果的动画序列。 (地板到天花板的距离)" =
	[
		-1: "自动"
		0: "128 单位"
		1: "144 单位"
		2: "152 单位"
		3: "160 单位"
		4: "190 单位"
		5: "300 单位"
		6: "320 单位"
	]

	input DoEffect(void) : "展示效果一次。"
]


@PointClass base(Targetname, Angles, Parentname) studio() = env_airstrike_outdoors : "户外空袭效果(爆炸屋顶、地面)"
[
	model(studio) : "模型" : "models/props_destruction/general_dest_roof_set.mdl" : "模型名称"
	modelgroup(target_destination) : "动画组" : "" : "与我们的序列一起编排的一个或多个 props_dynamic 的目标名称。" 
	sequence1(string) : "随机序列 1" : "" : "效果开始时模型播放的序列。"
	sequence2(string) : "随机序列 2" : "" : "效果开始时模型播放的序列。"
	
	input DoEffect(void) : "展示效果一次。"
]

@PointClass base(Targetname,Angles,Parentname) studioprop("models/editor/camera.mdl") = point_viewcontrol_multiplayer : 
	"控制所有玩家视野的相机实体。当它处于激活状态时,玩家将以镜头的视角观看。" 
[
	fov(float) : "视野" : "90" : "玩家的视野。"
	fov_rate(float) : "切换到目标视野的秒数" : "1.0" : "切换到指定视野所需的时间"
	target_entity(target_destination): "目标实体" : "" : "要移动到的实体。 [完成移动后将匹配(目标实体的)原点和角度]。"
	interp_time(float) : "到达目标实体的秒数" : "1.0" : "到达目标实体的原点和角度所需的时间。"
	
	spawnflags(flags) =
	[
		1: "完成移动时禁用" : 1
		2: "设置视野" : 0
	]

	// 输入
	input Enable(void) : "启用 point_viewcontrol_multiplayer,并开始控制玩家的视野。"
	input Disable(void) : "禁用 point_viewcontrol_multiplayer,并停止控制玩家的视野。"
	input StartMovement(void) : "开始移动到目标实体。"
]

@PointClass base(Targetname,Angles,Parentname) studioprop("models/editor/camera.mdl") = point_viewcontrol_survivor : 
	"控制玩家视野的相机实体。通过输入从相机位置移动到第一人称视图。" 
[
	fov(float) : "视野" : "90" : "玩家视野(如果勾选了“设置视野”标志)。"
	fov_rate(float) : "切换到目标视野的秒数" : "1.0" : "达到指定视野所需的时间。"

	spawnflags(flags) =
	[
		1: "完成移动时禁用" : 1
		2: "设置视野" : 0
	]

	// 输入
	input Enable(string) : "启用 point_viewcontrol,并开始控制玩家的视图。传递一个幸存者名称来控制该幸存者的视图。(比如"!zoey")"
	input Disable(void) : "禁用 point_viewcontrol,并停止控制玩家的视图。"
	input StartMovement(void) : "开始移动到第一人称视图。"
]

@PointClass base(Targetname,Angles,Parentname) studioprop("models/editor/camera.mdl") = point_deathfall_camera : 
	"玩家坠落身亡的摄像机实体。" 
[
	fov(float) : "视野" : "90" : "玩家视野。"
	fov_rate(float) : "切换到目标视野的秒数" : "1.0" : "达到指定视野所需的时间。"
]

//-------------------------------------------------------------------------
//
// 逻辑实体
//
//-------------------------------------------------------------------------
@PointClass color(0 0 255) base(Targetname) iconsprite("editor/choreo_scene.vmt") = logic_choreographed_scene :
	"管理一个或多个演员的编排场景。"

[
	// 键
	SceneFile(scene) : "场景文件"

	// 链接
	target1(target_destination) : "目标 1"
	target2(target_destination) : "目标 2"
	target3(target_destination) : "目标 3"
	target4(target_destination) : "目标 4"
	target5(target_destination) : "目标 5"
	target6(target_destination) : "目标 6"
	target7(target_destination) : "目标 7"
	target8(target_destination) : "目标 8"

	busyactor(choices) : "如果一个演员在说话……" : 1 : "如果这个场景需要的演员在被告知开始时已经在说话,该如何做。" =
	[
		0: "立即开始"
		1: "等待演员完成"
		2: "在下一个中断事件中中断"
		3: "在下一个中断事件中取消"
	]

	// 输入
	input Start(void) : "开始播放场景文件。"
	input Pause(void) : "暂停播放场景文件。"
	input Resume(void) : "如果场景已暂停,则恢复播放。"
	input Cancel(void) : "取消播放场景文件。"
	input CancelAtNextInterrupt(void) : "在场景中的下一个中断事件中取消场景的播放。"
	input PitchShift(float) : "将音高相乘。"

	input InterjectResponse(string) : "寻找可以在场景继续播放时响应指定概念字符串的演员。"

	input StopWaitingForActor(void) : "停止等待演员停止说话。"

	// 输出
	output OnStart(void) : "场景已开始。"
	output OnCompletion(void) : "场景已完成。"
	output OnCanceled(void) : "场景已取消。"
	output OnTrigger1(void) : "场景触发器 1"
	output OnTrigger2(void) : "场景触发器 2"
	output OnTrigger3(void) : "场景触发器 3"
	output OnTrigger4(void) : "场景触发器 4"
	output OnTrigger5(void) : "场景触发器 5"
	output OnTrigger6(void) : "场景触发器 6"
	output OnTrigger7(void) : "场景触发器 7"
	output OnTrigger8(void) : "场景触发器 8"
	output OnTrigger9(void) : "场景触发器 9"
	output OnTrigger10(void) : "场景触发器 10"
	output OnTrigger11(void) : "场景触发器 11"
	output OnTrigger12(void) : "场景触发器 12"
	output OnTrigger13(void) : "场景触发器 13"
	output OnTrigger14(void) : "场景触发器 14"
	output OnTrigger15(void) : "场景触发器 15"
	output OnTrigger16(void) : "场景触发器 16"

	onplayerdeath(choices) : "On player death" : 0 : "如果玩家死亡,该实体应该怎么做" =
	[
		0 : "不做任何事"
		1 : "Cancel Script and return to AI (取消脚本并返回AI) "
	]
]

@PointClass color(0 0 255) base(Targetname) iconsprite("editor/choreo_manager.vmt") = logic_scene_list_manager :
	"Manages a list of logic_choreographed_scene entities. Store choreo scenes in them in order that they will be played by other inputs. Whenever a scene plays, the manager will remove all scenes before that one in the list. The name of another logic_scene_list_manager can be entered in a slot instead of an invididual scene, which will cause all scenes in that manager to be removed when a later scene in this list is played. " +
	"管理 logic_choreographed_scene 实体的列表。将编排场景存储在其中,以便其他输入播放它们。每当播放场景时,管理器将删除列表中该场景之前的所有场景。另一个 logic_scene_list_manager 的名称可以输入槽(slot)而不是单个场景,这将导致该管理器中的所有场景在播放此列表中的后续场景时被删除。"
[
	scene0(target_destination) : "场景 1" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene1(target_destination) : "场景 2" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene2(target_destination) : "场景 3" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene3(target_destination) : "场景 4" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene4(target_destination) : "场景 5" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene5(target_destination) : "场景 6" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene6(target_destination) : "场景 7" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene7(target_destination) : "场景 8" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene8(target_destination) : "场景 9" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene9(target_destination) : "场景 10" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene10(target_destination) : "场景 11" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene11(target_destination) : "场景 12" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene12(target_destination) : "场景 13" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene13(target_destination) : "场景 14" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene14(target_destination) : "场景 15" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"
	scene15(target_destination) : "场景 16" : "" : "logic_choreographed_scene 或 logic_scene_list_manager 的名称。"

	// 输入
	input Shutdown(void) : "删除管理器及其引用的所有场景(以及嵌入在此中的 logic_scene_list_manager 引用的所有场景)。"
]

@PointClass base(BaseNPC, Parentname, RenderFields, Shadow) studio() = generic_actor : "通用演员 NPC"
[
	model(studio) : "模型"

	hull_name(choices) : "大小类型(Hull Type)" : "人" =
	[
		"HUMAN_HULL" : "人"
		"WIDE_HUMAN_HULL" : "宽的"
		"TINY_HULL" : "小的"
		"MEDIUM_HULL" : "中等"
		"LARGE_HULL" : "大的"
	]
]

@PointClass base(prop_dynamic) studioprop() sphere(fademindist) sphere(fademaxdist) = prop_car_glass :
	"这个实体和 prop_dynamic 一样,但带有汽车报警器。"
[
]

@PointClass base(prop_physics, EnableDisable) studioprop() sphere(fademindist) sphere(fademaxdist) = prop_car_alarm :
	"该实体与 prop_physics 相同,但带有汽车报警器。"
[
	output OnCarAlarmStart(void) : "汽车警报器响起。"
	output OnCarAlarmEnd(void) : "汽车警报器关闭。"
	output OnCarAlarmChirpStart(void) : "(译者添加的)汽车开始响起“嘀嘀”声时触发。"
	output OnCarAlarmChirpEnd(void) : "(译者添加的)汽车停止响起“嘀嘀”声时触发。"
]

@SolidClass = func_ladder : 
	"梯子。玩家将能够沿着这个固实体的一侧自由移动,就好像它是一个梯子一样。" +
	"如果你使用模型道具来直观表示地图中的梯子," +
	"将 toolsinvisibleladder 材质应用到 f​​unc_ladder 固实体的可攀爬面。"
[
]

@SolidClass base(Trigger) = trigger_auto_crouch : "允许玩家在碰到触发器时自动蹲下。"
[
]

@SolidClass base(Trigger) = trigger_active_weapon_detect : "检测武器在此区域后输出内容。"
[
	weaponclassname(string) : "要检测的武器" : "weapon_dieselcan" : "激活所必须的武器类型名"
	
	output OnTouchedActiveWeapon(void) : "触碰了符合要求的玩家武器时触发"
]

@PointClass base(Targetname) = player_weaponstrip : "剥夺玩家的武器。"
[	
	input Strip(void) : "剥夺全部武器。"
	//input StripWeaponsAndSuit(void) : "剥夺所有武器和套装(?,原文为 suit)。"
	input StripActiveWeapon(void) : "剥夺玩家选中的武器。"
	input StripWeaponByClassname(string) : "按实体名称移除武器,例如“weapon_dieselcan”"
]

@BaseClass = NavBlocker
[
	input BlockNav(string) : "开始阻挡导航区域。"
	input UnblockNav(void) : "停止阻挡导航区域。"

	teamToBlock(choices) : "要阻挡的队伍" : -1 : "这个实体应该阻挡的队伍。" =
	[
		-1 : "每个人"
		2 : "生还者"
		3 : "感染者"
	]
	
	affectsFlow(choices) : "影响导航路线(Flow)?" : 0 : "这个 func_nav_blocker 是否在关卡中阻挡导航路线?只有启用此功能的 func_nav_blocker 实体才会在阻挡/停止阻挡时导致导航路线重新计算。" =
	[
		0 : "否"
		1 : "是"
	]
]

@SolidClass base(Targetname, NavBlocker) = func_nav_blocker : "一个固体实体,可以阻挡接触其体积的导航区域。" 
[
]

//@PointClass obb(boxmins, boxmaxs) base(Targetname, Angles, NavBlocker) = point_nav_blocker : "一个点实体,可以阻挡接触其体积的导航区域。"
//[
//	boxmins(vector) : "开始点" : "-8 -8 -8"
//	boxmaxs(vector) : "结束点" : "8 8 8"
//]

@SolidClass base(Targetname, EnableDisable) = func_nav_avoidance_obstacle : "一个固实体,告诉机器人避免接触它体积接触的导航区域。" 
[
]

@BaseClass = NavAttributeRegion
[
	spawnFlags(flags) =
	[
		2: "Empty (没有游荡者)" : 0
		32: "Battlestation" : 0
		64: "Finale" : 0
		128: "Mission Start" : 0
		256: "Battlefield" : 0
		1024: "Not Clearable" : 0
		2048: "Checkpoint" : 0
		4096: "Obscured" : 0
		8192: "No mobs" : 0
		32768: "Rescue Vehicle" : 0
		65536: "Rescue Closet" : 0
		524288: "No Threat" : 0
		1048576: "Lying down" : 0
	]
	precise(choices) : "Precise" : 0 =
	[
		0 : "关"
		1 : "开"
	]
	crouch(choices) : "Crouch (蹲伏)" : 0 =
	[
		0 : "关"
		1 : "开"
	]		
	stairs(choices) : "Stairs (楼梯)" : 0 =
	[
		0 : "关"
		1 : "开"
	]
	remove_attributes(integer) : "移除属性" : 0 : "应该从导航区域中删除属性而不是应用它们吗?"
	tank_only(choices) : "Tank Only (仅 Tank)" : 0 =
	[
		0 : "关"
		1 : "开"
	]
	mob_only(choices) : "Mob Only (仅暴徒)" : 0 =
	[
		0 : "关"
		1 : "开"
	]

	// 输入
	input ApplyNavAttributes(void) : "应用导航属性。"
]

@SolidClass base(Targetname,NavAttributeRegion) = func_nav_attribute_region : "一个固实体,它包含要在(实体)生成期间应用于导航区域的属性。"
[
]

@PointClass wirebox(mins, maxs) base(Targetname,NavAttributeRegion) = point_nav_attribute_region : "一个点实体,它包含要在(实体)生成期间应用于导航区域的区域的属性。"
[
	mins(vector) : "开始点" : "-4 -128 -80"
	maxs(vector) : "结束点" : "4 128 80"
]

@SolidClass base(Targetname, Parentname, Origin, RenderFields) = func_elevator :
	"垂直移动的固实体。"
[
	top(vecline) : "顶楼位置"
	bottom(vecline) : "底楼位置"

	speed(integer) : "速度" : 100 : "电梯移动的速度,以英寸/秒 (1英寸=1 Hammer 单位) 为单位。"
	acceleration(integer) : "加速度" : 100 : "电梯接近其目标速度的加速度,以英寸/秒/秒为单位。"
	blockdamage(float) : "阻挡伤害" : 0 : "每帧对阻挡电梯的任何实体造成的伤害量。"
	startsound(sound) : "当电梯开始移动时应播放的声音。"
	stopsound(sound) : "当电梯停止移动时应播放的声音。"
	disablesound(sound) : "当电梯被停用时应播放的声音。"

	// 输入
	input MoveToFloor(string) : "启动电梯移动到指定楼层。"
	input Disable(void) : "停止电梯并防止其再次移动。"
	input SetMaxSpeed(float) : "设置电梯的最高速度。"

	// 输出
	output OnReachedTop(string) : "当电梯到达顶部时触发。"
	output OnReachedBottom(string) : "当电梯到达底部时触发。"
]

@PointClass base(Targetname, Parentname, Angles) iconsprite("editor/info_target.vmt") = info_elevator_floor : 
	"电梯楼层目标。(译者注:代表一个楼层)"
[
	// 输出
	output OnReachedFloor(void) : "当电梯到达该楼层时触发。"
]

@PointClass base(Targetname) = logic_director_query : "允许根据导演的状态触发输出"
[
	minAngerRange( integer ) : "最小愤怒值" : 1  : "最小重新映射的愤怒值范围"
	maxAngerRange( integer ) : "最大愤怒值" : 10 : "最大重新映射的愤怒值范围"

	noise( choices ) : "干扰(不确定性)" : 0 : "你想要愤怒的结果有多不稳定?" =
	[
		0  : "“纯”愤怒值。无干扰。"
		25  : "有些干扰"
		50  : "随机和绝对的平均混合"
		75 : "很多干扰"
		100 : "完全干扰"
	]
	

	// 输入
	input HowAngry(void) : "询问导演有多愤怒。"

	// 输出
	output OutAnger(integer) : "HowAngry 输入将导致此输出触发并重新映射愤怒值。"
	output On20SecondsToMob(void) : "在生成尸潮前 20 秒触发。"
	output On60SecondsToMob(void) : "在生成尸潮前 60 秒触发。"
]


@PointClass base(Targetname) = info_director
[
	// 输入
	input PanicEvent(void) : "当发生导演应该知道的重大事件时触发。(刷尸潮)"
	input ScriptedPanicEvent(string) : "当自定义恐慌事件(尸潮)想要发生时触发。"
	input ForcePanicEvent(void) : "触发恐慌事件,不管发生了什么。(说白了就是强制刷尸潮)"
	input EndCustomScriptedStage(void) : "结束自定义脚本阶段。"
	input ForceSurvivorPositions(void) : "让每个幸存者站在 info_survivor_position。"
	input ReleaseSurvivorPositions(void) : "让幸存者再次自由活动。"
	input FireConceptToAny(string) : "向任何能够说出它的幸存者发射一个说话概念。"
	input IncrementTeamScore(integer) : "增加一个团队的分数。 (2=幸存者,3=感染者)(清道夫使用)"
	input StartIntro(void) : "开场动画开始时触发。"
	input FinishIntro(void) : "开场动画结束时触发。"
	input BeginScript(string) : "执行一个导演脚本。"
	input EndScript(void) : "停止执行导演脚本。"

	// 日志输入
	input CreateNewJournal(string) : "创建新日志。"
	input WriteToJournal(string) : "将任务添加到 I/O 日志。"
	input ExecuteJournal(string) : "执行指定日志中的所有任务。"
	
	input EnableTankFrustration(void) : "可用于启用坦克挫败计(即你打对抗时操控了 Tank 后长时间不攻击生还者得到的超时)。"
	input DisableTankFrustration(void) : "可用于禁用坦克挫败计(即你打对抗时操控了 Tank 后长时间不攻击生还者得到的超时)。"


	// 输出
	output OnGameplayStart(void) : "当地图加载,所有玩家都加入并开始游戏时触发。"
	output OnCustomPanicStageFinished(void) : "当自定义恐慌事件或自定义结局的每个阶段完成时触发。"
	output OnPanicEventFinished(void) : "当恐慌事件完成时触发。"
	output OnTeamScored(void) : "当团队将清道夫物品放入清道夫目标(例如发电机)时触发。"

	output OnScavengeRoundStart(void) : "当清道夫回合开始时触发。"
	output OnScavengeOvertimeStart(void) : "当计时器为 0,比赛进入加时赛时触发。"
	output OnScavengeOvertimeCancel(void) : "当计时器的时间增加了,加时赛结束时触发。"
	output OnScavengeTimerExpired(void) : "当时间已到,游戏没有进入加时赛时触发。"
	output OnScavengeIntensityChanged(Integer) : "当强度等级发生了变化时触发。1 = 最高强度,随着数字变大而降低。(Intensity level has changed. 1 = highest intensity, decreases as number gets larger.)"
	
	output OnUserDefinedScriptEvent1(void) : "当从 Squirrel 脚本触发的通用用户定义事件时触发"
	output OnUserDefinedScriptEvent2(void) : "当从 Squirrel 脚本触发的通用用户定义事件时触发"
	output OnUserDefinedScriptEvent3(void) : "当从 Squirrel 脚本触发的通用用户定义事件时触发"
	output OnUserDefinedScriptEvent4(void) : "当从 Squirrel 脚本触发的通用用户定义事件时触发"
	
]

@PointClass base(Targetname) iconsprite("editor/info_game_event_proxy.vmt") = info_game_event_proxy
[
	event_name(string) : "要生成的事件名称"
	range(float) : "Range" : "50" : "玩家必须离多近才能看见。以英尺(不是英寸)为单位。"

	spawnflags(flags) =
	[
		1: "当看到时自动展示提示给他人" : 0
	]

	// Inputs
	input GenerateGameEvent(void) : "生成指定的游戏事件。(此实体作为 SUBJECT 发送)"
]

@PointClass base(Targetname) = game_scavenge_progress_display
[
	Max(float) : "最大值" : "0" : "要收集的物品数。"

	// 输入
	input TurnOn(void) : "打开指示器。"
	input TurnOff(void) : "关闭指示器。"
	input SetTotalItems(integer) : "设置清道夫物品的目标(总)数量。"
]


@SolidClass base( Targetname, EnableDisable ) = fog_volume : "控制地图中雾的实体。"
[
	FogName(target_destination) : "雾的名称" : : "与此固实体关联的雾实体(env_fog_controller)的名称。"
	PostProcessName(target_destination) : "Postprocess Name(后期处理名称)" : : "与此固实体关联的后期处理实体(postprocess_controller)的名称。"
	ColorCorrectionName(target_destination) : "ColorCorrection Name(色彩纠正名称)" : : "与此固实体关联的 color_correction 实体的名称。"
]

@FilterClass base(BaseFilter) iconsprite("editor/filter_team.vmt") = filter_activator_team :
	"按激活团队过滤的过滤器。"
[
	filterteam(choices) : "过滤的团队编号" : 2 : "要过滤的团队编号。如果过滤模式为允许,则只有其实体"+
		"团队编号匹配给定团队将通过过滤器(说白了就是只允许这个团队通过过滤器)。如果过滤模式是不允许,"+
		"除团队编号与给定团队匹配的实体外,所有实体都将通过过滤器(说白了就是不允许这个团队通过过滤器)。" =
	[
		2 : "生还者"
		3 : "感染者"
	]
]

@FilterClass base(BaseFilter) iconsprite("editor/filter_team.vmt") = filter_activator_infected_class :
	"按激活者的感染者类型过滤的过滤器。"
[
	filterinfectedclass(choices) : "过滤感染者的类型" : 2 : "要过滤的感染者类型。如果过滤模式为允许,则只有其实体"+
		"团队编号匹配给定团队将通过过滤器(说白了就是只允许这个实体通过过滤器)。如果过滤模式是不允许,"+
		"除团队编号与给定团队匹配的实体外,所有实体都将通过过滤器(说白了就是不允许这个实体通过过滤器)。" =
	[
		1 : "Smoker"
		2 : "Boomer"
		3 : "Hunter"
		4 : "Spitter"
		5 : "Jockey"
		6 : "Charger"
		8 : "Tank"
	]
]

@FilterClass base(BaseFilter) = filter_melee_damage :
	"过滤伤害的伤害过滤器,只允许近战伤害。damagetype 指定允许的近战伤害类型"
[
	damagetype(choices) : "伤害类型" : 64 : "要过滤的伤害类型。允许指定的伤害类型。" =
	[
		0 : "所有近战武器伤害"
		4 : "只允许锋利的近战武器的伤害"
		128 : "只允许非锋利的近战武器的伤害"
	]
]

@FilterClass base(BaseFilter) = filter_health :
	"一种伤害过滤器,根据造成伤害的实体是否使用了肾上腺素进行过滤。"
[	
	adrenalinepresence(choices) : "允许的肾上腺素激活状态" : 1 : "允许攻击者的这种肾上腺素状态通过过滤器。" =
	[
		0 : "仅非激活"
		1 : "仅激活"
	]
	
	healthmin(integer) : "最小生命值" : 0 : "将通过此过滤器的玩家的生命值的下限(包括这个下限)。"
	healthmax(integer) : "最大生命值" : 100 : "将通过此过滤器的玩家生命值的上限(包括这个上限)。"
]


@PointClass base(prop_dynamic_base,EnableDisable) studioprop("models/w_models/weapons/w_minigun.mdl") = prop_minigun : "玩家可以使用的一代机枪。"
[
	model(studio) : "模型" : "models/w_models/weapons/w_minigun.mdl"
	MaxYaw(float) : "最大偏航角(Yaw)" : "90" : "机枪可以转动的偏航角范围。"
	MaxPitch(float) : "最大俯仰角(Pitch)" : "60" : "机枪可以往下瞄准的最大角度。"
	MinPitch(float) : "最小俯仰角(Pitch)" : "-30" : "机枪可以往上瞄准的最大角度。"

	// 输出
	output OnFireStart(void) : "当机枪旋转并开始射击时触发。"
	output OnFireStop(void) : "当机枪停止射击时触发。"
]


@PointClass base(prop_dynamic_base,EnableDisable) studioprop("models/w_models/weapons/50cal.mdl") = prop_mounted_machine_gun: "50 口径机枪(二代机枪)(可以使用)"
[
	model(studio) : "模型" : "models/w_models/weapons/50cal.mdl"
	MaxYaw(float) : "最大偏航角" : "90" : "机枪可以转动的偏航角范围。"
	MaxPitch(float) : "最大俯仰角" : "60" : "机枪可以往下瞄准的最大角度。"
	MinPitch(float) : "最小俯仰角" : "-30" : "机枪可以往上瞄准的最大角度。"

	// 输出
	output OnFireStart(void) : "当机枪旋转并开始射击时触发。"
	output OnFireStop(void) : "当机枪停止射击时触发。"
]


@PointClass base(prop_dynamic_base,EnableDisable) studioprop() = prop_health_cabinet : "医疗箱"
[
	model(studio) : "模型" : "models/props_interiors/medicalcabinet02.mdl"
	HealthCount(integer) : "止痛药的数量" : 1 : "里面的止痛药/急救包数量(1-4)"
]

@PointClass base(Targetname, Angles, Parentname) color(255 100 100) studio("models/survivors/survivor_coach.mdl") = info_survivor_position : "逃脱结局时放置幸存者的位置"
[
	Order(integer) : "顺序" : 1 : "基于生还者上救援载具顺序的地点指数。(1-4)"
	SurvivorName(string) : "生还者名称" : "" : "强迫这个幸存者使用这个位置(佐伊、路易斯等)"
	SurvivorIntroSequence(string) : "幸存者开场动画" : "" : "当开场动画开始时应播放的导航。"
	GameMode(string) : "游戏模式" : "" : "仅将此位置用于特定的游戏模式(合作、对抗、生还者、清道夫)"
	SurvivorConcept(string) : "生还者概念" : "" : "将生还者传送到此处时播放的响应规则概念(详见'响应系统')"
	HideWeapons(choices) : "隐藏武器" : 0 : "锁定此位置时隐藏生还者的武器。" =
	[
		0 : "否"
		1 : "是"
	]

	// 输入
	input SetViewControl(string) : "如果一个生还者被分配到这个位置,将他的视图设置为一个 point_viewcontrol 实体"
]

@PointClass base(Targetname, PlayerClass, Angles) studio("models/survivors/survivor_coach.mdl") = info_survivor_rescue : "生还者救援点(房间复活用的)"
[
	rescueEyePos(vecline) : "等待救援的生还者的眼睛位置"
	model(studio) : "模型" : "models/editor/playerstart.mdl"
]

@PointClass base(Targetname, Angles, EnableDisable) studioprop() = trigger_finale : "结局触发器"
[
	model(studio) : "模型" : "models/props_misc/german_radio.mdl"

	disableshadows(choices) : "禁用阴影" : 0 : "用于禁用此实体上的动态阴影。" =
	[
		0 : "否"
		1 : "是"
	]

	FirstUseDelay(float) : "首次使用延迟" : "0" : "对于两部分的结局开始,允许在另一个使用之前延迟这么多秒。"
	UseDelay(float) : "使用延迟" : "0" : "在使用后多少秒之后才开始结局。"

	type(choices) : "结局类型" : 0 : "指定要触发的结局风格" =
	[
		0 : "默认结局"
		1 : "长途救援结局"
		2 : "自定义结局"
		4 : "清道夫结局"
	]

	ScriptFile(string) : "脚本文件"
	
	VersusTravelCompletion(float) : "对抗模式积分" : "0.2" : "通过前往决赛获得多少对抗分数(在长途救援结局中无效)"

	
	IsSacrificeFinale(choices) : "是否启用牺牲结局" : 0 : "如果为是,则必须有一名幸存者可以在逃生车辆外执行某些操作。" =
	[
		0 : "否"
		1 : "是"
	]
	
	
	input FinaleEscapeFinished(void) : "给予生还者胜利。"
	input FinaleEscapeForceSurvivorPositions(void) : "让生还者在逃离载具上站稳。(说白了就是传送到指定的 info_survivor_positon)"
	input FinaleEscapeVehicleReadyForSurvivors(void) : "让生还者说出车辆现在是如何停止的。(说白了就是强迫人机去到救援载具上,显示消息' ! 救援到了,快上来!'。"
	input ForceFinaleStart(void) : "现在启动结局。"
	input GauntletStopPanic(void) : "将长途救援结局状态从持续恐慌模式(持续刷尸潮)中移出。(说白了就是暂停尸潮的刷新)"
	input AdvanceFinaleState(void) : "增加结局阶段。"
	input SacrificeEscapeFailed(void) : "表示生还者未能通过逃生要求(牺牲失败的那个界面上的要求)"
	input SacrificeEscapeSucceeded(void) : "表示生还者符合逃生要求"
	input SacrificePlayerBeginsRun(void) : "玩家 (!Activator) 已承诺去牺牲"
	output FinaleEscapeStarted(void) : "当生还者开始逃跑时触发。(说白了就是救援载具来了,但没到位置上)"
	output FinaleWon(void) : "当生还者赢了结局时触发。"
	output FinaleLost(void) : "当生还者输掉了结局时触发。"
	output FirstUseStart(void) : "当一个玩家第一次使用 trigger_finale 时触发。"
	output UseStart(void) : "当玩家使用 trigger_finale 触发结局时触发。"
	output FinaleStart(void) : "当结局开始时触发。"
	output FinalePause(void) : "在每个阶段之间的暂停期间触发。"
	output EscapeVehicleLeaving(void) : "当逃离载具开始离开时触发。"
]

@PointClass base(Targetname, Angles) studioprop() = trigger_standoff : "(已过时)Standoff Trigger(结局相关?)"
[
	model(studio) : "模型(此实体已过时)" : "models/props_misc/german_radio.mdl"
	spawnflags(flags) =
	[
		512: "禁止玩家使用" : 0
	]

	disableshadows(choices) : "禁用阴影(此实体已过时)" : 0 : "用于禁用此实体上的动态阴影。" =
	[
		0 : "否"
		1 : "是"
	]

	UseDuration(float) : "使用时长(此实体已过时)" : "0" : "幸存者必须在几秒内使用触发器来开始结局(0 是立即开始)。"
	UseDelay(float) : "使用延迟(此实体已过时)" : "0" : "在使用后多少秒之后开始结局。"

	input FinaleEscapeFinished(void) : "给予生还者胜利。"
	input FinaleEscapeForceSurvivorPositions(void) : "让生还者在逃离载具上站稳。(说白了就是传送到指定的 info_survivor_positon)"
	input FinaleEscapeVehicleReadyForSurvivors(void) : "让生还者说出车辆现在是如何停止的。(说白了就是强迫人机去到救援载具上,显示消息' ! 救援到了,快上来!'。"
	input ForceFinaleStart(void) : "现在启动结局。"
	output FinaleEscapeStarted(void) : "当生还者开始逃跑时触发。(说白了就是救援载具来了,但没到位置上)"
	output FinaleWon(void) : "当生还者赢了结局时触发。"
	output FinaleLost(void) : "当生还者输掉了结局时触发。"
	output FirstUseStart(void) : "当一个玩家第一次使用 trigger_finale 时触发。"
	output UseStart(void) : "当玩家使用 trigger_finale 触发结局时触发。"
	output FinaleStart(void) : "当结局开始时触发。"
	output FinalePause(void) : "在每个阶段之间的暂停期间触发。"
	output EscapeVehicleLeaving(void) : "当逃离载具开始离开时触发。"
]

@SolidClass = info_changelevel : 
	"标记关卡转换的实体\n" +
	"在两个地图中放置一个 info_landmark,标记每个地图中的“相同”位置。\n"+
	"提示和技巧:要在下一个关卡触发事件,请使用 OnLevelChange 输出打开当前关卡中的 env_global。"+
	"在下一个关卡创建一个 logic_auto 来检查 env_global 设置的状态。\n\n"+
	"要控制哪些实体通过关卡转换,请创建一个或多个 info_transitions 并"+
	"为它们指定与 landmark 相同的名称。 info_transition(s) 中的任何实体都将转到下一张地图。"
[
	targetname(target_source) : "名称"
	map(string) : "下个地图的名称"
	landmark(target_destination) : "Landmark 目标名"
	spawnflags(flags) =
	[
		2: "禁用接触" : 0
		4: "转换到上一关" : 0
	]
	
	// 输出
	output OnChangeLevel(void) : "当关卡转换了触发。"
]

@PointClass base(prop_door_rotating) studioprop() = prop_door_rotating_checkpoint : 
	"一个用于在世界上放置特殊的安全门的实体。"
[
]

@PointClass base(Targetname, Angles, Parentname, Angles) studio("models/infected/common_male01.mdl") = info_zombie_spawn :
	"一个用于生成丧尸的实体。"
[
	population(string) : "种类" : "default" : "丧尸的种类可供选择。"
	
	offer_tank(choices) : "向感染者玩家提供生成的 Tank" : 0 : "(译者注)大概意思是允许玩家操控这个实体生成的 Tank。" =
	[
		0: "否"
		1: "是"
	]
	
	input SpawnZombie(void) : "立即生成一只丧尸。"
	input StartleZombie(string) : "惊吓丧尸(仅限 Witch)。可选择传递生还者的名字(给 Witch)进行攻击。"
	
		// 输出
	output OnSpawnNormal(void) : "当生成器创建一个正常的感染者时触发。"
	output OnSpawnSmoker(void) : "当生成器创建一个 Smoker 时触发。"
	output OnSpawnBoomer(void) : "当生成器创建一个 Boomer 时触发。"
	output OnSpawnHunter(void) : "当生成器创建一个 Hunter 时触发。"
	output OnSpawnSpitter(void) : "当生成器创建一个 Spitter 时触发。"
	output OnSpawnJockey(void) : "当生成器创建一个 Jockey 时触发。"
	output OnSpawnCharger(void) : "当生成器创建一个 Charger 时触发。"
	output OnSpawnWitch(void) : "当生成器创建一个 Witch 时触发。"
	output OnSpawnTank(void) : "当生成器创建一个 Tank 时触发。"
]

@PointClass base(Targetname, Angles, Parentname, EnableDisable) = info_zombie_border :
	"该实体后面不会生成任何丧尸。"
[

]

@PointClass base(Origin,Targetname) = info_remarkable : "世界上的一个对象,看到它的角色会说出 TLK_REMARK 概念"
[
	contextsubject(string) : "主题语境(Subject context)" : "" : "(看到此对象时触发的 TLK_REMARK 的 SUBJECT 上下文中的文本。)\nText to put in the SUBJECT context of the TLK_REMARK fired upon sighting this object." 
]

//--------------------------------------------------------------------------------------------------------
// 武器

@BaseClass color(0 0 200) base(Targetname, Angles) = Weapon
[
	output OnPlayerPickup(void) : "当玩家捡起该武器时触发。"
]

@BaseClass color(0 0 200) base(Parentname, Global, Targetname, Angles, Studiomodel) = WeaponSpawnSingle
[
	weaponskin(integer) : "武器皮肤(Skin)" : -1 : "有些武器有多个版本的纹理,称为皮肤。将此设置为 -1 以外的数字,以使给定武器使用该皮肤而不是默认皮肤。"
	glowrange(float) : "发光距离" : 0 : "为此生成器设置自定义发光范围。0 表示使用默认范围。"

	solid(choices) : "碰撞" : 6 =
	[
		0: "非实体"
		2: "使用边界框(Bounding Box)"
		6: "使用 VPhysics"
	]

	spawnflags(Flags) =
	[
		1 : "启用物理碰撞" : 0
		2 : "必须存在" : 0
		8 : "无限物品[覆盖数量(键值 Count)]" : 0
	]
]

@BaseClass color(0 0 200) base(WeaponSpawnSingle) = WeaponSpawn
[
	count(integer) : "数量" : 5 : "消失前给予的最大武器数量。"
	
	spawnflags(Flags) = 
	[
		4 : "吸收任何掉落的武器类型 (Absorb any dropped weapon type)" : 0
	]
]

// 求生之路枪械 -----------

@PointClass base(Targetname,Angles) = weapon_item_spawn
[
	weaponskin(integer) : "武器皮肤(Skin)" : -1 : "有些武器有多个版本的纹理,称为皮肤。将此设置为 -1 以外的数字,以使给定武器使用该皮肤而不是默认皮肤。"
	glowrange(float) : "发光距离" : 0 : "为此生成器设置自定义发光范围。0 表示使用默认范围。"

	item1(integer) : "弹药堆" : 1 
	item2(integer) : "急救包" : 0 
	item3(integer) : "莫洛托夫鸡尾酒 (燃烧弹)" : 1 
	item4(integer) : "止痛药" : 1 
	item5(integer) : "土制炸弹" : 1 
	item6(integer) : "氧气管" : 0
	item7(integer) : "丙烷罐 (煤气罐)" : 0
	item8(integer) : "汽油桶" : 0
	//item9(integer) : "" : 0				// 这些键值可以在地图中设置,如果重复使用它们要小心。而是制作一个新 ItemN
	//item10(integer) : "" : 0
	item11(integer) : "肾上腺素" : 1
	item12(integer) : "心脏起搏器 (电击器)" : 0
	item13(integer) : "Boomer 胆汁" : 0
	//item14(integer) : "" : 0
	//item15(integer) : "" : 0
	item16(integer) : "电锯 (链锯)" : 0
	item17(integer) : "榴弹发射器" : 0	
	item18(integer) : "M60 机枪" : 0	

	melee_weapon(string) : "近战武器" : "" : "选项:'Any' 或者以逗号分隔的近战武器脚本名称字符串(译者注:比如machete, frying_pan, fireaxe)。留空为无。"
	
	spawnflags(Flags) =
	[
		1 : "在生成的物品上启用物理" : 0
		2 : "生成的物品必须存在" : 0
		8 : "无限个物品" : 0
	]
]

@PointClass base(Targetname) = upgrade_spawn
[
	laser_sight(integer) : "激光瞄准器" : 1
	upgradepack_incendiary(integer) : "升级包 - 燃烧弹" : 1
	upgradepack_explosive(integer) : "升级包 - 高爆弹" : 1
	
	spawnflags(Flags) =
	[
		1 : "在生成的物品上启用物理" : 0
		2 : "生成的物品必须存在" : 0
	]
]

@PointClass base(Targetname,Angles) studioprop("models/props/terror/exploding_ammo.mdl") = upgrade_ammo_explosive
[
	count(integer) : "数量" : 4 : "消失前给予的最大升级次数。"
]

@PointClass base(Targetname,Angles) studioprop("models/props/terror/incendiary_ammo.mdl") = upgrade_ammo_incendiary
[
	count(integer) : "数量" : 4 : "消失前给予的最大升级次数。"
]

@PointClass base(Targetname,Angles) studioprop("models/w_models/Weapons/w_laser_sights.mdl") = upgrade_laser_sight []


@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_pistol_a.mdl") = weapon_pistol_spawn : "手枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_desert_eagle.mdl") = weapon_pistol_magnum_spawn : "马格南手枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_smg_uzi.mdl") = weapon_smg_spawn : "SMG 冲锋枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_shotgun.mdl") = weapon_pumpshotgun_spawn : "泵动式霰弹枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_autoshot_m4super.mdl") = weapon_autoshotgun_spawn : "战术霰弹枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_rifle_m16a2.mdl") = weapon_rifle_spawn : "M-16 突击步枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_sniper_mini14.mdl") = weapon_hunting_rifle_spawn : "猎枪" []

@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_smg_a.mdl") = weapon_smg_silenced_spawn : "消音冲锋枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_pumpshotgun_A.mdl") = weapon_shotgun_chrome_spawn : "铬管霰弹枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_shotgun_spas.mdl") = weapon_shotgun_spas_spawn : "战斗霰弹枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_rifle_B.mdl") = weapon_rifle_desert_spawn : "战斗步枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_rifle_ak47.mdl") = weapon_rifle_ak47_spawn : "AK-47" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_sniper_military.mdl") = weapon_sniper_military_spawn : "狙击步枪" []

@PointClass base(WeaponSpawn) studioprop("models/weapons/melee/w_chainsaw.mdl") = weapon_chainsaw_spawn : "电锯" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/weapons/w_grenade_launcher.mdl") = weapon_grenade_launcher_spawn : "榴弹发射器" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_m60.mdl") = weapon_rifle_m60_spawn : "M60 机枪" []

// CSS 枪械
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_smg_mp5.mdl") = weapon_smg_mp5_spawn : "MP5 冲锋枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_rifle_sg552.mdl") = weapon_rifle_sg552_spawn : "SG552 突击步枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_sniper_awp.mdl") = weapon_sniper_awp_spawn : "AWP 狙击枪" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_sniper_scout.mdl") = weapon_sniper_scout_spawn : "Scout 狙击枪" []

// 投掷物 -----------------
@PointClass base(WeaponSpawn) studioprop("models/w_models/weapons/w_eq_pipebomb.mdl") = weapon_pipe_bomb_spawn : "土制炸弹" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/weapons/w_eq_molotov.mdl") = weapon_molotov_spawn : "燃烧弹" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/weapons/w_eq_bile_flask.mdl") = weapon_vomitjar_spawn : "Boomer 胆汁" []

// 物品 ------------------
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_Medkit.mdl") = weapon_first_aid_kit_spawn : "急救包" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_painpills.mdl") = weapon_pain_pills_spawn : "止痛药" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_adrenaline.mdl") = weapon_adrenaline_spawn : "肾上腺素" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_defibrillator.mdl") = weapon_defibrillator_spawn : "心脏起搏器" []
@PointClass base(WeaponSpawnSingle) studioprop("models/props_junk/gascan001a.mdl") = weapon_gascan_spawn : "汽油桶" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_incendiary_ammopack.mdl") = weapon_upgradepack_incendiary_spawn : "升级包 - 燃烧弹" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_explosive_ammopack.mdl") = weapon_upgradepack_explosive_spawn : "升级包 - 高爆弹" []

@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_Medkit.mdl") = weapon_first_aid_kit : "启用物理的急救包 - 该实体旨在用于脚本事件中,其中单个物品需要在物理激活的情况下生成。" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_grenade_launcher.mdl") = weapon_grenade_launcher : "榴弹发射器 - 该实体旨在用于需要在物理激活的情况下生成单个物品的脚本事件" []

// 近战武器 --------------------
@PointClass base(WeaponSpawn) studioprop() = weapon_melee_spawn : "近战武器"
[
	melee_weapon(string) : "近战武器" : "any" : "选项:'Any' 或者以逗号分隔的近战武器脚本名称字符串(译者注:比如machete, frying_pan, fireaxe)。留空为无。"
	model(studio) : "模型" : "models/weapons/melee/w_fireaxe.mdl" : "辅助模型"
]

// 清道夫描述 --------------------
@PointClass base(WeaponSpawnSingle) studioprop("models/props_junk/gascan001a.mdl") = weapon_scavenge_item_spawn : "清道夫物品"
[
	glowstate(choices) : "初始发光状态" : 3 =
	[
		0: "关"
		3: "开"
	]

	input SpawnItem(void) : "生成一个清道夫模式的物品的实例。"
	input TurnGlowsOn(void) : "所有当前和未来生成的物品都应该发光。"
	input TurnGlowsOff(void) : "所有当前和未来生成的物品都不应发光。"
	
	output OnItemPickedUp(void) : "当这个生成器的清道夫物品被玩家捡起时触发。"
]

@PointClass base(Origin,Targetname) = point_prop_use_target : "携带道具的使用对象。触发道具的使用行为。(灌油桶用的实体)"
[
	spawnflags(Flags) = 
	[
		1 : "可用于煤气罐" : 1
		2 : "可用于可乐罐" : 0
	]

	nozzle(target_destination) : "灌油口" : : "此 use_target 的 prop_dynamic 灌油口的名称(清道夫模式)。"

	input Activate(void) : "激活使用目标。"
	input Deactivate(void) : "停用使用目标。"

	output OnUseStarted(void) : "当玩家开始使用此目标时触发。"	
	output OnUseCancelled(void) : "当玩家停止使用时触发。"	
	output OnUseFinished(void) : "当玩家使用完成时触发。"	
]

@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_rifle_m16a2.mdl") = weapon_spawn : "可配置的武器生成器"
[	
	weapon_selection(choices) : "Selection" : "any_primary" : "生成选定的武器或武器类别" =
	[
		"any" : "任何主要或次要武器"
		
		"any_pistol" : "任何手枪"
		
		// 特定的手枪
		"weapon_pistol" : "手枪"

		"weapon_pistol_magnum" : "马格南手枪"
		
		"any_primary" : "任何主武器"
		
		"tier1_any"	: "任何一阶主武器"
		"tier2_any"	: "任何二阶主武器"
		
		"any_smg" : "任何一阶冲锋枪"
		"any_rifle" : "任何二阶步枪"
		"any_sniper_rifle" : "任何二阶狙击步枪"
		
		"any_shotgun" : "任何霰弹枪"
		"tier1_shotgun" : "任何一阶霰弹枪"
		"tier2_shotgun" : "任何二阶霰弹枪"
		
		// 特定主武器	
		"weapon_smg" : "冲锋枪"
		"weapon_smg_silenced" : "消音冲锋枪"
		"weapon_pumpshotgun" : "泵动式霰弹枪"
		"weapon_shotgun_chrome" : "铬管霰弹枪"
		"weapon_autoshotgun" : "战术霰弹枪"
		"weapon_shotgun_spas" : "战斗霰弹枪"
		"weapon_rifle" : "M-16 突击步枪"
		"weapon_rifle_desert" : "战斗步枪"
		"weapon_rifle_ak47" : "AK-47"
		"weapon_hunting_rifle" : "猎枪"
		"weapon_sniper_military" : "狙击步枪"
		
		// specific css weapons	
		"weapon_smg_mp5" : "MP5 冲锋枪"
		"weapon_rifle_sg552" : "SG552 突击步枪"
		"weapon_sniper_awp" : "AWP 狙击枪"
		"weapon_sniper_scout" : "Scout 狙击枪"
	]	
	
	spawn_without_director(choices) : "无需导演即刻生成" : 0 : "绕过近邻检查,使附近的武器是同一阶/不是同一种武器" =
	[
		0 : "否"
		1 : "是"
	]	

	spawnflags(Flags) = 
	[
		16 : "限制生成位置(不要掉到地上)" : 0
	]

	no_cs_weapons(choices) : "无 CS 武器" : 0 : "选择“任何”武器时,如果你不想要 CS 武器,请将其设置为“是”。" =
	[
		0 : "否"
		1 : "是"
	]	
]


// 弹药 ---------------------
@PointClass base(WeaponSpawn) studioprop() = weapon_ammo_spawn : "弹药" []

// 武器分布 --------
@PointClass base(Targetname,Angles) = info_map_parameters :
	"L4D 特定的地图参数。"
[
	AmmoDensity(float) : "弹药堆密度" : "6.48" : "每 100 平方码的弹药堆密度"
	PainPillDensity(float) : "止痛药密度" : "6.48" : "同上"
	MolotovDensity(float) : "燃烧弹密度" : "6.48" : "同上"
	PipeBombDensity(float) : "土制炸弹密度" : "6.48" : "同上"
	PistolDensity(float) : "手枪密度" : "6.48" : "同上"
	GasCanDensity(float) : "汽油桶密度" : "6.48" : "同上"
	OxygenTankDensity(float) : "氧气管密度" : "6.48" : "同上"
	PropaneTankDensity(float) : "煤气罐密度" : "6.48" : "同上"
	MeleeWeaponDensity(float) : "近战武器密度" : "6.48" : "同上"
	AdrenalineDensity(float) : "肾上腺素密度" : "6.48" : "同上"
	DefibrillatorDensity(float) : "心脏起搏器密度" : "3.0" : "同上"
	VomitJarDensity(float) : "Boomer 胆汁密度" : "6.48" : "同上"
	UpgradepackDensity(float) : "弹药升级密度" : "1.0" : "同上"
	ChainsawDensity(float) : "超级武器(链锯等)密度" : "1.0" : "每 100 平方码的电锯和榴弹发射器密度"
	ConfigurableWeaponDensity(float) : "可配置的武器生成器密度" : "-1.0" : "weapon_spawn 实体的密度,-1 生成所有实体"
	ConfigurableWeaponClusterRange(float) : "可配置的武器堆密度" : 100 : "为了分布目的,将彼此如此(值)接近的 weapon_spawn 实体视为一个“武器堆”。"
	MagnumDensity(float) : "马格南手枪密度" : "-1.0" : "Weapon_magnum_spawn 实体的密度,设置为 -1 以生成所有实体"

	ItemClusterRange(float) : "物品堆密度" : 50 : "出于分布目的,彼此如此(值)接近的同类清道夫物品被视为单个“物品堆”。"	
	FinaleItemClusterCount(integer) : "结局物品堆数量" : 3 : "在结局中将填充多少组物品。"
	
	input UpdateCvars(void) : "将此实体中的值填充到控制台变量(Cvars)中以进行调整"
]

@PointClass base(Targetname,Angles) = info_map_parameters_versus :
	"为对抗模式而设置的 L4D 特定地图参数。"
[
	AmmoDensity(float) : "弹药堆密度" : "6.48" : "每 100 平方码的弹药堆密度"
	PainPillDensity(float) : "止痛药密度" : "6.48" : "同上"
	MolotovDensity(float) : "燃烧弹密度" : "6.48" : "同上"
	PipeBombDensity(float) : "土制炸弹密度" : "6.48" : "同上"
	PistolDensity(float) : "手枪密度" : "6.48" : "同上"
	GasCanDensity(float) : "汽油桶密度" : "6.48" : "同上"
	OxygenTankDensity(float) : "氧气管密度" : "6.48" : "同上"
	PropaneTankDensity(float) : "煤气罐密度" : "6.48" : "同上"
	MeleeWeaponDensity(float) : "近战武器密度" : "6.48" : "同上"
	AdrenalineDensity(float) : "肾上腺素密度" : "6.48" : "同上"
	DefibrillatorDensity(float) : "心脏起搏器密度" : "2.50" : "同上"
	VomitJarDensity(float) : "Boomer 胆汁密度" : "6.48" : "同上"
	UpgradepackDensity(float) : "弹药包密度" : "1.0" : "同上"
	ChainsawDensity(float) : "超级武器(链锯等)密度" : "1.0" : "每 100 平方码的电锯和榴弹发射器密度"
	ConfigurableWeaponDensity(float) : "可配置的武器生成器密度" : "-1.0" : "weapon_spawn 实体的密度,-1 生成所有实体"
	ConfigurableWeaponClusterRange(float) : "可配置的武器堆密度" : 100 : "为了分布目的,将彼此如此(值)接近的 weapon_spawn 实体视为一个“武器堆”。"
	MagnumDensity(float) : "马格南手枪密度" : "-1.0" : "Weapon_magnum_spawn 实体的密度,设置为 -1 以生成所有实体"

	ItemClusterRange(float) : "物品堆密度" : 50 : "出于分布目的,彼此如此(值)接近的同类清道夫物品被视为单个“物品堆”。"	
	FinaleItemClusterCount(integer) : "结局物品堆数量" : 3 : "在结局中将填充多少组物品。"
	
	input UpdateCvars(void) : "将此实体中的值填充到控制台变量(Cvars)中以进行调整"
]

@PointClass base(Targetname,Angles) iconsprite("editor/info_gamemode.vmt") = info_gamemode :
	"Game mode trigger."
[
	output OnCoop(void) : "当地图在合作模式游戏中加载时触发。"
	output OnVersus(void) : "当地图在对抗模式游戏中加载时触发。"
	output OnSurvival(void) : "当地图在生还者模式游戏中加载时触发。"
	output OnScavenge(void) : "当地图在清道夫模式游戏中加载时触发。"

	output OnCoopPostIO(void) : "在 OnCoop 生成的所有实体 IO 完成后触发。"
	output OnVersusPostIO(void) : "在 OnVersus 生成的所有实体 IO 完成后触发。"
	output OnSurvivalPostIO(void) : "在 OnSurvival 生成的所有实体 IO 完成后触发。"
	output OnScavengePostIO(void) : "在 OnScavenge 生成的所有实体 IO 完成后触发。"

	output OnScavengeMatchStart(void) : "在清道夫比赛的第一个地图加载时触发。回合重新开始时不会触发。"

	output OnNavAnalyze(void) : "在命令行上使用 -navanalyze 加载地图时触发。"
]

// 光束聚光灯 ---------------------
@PointClass base(Targetname, Parentname, RenderFields, Angles) studio("models/editor/cone_helper.mdl") = beam_spotlight : 
	"一个绘制聚光灯的实体。当玩家看到它时会绘制出光束,当它面向玩家时会绘制出光晕。"+
	"除非选中“无动态光”生成标志,否则它还会在聚光灯末端所在的任何位置创建动态光。" +
	"这个聚光灯完全是客户端范围,它不会在客户端之间同步。"
[
	spawnflags(Flags) = 
	[
		1 : "开始时启用" : 1
		2 : "无动态光" : 0
		4 : "开始时启用旋转" : 0
		8 : "翻转方向" : 0
		16 : "X 轴"  : 0
		32 : "Y 轴"  : 0
		64 : "无雾" : 0
	]

	maxspeed(integer) : "最大旋转速度" : 100 : "聚光灯的最大旋转速度,以度/秒为单位。"

	spotlightlength(integer) : "聚光灯长度" : 500 : "聚光灯光束的长度。"
	spotlightwidth(integer) : "聚光灯宽度" : 50 : "聚光灯光束的宽度。"
	rendercolor(color255) : "颜色 (R G B)" : "255 255 255"
	HDRColorScale(float) : "HDR 颜色比例." : "0.7" : "float value to multiply sprite color by when running in HDR mode."
	
	// 输入
	input LightOn(void) : "打开聚光灯"
	input LightOff(void) : "关闭聚光灯"
	input Start(void) : "开始让聚光灯旋转"
	input Stop(void) : "停止对聚光灯的旋转"
	input Reverse(void) : "让聚光灯旋转的角度进行反转"
	
	// 输出
	output OnLightOn(void) : "开启聚光灯时触发"
	output OnLightOff(void) : "关闭聚光灯时触发"
]

@PointClass base(Angles) iconsprite("editor/env_particles.vmt") = env_detail_controller : "Overrides the min and max fade distances for details sprites in the map."
[
	fademindist(integer) : "Start Fade Dist/Pixels" : 512 : "The distance at which the detail props will start fading away."
	fademaxdist(integer) : "End Fade Dist/Pixels" : 1024 : "The distance at which the detail props will stop fading and stop drawing entirely."
]

@PointClass base(Targetname, Parentname) iconsprite("editor/info_target.vmt") = info_goal_infected_chase :
	"An entity that attracts infected like the pipe bomb to give them something "+
	"to do during outros. Put this in hierarchy with the escape vehicle or with "+
	"a func_tracktrain to make all the infected in the map chase it!"
[
	input Enable(void) : "Start attracting all infected in the map."
	input Disable(void) : "Stop attracting infected."
]

@SolidClass base(Targetname, Parentname, RenderFields, Global, Inputfilter, EnableDisable, Shadow) = func_playerinfected_clip : 
	"Simple Clip brush that blocks player infected movement." 
[
	spawnflags(flags) =
	[
		2: "Ignore player +USE" : 1
	]

	Solidity(choices) : "Solidity" : 2 : "Used to control the solidity/collision of these brushes." =
	[
		0 : "Toggle"
		1 : "Never Solid"
		2 : "Always Solid"
	]

	vrad_brush_cast_shadows(choices) : "Shadows" : 0 : "Set this if this brush casts lightmap shadows." =
	[
		0 : "No"
		1 : "Yes"
	]	
]

@SolidClass base(Targetname, Parentname, RenderFields, Global, Inputfilter, EnableDisable, Shadow) = func_playerghostinfected_clip : 
	"Simple Clip brush that blocks player ghost infected movement." 
[
	spawnflags(flags) =
	[
		2: "Ignore player +USE" : 1
	]

	Solidity(choices) : "Solidity" : 2 : "Used to control the solidity/collision of these brushes." =
	[
		0 : "Toggle"
		1 : "Never Solid"
		2 : "Always Solid"
	]

	vrad_brush_cast_shadows(choices) : "Shadows" : 0 : "Set this if this brush casts lightmap shadows." =
	[
		0 : "No"
		1 : "Yes"
	]	
]



@NPCClass base(Angles, Targetname) studio() = commentary_dummy : "Commentary Dummy"
[
	model(studio) : "Dummy Model" : "models/survivors/survivor_coach.mdl"
	EyeHeight(integer) : "Eye Height" : 64 : "Eye height relative to origin. Only necessary when staring at players"
	StartingAnim(string) : "Starting Animation" : "Idle_Calm_Pistol" : "The name of the starting animation that this dummy will play when it spawns."
	StartingWeapons(string) : "Starting Weapons" : "weapon_pistol" : "The names of any weapons the dummy should have when it spawns. Separated by spaces, commas, or semicolons. Last specified weapon will be equipped"
	LookAtPlayers(choices) : "Stare at players" : 0 : "Set to true if you want the dummy to attempt to stare at players all the time." =
	[
		0 : "No"
		1 : "Yes"
	]
	HeadYawPoseParam(string) : "Head Yaw Pose Parameter" : "Head_Yaw" : "The name of the head yaw pose parameter. Only necessary when staring at players"
	HeadPitchPoseParam(string) : "Head Pitch Pose Parameter" : "Head_Pitch" : "The name of the head yaw pose parameter. Only necessary when staring at players"
	input SetAnimation(string) : "Force the dummy to play an animation. The parameter should be the name of the animation."
]



@PointClass base(Targetname, Angles, Parentname, Angles) studio("models/infected/smoker.mdl") = commentary_zombie_spawner :
	"Zombie Manual Spawning Point"
[
	input SpawnZombie(string) : "Spawn a specific zombie now. String format is zombie type followed by an optional target name (e.g. 'smoker,BostonJoe' or 'common_male_suit'). Zombie types: boomer, common_*, hunter, smoker, tank, witch"
	output OnSpawnedZombieDeath(void) : "One of the zombies spawned by this entity has died"
]


@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_outtro_stats : 
	"An entity to control the outtro stats at the end of a campaign."
[
	// Inputs
	input RollStatsCrawl(void) : "Start the outro stats rolling."
	input RollCredits(void) : "Start the outro credits rolling."
	
	// Outputs
	output OnOuttroStatsDone(void)  : "Fired when the stats having finished rolling or the user cancels out."
]

@SolidClass base(Trigger, Targetname) = trigger_hurt_ghost :
	"A trigger volume that damages entities (and ghosts) that touch it."
[
	master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this entity will not activate."
	damage(integer) : "Damage" : 10 : "The amount of damage done to entities that touch this trigger. The damage is done every half-second. See also 'Damage Model' for extra details on how damage can be dealt."
	damagecap(integer) : "Damage Cap" : 20 : "Maximum damage dealt per second. This field is only used if you select the Doubling w/Forgiveness damage model, via the spawnflag."
	damagetype(choices) : "Damage Type" : 0 =
	[
		0 : "GENERIC"
		1 : "CRUSH"
		2 : "BULLET"
		4 : "SLASH"
		8 : "BURN"
		16 : "FREEZE"
		32 : "FALL"
		64 : "BLAST"
		128 : "CLUB"
		256 : "SHOCK"
		512 : "SONIC"
		1024 : "ENERGYBEAM"
		16384: "DROWN"
		32768 : "PARALYSE"
		65536 : "NERVEGAS"
		131072 : "POISON"
		262144 : "RADIATION"
		524288 : "DROWNRECOVER"
		1048576 : "CHEMICAL"
		2097152 : "SLOWBURN"
		4194304 : "SLOWFREEZE"
	]

	damagemodel(choices) : "Damage Model" : 0 : "How damage is dealt. Normal always does the specified amount of damage each half second. Doubling starts with the specified amount and doubles it each time it hurts the toucher. Forgiveness means that if the toucher gets out of the trigger the damage will reset to the specified value. Good for making triggers that are deadly over time without having to cause massive damage on each touch." =
	[
		0 : "Normal"
		1 : "Doubling w/forgiveness"
	]
	
	nodmgforce(choices) : "Zero Damage Force" : 0 : "Should the damaged entity receive no physics force from this trigger." =
	[
		0 : "No"
		1 : "Yes"
	]
	
	// Inputs
	input SetDamage(float) : "Set a new amount of damage for this trigger."
	
	// Outputs
	output OnHurt(void) : "Fired whenever this trigger hurts something other than a player."
	output OnHurtPlayer(void) : "Fired whenever this trigger hurts a player."
]

@SolidClass base(Targetname, Parentname) = func_nav_connection_blocker : 
	"A brush entity that prevents navigation mesh (on creation) connections to be made through its volume."
[
]

@PointClass wirebox(mins, maxs) base(Targetname) = env_player_blocker :
	"An entity which blocks any PC/NPC from entering of the specified type."
[
	mins(vector) : "Mins" : "-4 -128 -80"
	maxs(vector) : "Maxs" : "4 128 80"

	initialstate(choices) : "Initial State" : 1 =
	[
		0 : "Disabled"
		1 : "Enabled"
	]
	BlockType(choices) : "Blocks" : 0 =
	[
		0: "Everyone"
		1: "Survivors"
		2: "Player Infected"
		3: "All Special Infected (Player and AI)"
	]

	// Inputs
	input Enable(void) : "Enables the Blocker"
	input Disable(void) : "Disables the Blocker"
]

@PointClass obb(boxmins, boxmaxs) base(Angles, Targetname) = env_physics_blocker :
	"An entity which blocks players and physics objects."
[
	boxmins(vector) : "Mins" : "-8 -8 -8"
	boxmaxs(vector) : "Maxs" : "8 8 8"

	initialstate(choices) : "Initial State" : 1 =
	[
		0 : "Disabled"
		1 : "Enabled"
	]
	BlockType(choices) : "Blocks" : 0 =
	[
		0: "Everyone"
		1: "Survivors"
		2: "Player Infected"
		3: "All Special Infected (Player and AI)"
		4: "All players and physics objects"
	]
	// Inputs
	input Enable(void) : "Enables the Blocker"
	input Disable(void) : "Disables the Blocker"
]

@SolidClass base(Trigger) = trigger_upgrade_laser_sight : "Gives laser sight upgrade to players that touch"
[
]

@PointClass base(Targetname) = logic_game_event : "Allows firing game events. no params for now."
[
	eventName(string) : "Game Event Name" : "" : "event name ( from ModEvents.res ) to fire. no params for now"
	
	spawnflags(flags) =
	[
		1: "userid field with activator" : 0
	]
	
	// Inputs
	input FireEvent(void) : "Fire the event"
]


@SolidClass base(Targetname, Parentname, Origin, RenderFields,DamageFilter) = func_button_timed: 
	"An entity that takes time to use."
[
	use_time(integer) : "Use Time" : 5 : ""
	use_string(string) : "Use String" : "Using...." : ""
	use_sub_string(string) : "Use Sub-String" : "" : ""
	glow(target_destination) : "Glow Entity" : : "The name of an entity that will get the +use glow for this button."
	
	auto_disable(choices) : "Auto-Disable On Time Up" : 1 : "When the use timer is up, disable the button. (Can be enabled with an input)" =
	[
		0 : "No"
		1 : "Yes"
	]
	
	spawnflags(flags) =
	[
		2048: "Starts locked" : 0
	]
	
	locked_sound(choices) : "Locked Sound" : 0 : "Sound played when the player tries to use the button, and fails because it's locked." = 
	[
		0: "None"
		2: "Access Denied"
		8: "Small zap"
		10: "Buzz"
		11: "Buzz Off"
		12: "Latch Locked"
	]

	// Inputs
	input Lock(void) : "Lock the button, preventing it from functioning and playing a locked sound."
	input Unlock(void) : "Unlock the button, allowing it to function."
	input Enable(void) : "Enable the button, so it glows and can be used."
	input Disable(void) : "Disable the button, so it can't be used and doesn't glow."

	// Outputs
	output OnPressed(void) : "Fired when the button is pressed."
	output OnUnPressed(void) : "Fired when the button is unpressed."
	output OnTimeUp(void) : "Fired when the button has been held more than the required amount of time."
	output OnUseLocked(void) : "Fired when the button is used while locked."
]


@PointClass base(Targetname, Angles, Studiomodel) studioprop() sphere(fademindist) sphere(fademaxdist) = prop_fuel_barrel :
	"A physics prop that acts like a barrel of fuel when shot"
[

	spawnflags(flags) = 
	[
		1 : "Start Asleep" : 0
	]
		
	fademindist(float) : "Start Fade Dist/Pixels" : -1 : "Distance at which the prop starts to fade (<0 = subtract from fademaxdist)."
	fademaxdist(float) : "End Fade Dist/Pixels" : 0 : "Maximum distance at which the prop is visible (0 = don't fade out)."
	fadescale(float) : "Fade Scale" : 1 : "If you specify a fade in the worldspawn, or if the engine is running under low end/medium end/XBox360, then the engine will forcibly fade out props even if fademindist/fademaxdist isn't specified." +
												 " This scale factor gives you some control over the fade. Using 0 here turns off the forcible fades." +
												 " Numbers smaller than 1 cause the prop to fade out at further distances, and greater than 1 cause it to fade out at closer distances."

	
	
	model(studio) : "World model" : "models/props_industrial/barrel_fuel.mdl"
	
	BasePiece(studio) : "Base Piece" : "models/props_industrial/barrel_fuel_partb.mdl"
	FlyingPiece01(studio) : "Flying Piece 1" : "models/props_industrial/barrel_fuel_parta.mdl"
	FlyingPiece02(studio) : "Flying Piece 2" : ""
	FlyingPiece03(studio) : "Flying Piece 3" : ""
	FlyingPiece04(studio) : "Flying Piece 4" : ""	
	
	//texture(decal) : "Scorch Decal" : "decals/molotovscorch"

	DetonateParticles(string) : "Detonation Particles" : "weapon_pipebomb"
	FlyingParticles(string) : "Flying Piece Particles" : "barrel_fly"
	//ImpactParticles(string) : "Impact Particles" : ""
	DetonateSound(sound) : "Sound played when the object explodes." : "BaseGrenade.Explode"	
]


@PointClass  base(Targetname) iconsprite("editor/logic_auto.vmt") = logic_versus_random : 
	"Fires random outputs in the first round of a versus map, " +
	"and then repeats those outputs in the second round of a versus map. " 
[

	input PickRandom(void) : "Fires a random output with at least one connection."


	// Outputs
	output OnRandom01(void) : "Fired when the input value equals the Random01 value."
	output OnRandom02(void) : "Fired when the input value equals the Random02 value."
	output OnRandom03(void) : "Fired when the input value equals the Random03 value."
	output OnRandom04(void) : "Fired when the input value equals the Random04 value."
	output OnRandom05(void) : "Fired when the input value equals the Random05 value."
	output OnRandom06(void) : "Fired when the input value equals the Random06 value."
	output OnRandom07(void) : "Fired when the input value equals the Random07 value."
	output OnRandom08(void) : "Fired when the input value equals the Random08 value."
	output OnRandom09(void) : "Fired when the input value equals the Random09 value."
	output OnRandom10(void) : "Fired when the input value equals the Random10 value."
	output OnRandom11(void) : "Fired when the input value equals the Random11 value."
	output OnRandom12(void) : "Fired when the input value equals the Random12 value."
	output OnRandom13(void) : "Fired when the input value equals the Random13 value."
	output OnRandom14(void) : "Fired when the input value equals the Random14 value."
	output OnRandom15(void) : "Fired when the input value equals the Random15 value."
	output OnRandom16(void) : "Fired when the input value equals the Random16 value."
]


@PointClass base(Targetname, Parentname, Angles, EnableDisable) studio("models/editor/cone_helper.mdl")  = env_weaponfire : 
	"Weapon fire"
[
	TargetArc(float) : "Target Arc" : "40" : "The arc that the entity will seach for targets (in degrees)"
	TargetRange(float) : "Target Range" : "3600" : "The distance that the endity will search for targets (in inches)"
	filtername(filterclass) : "Target Filter" : : "Filter to use to determine if an entity is a valid target"
	DamageMod(float) : "Damage Modifier" : "1.0" : "Used to increase or decrease the amount of damage per shot"
	
	WeaponType(choices) : "Weapon Type" : 1 =
	[
		1: "Assault Rifle"
		2: "Hunting Rifle"
		3: "Auto Shotgun"
	]

	TargetTeam(choices) : "Target Team" : 3 =
	[
		3: "Zombies"
		2: "Survivors"
		-1: "Either"
	]
	
	IgnorePlayers(choices) : "Ignore Players" : 0 =
	[
		0: "No"
		1: "Yes"
	]

]

@PointClass base(Targetname, Angles) studio("models/editor/cone_helper.mdl")  = env_rock_launcher : 
	"Rock launcher"
[
	RockTargetName(target_destination) : "Target Name" : : "The name of the entity to throw the rock at."
	RockDamageOverride(integer) : "Rock Damage Override" : 0 : "damage to be used instead of the the default rock damage. "
	input LaunchRock(void) : "Launch a rock"
	input SetTarget(string) : "Target a new entity (by name)"
]


@SolidClass base(Targetname, EnableDisable) = func_extinguisher : "A brush entity that will delte inferno entities that touch it." 
[
	spawnflags(flags) =
	[
		1: "Fire" : 1
		2: "Acid" : 1
		4: "Fireworks" : 1
	]
]


@SolidClass base(Targetname, EnableDisable) = func_ragdoll_fader : "A brush entity that will fade out any ragdolls that touch it" 
[

]

@PointClass base(prop_dynamic_base,EnableDisable) studioprop("models/w_models/weapons/w_minigun.mdl") = prop_minigun_l4d1 : "A mounted gun players can +USE"
[
	model(studio) : "World model" : "models/w_models/weapons/w_minigun.mdl"
	MaxYaw(float) : "Max yaw" : "90" : "Max yaw the gun can be turned."
	MaxPitch(float) : "Max pitch" : "60" : "Max pitch the gun can be depressed."
	MinPitch(float) : "Min pitch" : "-30" : "Min pitch the gun can be raised."

	// Outputs
	output OnFireStart(void) : "Fired when the minigun has spun up and is starting firing."
	output OnFireStop(void) : "Fired when the minigun has stopped firing."
] 

@SolidClass base(Trigger) = trigger_escape : "Indicates if there are Survivors in the volume who can escape the finale"
[
	output OnEscapePossible(void) : "Fired if there is at least 1 survivor standing in the trigger"
	output OnEscapeImpossible(void) : "Fired if there are no survivors standing in the trigger"
]

@SolidClass base(Targetname, Parentname, Origin) = func_buildable_button: 
	"An timed button which calls into its script scope during button-pressing related events."
[
	spawnflags(flags) =
	[
		2048: "Starts locked" : 0
	]

	is_cumulative_use(choices) : "Cumulative Use" : 0 =
	[
		0: "No"
		1: "Yes"
	]
	
	// Inputs
	input Enable(void) : "Enable the button, so it glows and can be used."
	input Disable(void) : "Disable the button, so it can't be used and doesn't glow."

	// Outputs
	output OnPressed(void) : "Fired when the button is pressed."
	output OnUnPressed(void) : "Fired when the button is unpressed."
	output OnTimeUp(void) : "Fired when the button has been held more than the required amount of time."
	output OnUseLocked(void) : "Fired when the button is used while locked."
]

@PointClass base(Origin,Targetname) = point_script_use_target: "Makes an entity 'usable' by a player. An attached script determines the display text and use time."
[
	model(target_destination) : "Use Model" : : "The name of the entity the player will be using."

	output OnUseStarted(void) : "Fired when a player starts using this target."	
	output OnUseCanceled(void) : "Fired when a player use is canceled."	
	output OnUseFinished(void) : "Fired when a player use is complete."	
]

@PointClass base(Targetname, Parentname, Angles, Studiomodel) studioprop() = scripted_item_drop : 
	"An item with basic physics that detects player touch."
[
]