Zh/Left 4 Dead 2.fgd: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
mNo edit summary
(save progress)
Line 99: Line 99:


@PointClass base(Targetname,Angles,Parentname) studioprop("models/editor/camera.mdl") = point_viewcontrol_multiplayer :  
@PointClass base(Targetname,Angles,Parentname) studioprop("models/editor/camera.mdl") = point_viewcontrol_multiplayer :  
"A camera entity that controls all players' views. While it's active, the players will see out of the camera."  
"控制所有玩家视野的相机实体。当它处于激活状态时,玩家将以镜头的视角观看。"  
[
[
fov(float) : "Field of view" : "90" : "Player FOV"
fov(float) : "视野" : "90" : "玩家的视野。"
fov_rate(float) : "Seconds to reach FOV target" : "1.0" : "Amount of time it should take to reach the specified FOV"
fov_rate(float) : "切换到目标视野的秒数" : "1.0" : "切换到指定视野所需的时间"
target_entity(target_destination): "Target Entity" : "" : "Entity to move to. (End of move will match origin and angles)."
target_entity(target_destination): "目标实体" : "" : "要移动到的实体。 [完成移动后将匹配(目标实体的)原点和角度]。"
interp_time(float) : "Seconds to reach target entity" : "1.0" : "Amount of time it should take to reach the target entity's origin and angles."
interp_time(float) : "到达目标实体的秒数" : "1.0" : "到达目标实体的原点和角度所需的时间。"
spawnflags(flags) =
spawnflags(flags) =
[
[
1: "Disable when move finished" : 1
1: "完成移动时禁用" : 1
2: "Set FOV" : 0
2: "设置视野" : 0
]
]


// Inputs
// 输入
input Enable(void) : "Enable the point_viewcontrol_multiplayer, and start controlling the players' view."
input Enable(void) : "启用 point_viewcontrol_multiplayer,并开始控制玩家的视野。"
input Disable(void) : "Disable the point_viewcontrol_multiplayer, and stop controlling the players' view."
input Disable(void) : "禁用 point_viewcontrol_multiplayer,并停止控制玩家的视野。"
input StartMovement(void) : "Start the movement to the target entity."
input StartMovement(void) : "开始移动到目标实体。"
]
]


@PointClass base(Targetname,Angles,Parentname) studioprop("models/editor/camera.mdl") = point_viewcontrol_survivor :  
@PointClass base(Targetname,Angles,Parentname) studioprop("models/editor/camera.mdl") = point_viewcontrol_survivor :  
"A camera entity that controls the player's view. Travels from camera position to a first-person view on input."  
"控制玩家视野的相机实体。通过输入从相机位置移动到第一人称视图。"  
[
[
fov(float) : "Field of view" : "90" : "Player FOV (if Set FOV spawnflag is set)"
fov(float) : "视野" : "90" : "玩家视野(如果勾选了“设置视野”标志)"
fov_rate(float) : "Seconds to reach FOV target" : "1.0" : "Amount of time it should take to reach the specified FOV"
fov_rate(float) : "切换到目标视野的秒数" : "1.0" : "达到指定视野所需的时间。"


spawnflags(flags) =
spawnflags(flags) =
[
[
1: "Disable when move finished" : 1
1: "完成移动时禁用" : 1
2: "Set FOV" : 0
2: "设置视野" : 0
]
]


// Inputs
// 输入
input Enable(string) : "Enable the point_viewcontrol, and start controlling the player's view. Pass a survivor name to control that survivor's view.(ie '!zoey')"
input Enable(string) : "启用 point_viewcontrol,并开始控制玩家的视图。传递一个幸存者名称来控制该幸存者的视图。(比如"!zoey")"
input Disable(void) : "Disable the point_viewcontrol, and stop controlling the player's view."
input Disable(void) : "禁用 point_viewcontrol,并停止控制玩家的视图。"
input StartMovement(void) : "Start the movement to first-person view."
input StartMovement(void) : "开始移动到第一人称视图。"
]
]


@PointClass base(Targetname,Angles,Parentname) studioprop("models/editor/camera.mdl") = point_deathfall_camera :  
@PointClass base(Targetname,Angles,Parentname) studioprop("models/editor/camera.mdl") = point_deathfall_camera :  
"A camera entity that players falling to their deaths look through."  
"玩家坠落身亡的摄像机实体。"  
[
[
fov(float) : "Field of view" : "90" : "Player FOV"
fov(float) : "视野" : "90" : "玩家视野。"
fov_rate(float) : "Seconds to reach FOV target" : "1.0" : "Amount of time it should take to reach the specified FOV"
fov_rate(float) : "切换到目标视野的秒数" : "1.0" : "达到指定视野所需的时间。"
]
]


//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//
//
// Logic Entities
// 逻辑实体
//
//
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
@PointClass color(0 0 255) base(Targetname) iconsprite("editor/choreo_scene.vmt") = logic_choreographed_scene :
@PointClass color(0 0 255) base(Targetname) iconsprite("editor/choreo_scene.vmt") = logic_choreographed_scene :
"Manages a choreographed scene of one or more actors."
"管理一个或多个演员的编排场景。"


[
[
// Keys
//
SceneFile(scene) : "Scene file"
SceneFile(scene) : "场景文件"


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


busyactor(choices) : "If an Actor is talking..." : 1 : "What to do if an actor this scene needs is already talking when this scene is told to start." =
busyactor(choices) : "如果一个演员在说话……" : 1 : "如果这个场景需要的演员在被告知开始时已经在说话,该如何做。" =
[
[
0: "Start immediately"
0: "立即开始"
1: "Wait for actor to finish"
1: "等待演员完成"
2: "Interrupt at next interrupt event"
2: "在下一个中断事件中中断"
3: "Cancel at next interrupt event"
3: "在下一个中断事件中取消"
]
]


// Inputs
// 输入
input Start(void) : "Starts playback of the scene file"
input Start(void) : "开始播放场景文件。"
input Pause(void) : "Pauses playback of the scene file"
input Pause(void) : "暂停播放场景文件。"
input Resume(void) : "Resumes playback of the scene if it has been paused"
input Resume(void) : "如果场景已暂停,则恢复播放。"
input Cancel(void) : "Cancels playback of the scene"
input Cancel(void) : "取消播放场景文件。"
input CancelAtNextInterrupt(void) : "Cancels playback of the scene at the next interrupt event in the scene."
input CancelAtNextInterrupt(void) : "在场景中的下一个中断事件中取消场景的播放。"
input PitchShift(float) : "Multiplies the the pitch"
input PitchShift(float) : "将音高相乘。"


input InterjectResponse(string) : "Finds an actor who can respond to the specified concept string while the scene continues playing"
input InterjectResponse(string) : "寻找可以在场景继续播放时响应指定概念字符串的演员。"


input StopWaitingForActor(void) : "Stop waiting on an actor to stop talking."
input StopWaitingForActor(void) : "停止等待演员停止说话。"


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


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


@PointClass color(0 0 255) base(Targetname) iconsprite("editor/choreo_manager.vmt") = logic_scene_list_manager :
@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."
"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) : "Scene 1" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene0(target_destination) : "场景 1" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene1(target_destination) : "Scene 2" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene1(target_destination) : "场景 2" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene2(target_destination) : "Scene 3" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene2(target_destination) : "场景 3" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene3(target_destination) : "Scene 4" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene3(target_destination) : "场景 4" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene4(target_destination) : "Scene 5" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene4(target_destination) : "场景 5" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene5(target_destination) : "Scene 6" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene5(target_destination) : "场景 6" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene6(target_destination) : "Scene 7" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene6(target_destination) : "场景 7" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene7(target_destination) : "Scene 8" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene7(target_destination) : "场景 8" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene8(target_destination) : "Scene 9" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene8(target_destination) : "场景 9" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene9(target_destination) : "Scene 10" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene9(target_destination) : "场景 10" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene10(target_destination) : "Scene 11" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene10(target_destination) : "场景 11" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene11(target_destination) : "Scene 12" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene11(target_destination) : "场景 12" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene12(target_destination) : "Scene 13" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene12(target_destination) : "场景 13" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene13(target_destination) : "Scene 14" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene13(target_destination) : "场景 14" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene14(target_destination) : "Scene 15" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene14(target_destination) : "场景 15" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"
scene15(target_destination) : "Scene 16" : "" : "The name of a logic_choreographed_scene, or logic_scene_list_manager."
scene15(target_destination) : "场景 16" : "" : "logic_choreographed_scene logic_scene_list_manager 的名称。"


// Inputs
// 输入
input Shutdown(void) : "Remove the manager and all scenes referenced by it (and all scenes referenced by logic_scene_list_manager's embedded in this one)."
input Shutdown(void) : "删除管理器及其引用的所有场景(以及嵌入在此中的 logic_scene_list_manager 引用的所有场景)"
]
]


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


hull_name(choices) : "Hull type" : "Human" =
hull_name(choices) : "大小类型(Hull Type)" : "" =
[
[
"HUMAN_HULL" : "Human"
"HUMAN_HULL" : ""
"WIDE_HUMAN_HULL" : "Wide"
"WIDE_HUMAN_HULL" : "宽的"
"TINY_HULL" : "Tiny"
"TINY_HULL" : "小的"
"MEDIUM_HULL" : "Medium"
"MEDIUM_HULL" : "中等"
"LARGE_HULL" : "Large"
"LARGE_HULL" : "大的"
]
]
]
]


@PointClass base(prop_dynamic) studioprop() sphere(fademindist) sphere(fademaxdist) = prop_car_glass :
@PointClass base(prop_dynamic) studioprop() sphere(fademindist) sphere(fademaxdist) = prop_car_glass :
"This class is the same as prop_dynamic, with a car alarm."
"这个实体和 prop_dynamic 一样,但带有汽车报警器。"
[
[
]
]


@PointClass base(prop_physics, EnableDisable) studioprop() sphere(fademindist) sphere(fademaxdist) = prop_car_alarm :
@PointClass base(prop_physics, EnableDisable) studioprop() sphere(fademindist) sphere(fademaxdist) = prop_car_alarm :
"This class is the same as prop_physics, with a car alarm."
"该实体与 prop_physics 相同,但带有汽车报警器。"
[
[
output OnCarAlarmStart(void) : "Car alarm should go off"
output OnCarAlarmStart(void) : "汽车警报器响起。"
output OnCarAlarmEnd(void) : "Car alarm has shut off"
output OnCarAlarmEnd(void) : "汽车警报器关闭。"
output OnCarAlarmChirpStart(void) : ""
output OnCarAlarmChirpStart(void) : "(译者添加的)汽车开始响起“嘀嘀”声时触发。"
output OnCarAlarmChirpEnd(void) : ""
output OnCarAlarmChirpEnd(void) : "(译者添加的)汽车停止响起“嘀嘀”声时触发。"
]
]


@SolidClass = func_ladder :  
@SolidClass = func_ladder :  
"Ladder. Players will be able to freely along one side of this brush, as if it was a ladder. " +
"梯子。玩家将能够沿着这个固实体的一侧自由移动,就好像它是一个梯子一样。" +
"If you are using a model prop for the visual representation of the ladder in the map, " +
"如果你使用模型道具来直观表示地图中的梯子," +
"apply the toolsinvisibleladder material to the climbable side of the func_ladder brush."
"toolsinvisibleladder 材质应用到 f​​unc_ladder 固实体的可攀爬面。"
[
[
]
]


@SolidClass base(Trigger) = trigger_auto_crouch : "Allows players touching the trigger to auto-crouch."
@SolidClass base(Trigger) = trigger_auto_crouch : "允许玩家在碰到触发器时自动蹲下。"
[
[
]
]


@SolidClass base(Trigger) = trigger_active_weapon_detect : "Fires output when touched by a player that has a specific weapon active"
@SolidClass base(Trigger) = trigger_active_weapon_detect : "检测武器在此区域后输出内容。"
[
[
weaponclassname(string) : "Weapon To Detect" : "weapon_dieselcan" : "weapon classname that player must have active"
weaponclassname(string) : "要检测的武器" : "weapon_dieselcan" : "激活所必须的武器类型名"
output OnTouchedActiveWeapon(void) : "Touched a player who has our weapon active"
output OnTouchedActiveWeapon(void) : "触碰了符合要求的玩家武器时触发"
]
]


@PointClass base(Targetname) = player_weaponstrip : "Removes weapons from the player"
@PointClass base(Targetname) = player_weaponstrip : "剥夺玩家的武器。"
[
[
input Strip(void) : "Removes all weapons."
input Strip(void) : "剥夺全部武器。"
//input StripWeaponsAndSuit(void) : "Removes all weapons and the suit."
//input StripWeaponsAndSuit(void) : "剥夺所有武器和套装(?,原文为 suit)。"
input StripActiveWeapon(void) : "Removes the active weapon."
input StripActiveWeapon(void) : "剥夺玩家选中的武器。"
input StripWeaponByClassname(string) : "Removes a weapon by classname, eg 'weapon_dieselcan'"
input StripWeaponByClassname(string) : "按实体名称移除武器,例如“weapon_dieselcan”"
]
]


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


teamToBlock(choices) : "Team(s) to block" : -1 : "Team(s) this entity should block" =
teamToBlock(choices) : "要阻挡的队伍" : -1 : "这个实体应该阻挡的队伍。" =
[
[
-1 : "Everyone"
-1 : "每个人"
2 : "Survivors"
2 : "生还者"
3 : "Infected"
3 : "感染者"
]
]
affectsFlow(choices) : "Affects Flow?" : 0 : "Does this func_nav_blocker block flow in the level? Only func_nav_blockers with this enabled will cause flow recomputation on blocking/unblocking." =
affectsFlow(choices) : "影响导航路线(Flow)?" : 0 : "这个 func_nav_blocker 是否在关卡中阻挡导航路线?只有启用此功能的 func_nav_blocker 实体才会在阻挡/停止阻挡时导致导航路线重新计算。" =
[
[
0 : "No"
0 : ""
1 : "Yes"
1 : ""
]
]
]
]


@SolidClass base(Targetname, NavBlocker) = func_nav_blocker : "A brush entity that can block nav areas touching its AABB."  
@SolidClass base(Targetname, NavBlocker) = func_nav_blocker : "一个固体实体,可以阻挡接触其体积的导航区域。"  
[
[
]
]


//@PointClass obb(boxmins, boxmaxs) base(Targetname, Angles, NavBlocker) = point_nav_blocker : "A point entity that can block nav areas touching its AABB."
//@PointClass obb(boxmins, boxmaxs) base(Targetname, Angles, NavBlocker) = point_nav_blocker : "一个点实体,可以阻挡接触其体积的导航区域。"
//[
//[
// boxmins(vector) : "Mins" : "-8 -8 -8"
// boxmins(vector) : "开始点" : "-8 -8 -8"
// boxmaxs(vector) : "Maxs" : "8 8 8"
// boxmaxs(vector) : "结束点" : "8 8 8"
//]
//]


@SolidClass base(Targetname, EnableDisable) = func_nav_avoidance_obstacle : "A brush entity that tells bots to avoid nav areas touching its AABB."  
@SolidClass base(Targetname, EnableDisable) = func_nav_avoidance_obstacle : "一个固实体,告诉机器人避免接触它体积接触的导航区域。"  
[
[
]
]
Line 328: Line 329:
spawnFlags(flags) =
spawnFlags(flags) =
[
[
2: "Empty (no wanderers)" : 0
2: "Empty (没有游荡者)" : 0
32: "Battlestation" : 0
32: "Battlestation" : 0
64: "Finale" : 0
64: "Finale" : 0
Line 344: Line 345:
precise(choices) : "Precise" : 0 =
precise(choices) : "Precise" : 0 =
[
[
0 : "Off"
0 : ""
1 : "On"
1 : ""
]
]
crouch(choices) : "Crouch" : 0 =
crouch(choices) : "Crouch (蹲伏)" : 0 =
[
[
0 : "Off"
0 : ""
1 : "On"
1 : ""
]
]
stairs(choices) : "Stairs" : 0 =
stairs(choices) : "Stairs (楼梯)" : 0 =
[
[
0 : "Off"
0 : ""
1 : "On"
1 : ""
]
]
remove_attributes(integer) : "Remove Attributes" : 0 : "Should remove attributes from nav areas instead of applying them?"
remove_attributes(integer) : "移除属性" : 0 : "应该从导航区域中删除属性而不是应用它们吗?"
tank_only(choices) : "Tank Only" : 0 =
tank_only(choices) : "Tank Only (仅 Tank)" : 0 =
[
[
0 : "Off"
0 : ""
1 : "On"
1 : ""
]
]
mob_only(choices) : "Mob Only" : 0 =
mob_only(choices) : "Mob Only (仅暴徒)" : 0 =
[
[
0 : "Off"
0 : ""
1 : "On"
1 : ""
]
]


// Inputs
// 输入
input ApplyNavAttributes(void) : "Applies the nav attributes."
input ApplyNavAttributes(void) : "应用导航属性。"
]
]


@SolidClass base(Targetname,NavAttributeRegion) = func_nav_attribute_region : "A brush entity that holds attributes to be applied to regions of nav areas during generation."
@SolidClass base(Targetname,NavAttributeRegion) = func_nav_attribute_region : "一个固实体,它包含要在(实体)生成期间应用于导航区域的属性。"
[
[
]
]


@PointClass wirebox(mins, maxs) base(Targetname,NavAttributeRegion) = point_nav_attribute_region : "A point entity that holds attributes to be applied to regions of nav areas during generation."
@PointClass wirebox(mins, maxs) base(Targetname,NavAttributeRegion) = point_nav_attribute_region : "一个点实体,它包含要在(实体)生成期间应用于导航区域的区域的属性。"
[
[
mins(vector) : "Mins" : "-4 -128 -80"
mins(vector) : "开始点" : "-4 -128 -80"
maxs(vector) : "Maxs" : "4 128 80"
maxs(vector) : "结束点" : "4 128 80"
]
]


@SolidClass base(Targetname, Parentname, Origin, RenderFields) = func_elevator :
@SolidClass base(Targetname, Parentname, Origin, RenderFields) = func_elevator :
"A brush entity that moves vertically."
"垂直移动的固实体。"
[
[
top(vecline) : "Top floor position"
top(vecline) : "顶楼位置"
bottom(vecline) : "Bottom floor position"
bottom(vecline) : "底楼位置"


speed(integer) : "Speed" : 100 : "The speed that the elevator moves, in inches per second."
speed(integer) : "速度" : 100 : "电梯移动的速度,以英寸/秒 (1英寸=1 Hammer 单位) 为单位。"
acceleration(integer) : "Acceleration" : 100 : "The acceleration at which the elevator approaches its target speed, in inches per second per second."
acceleration(integer) : "加速度" : 100 : "电梯接近其目标速度的加速度,以英寸/秒/秒为单位。"
blockdamage(float) : "Block Damage" : 0 : "The amount of damage to do to any entity that blocks the elevator, per frame."
blockdamage(float) : "阻挡伤害" : 0 : "每帧对阻挡电梯的任何实体造成的伤害量。"
startsound(sound) : "Sound played when the elevator starts moving."
startsound(sound) : "当电梯开始移动时应播放的声音。"
stopsound(sound) : "Sound played when the elevator stops moving."
stopsound(sound) : "当电梯停止移动时应播放的声音。"
disablesound(sound) : "Sound played when the elevator is disabled."
disablesound(sound) : "当电梯被停用时应播放的声音。"


// Inputs
// 输入
input MoveToFloor(string) : "Start the elevator moving to the specified floor."
input MoveToFloor(string) : "启动电梯移动到指定楼层。"
input Disable(void) : "Stops the elevator and prevents it from moving again."
input Disable(void) : "停止电梯并防止其再次移动。"
input SetMaxSpeed(float) : "Set the max speed of the elevator."
input SetMaxSpeed(float) : "设置电梯的最高速度。"


// Outputs
// 输出
output OnReachedTop(string) : "Fired when the brush reaches the top."
output OnReachedTop(string) : "当电梯到达顶部时触发。"
output OnReachedBottom(string) : "Fired when the brush reaches the bottom."
output OnReachedBottom(string) : "当电梯到达底部时触发。"
]
]


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


@PointClass base(Targetname) = logic_director_query : "Allows firing of output based on the Director's state"
@PointClass base(Targetname) = logic_director_query : "允许根据导演的状态触发输出"
[
[
minAngerRange( integer ) : "Min Anger Range" : 1  : "Min remapping range of anger"
minAngerRange( integer ) : "最小愤怒值" : 1  : "最小重新映射的愤怒值范围"
maxAngerRange( integer ) : "Max Anger Range" : 10 : "Max remapping range of anger"
maxAngerRange( integer ) : "最大愤怒值" : 10 : "最大重新映射的愤怒值范围"


noise( choices ) : "Noise" : 0 : "How noisy do you want the anger result?" =
noise( choices ) : "干扰(不确定性)" : 0 : "你想要愤怒的结果有多不稳定?" =
[
[
0  : "'Pure' anger value. No noise."
0  : "“纯”愤怒值。无干扰。"
25  : "Some noise"
25  : "有些干扰"
50  : "Average mix of random and absolute"
50  : "随机和绝对的平均混合"
75 : "Much noise"
75 : "很多干扰"
100 : "Complete noise"
100 : "完全干扰"
]
]


// Inputs
// 输入
input HowAngry(void) : "Ask the director to tell this query how angry it is"
input HowAngry(void) : "询问导演有多愤怒。"


// Outputs
// 输出
output OutAnger(integer) : "A HowAngry input will cause this output to fire with the anger value remapped."
output OutAnger(integer) : "HowAngry 输入将导致此输出触发并重新映射愤怒值。"
output On20SecondsToMob(void) : "Fires 20 seconds before a mob is spawned."
output On20SecondsToMob(void) : "在生成尸潮前 20 秒触发。"
output On60SecondsToMob(void) : "Fires 60 seconds before a mob is spawned."
output On60SecondsToMob(void) : "在生成尸潮前 60 秒触发。"
]
]


Line 440: Line 441:
@PointClass base(Targetname) = info_director
@PointClass base(Targetname) = info_director
[
[
// Inputs
// 输入
input PanicEvent(void) : "Fired when a major event happens that the director should know about."
input PanicEvent(void) : "当发生导演应该知道的重大事件时触发。(刷尸潮)"
input ScriptedPanicEvent(string) : "Fired when a custom panic event wants to happen."
input ScriptedPanicEvent(string) : "当自定义恐慌事件(尸潮)想要发生时触发。"
input ForcePanicEvent(void) : "Trigger a panic event, no matter what else is going on."
input ForcePanicEvent(void) : "触发恐慌事件,不管发生了什么。(说白了就是强制刷尸潮)"
input EndCustomScriptedStage(void) : "End a custom scripted stage."
input EndCustomScriptedStage(void) : "结束自定义脚本阶段。"
input ForceSurvivorPositions(void) : "Make each survivor stand at an info_survivor_position."
input ForceSurvivorPositions(void) : "让每个幸存者站在 info_survivor_position。"
input ReleaseSurvivorPositions(void) : "Allow survivors to move freely again."
input ReleaseSurvivorPositions(void) : "让幸存者再次自由活动。"
input FireConceptToAny(string) : "Fire a speech concept to any survivor that is capable of speaking it."
input FireConceptToAny(string) : "向任何能够说出它的幸存者发射一个说话概念。"
input IncrementTeamScore(integer) : "Increment a team's score. (2=survivors, 3=infected)"
input IncrementTeamScore(integer) : "增加一个团队的分数。 (2=幸存者,3=感染者)(清道夫使用)"
input StartIntro(void) : "Fire when the intro starts."
input StartIntro(void) : "开场动画开始时触发。"
input FinishIntro(void) : "Fire when the intro ends."
input FinishIntro(void) : "开场动画结束时触发。"
input BeginScript(string) : "Begin a director script"
input BeginScript(string) : "执行一个导演脚本。"
input EndScript(void) : "End a director script"
input EndScript(void) : "停止执行导演脚本。"


// Journaling inputs
// 日志输入
input CreateNewJournal(string) : "Create a new journal"
input CreateNewJournal(string) : "创建新日志。"
input WriteToJournal(string) : "Add a task to the I/O Journal"
input WriteToJournal(string) : "将任务添加到 I/O 日志。"
input ExecuteJournal(string) : "Execute all tasks in the specified journal"
input ExecuteJournal(string) : "执行指定日志中的所有任务。"
input EnableTankFrustration(void) : "Can be used to enable the tank frustration meter."
input EnableTankFrustration(void) : "可用于启用坦克挫败计(即你打对抗时操控了 Tank 后长时间不攻击生还者得到的超时)。"
input DisableTankFrustration(void) : "Can be used to disable the tank frustration meter."
input DisableTankFrustration(void) : "可用于禁用坦克挫败计(即你打对抗时操控了 Tank 后长时间不攻击生还者得到的超时)。"




// Outputs
// 输出
output OnGameplayStart(void) : "Fired when a map loads, all players join and gameplay begins."
output OnGameplayStart(void) : "Fired when a map loads, all players join and gameplay begins."
output OnCustomPanicStageFinished(void) : "Fired when each stage of a custom panic event or custom finale finishes."
output OnCustomPanicStageFinished(void) : "Fired when each stage of a custom panic event or custom finale finishes."

Revision as of 11:30, 1 August 2022

English (en)中文 (zh)Translate (Translate)

Template:Translate in Progress:zh-cn

有关的文件


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

//
// 求生之路的实体
//

@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) : "Fired when a map loads, all players join and gameplay begins."
	output OnCustomPanicStageFinished(void) : "Fired when each stage of a custom panic event or custom finale finishes."
	output OnPanicEventFinished(void) : "Fired when a panic event is finished."
	output OnTeamScored(void) : "Fired when a team places a scavenge item in the scavenge goal."

	output OnScavengeRoundStart(void) : "Fired when a scavenge round starts."
	output OnScavengeOvertimeStart(void) : "Timer has run out and game went into overtime."
	output OnScavengeOvertimeCancel(void) : "Time was added to the clock, ending overtime."
	output OnScavengeTimerExpired(void) : "Time has run out, game did not enter overtime."
	output OnScavengeIntensityChanged(Integer) : "Intensity level has changed. 1 = highest intensity, decreases as number gets larger."
	
	output OnUserDefinedScriptEvent1(void) : "generic user defined event fired from a squirrel script"
	output OnUserDefinedScriptEvent2(void) : "generic user defined event fired from a squirrel script"
	output OnUserDefinedScriptEvent3(void) : "generic user defined event fired from a squirrel script"
	output OnUserDefinedScriptEvent4(void) : "generic user defined event fired from a squirrel script"
	
]

@PointClass base(Targetname) iconsprite("editor/info_game_event_proxy.vmt") = info_game_event_proxy
[
	event_name(string) : "Name of the event to generate"
	range(float) : "Range" : "50" : "How near the player must be to determine visibility. THIS IS IN FEET"

	spawnflags(flags) =
	[
		1: "Fire Automatically When First Seen" : 0
	]

	// Inputs
	input GenerateGameEvent(void) : "Generate my game event. (This entity is sent as the SUBJECT)"
]

@PointClass base(Targetname) = game_scavenge_progress_display
[
	Max(float) : "Max" : "0" : "Number of items to collect."

	// Inputs
	input TurnOn(void) : "Turn the display on."
	input TurnOff(void) : "Turn the display off."
	input SetTotalItems(integer) : "Set the target (or total) number of scavenge itmes."
]


@SolidClass base( Targetname, EnableDisable ) = fog_volume : "An entity to control the fog in the map."
[
	FogName(target_destination) : "Fog Name" : : "The name of the fog entity associated with this volume."
	PostProcessName(target_destination) : "Postprocess Name" : : "The name of the postprocess entity associated with this volume."
	ColorCorrectionName(target_destination) : "ColorCorrection Name" : : "The name of the color_correction entity associated with this volume."
]

@FilterClass base(BaseFilter) iconsprite("editor/filter_team.vmt") = filter_activator_team :
	"A filter that filters by the team of the activator."
[
	filterteam(choices) : "Filter Team Number" : 2 : "The team number to filter by.  If the filter mode is Allow, only entities whose "+
		"team number matches the given team will pass the filter. If the filter mode is Disallow, "+
		"all entities EXCEPT those whose team number matches the given team will pass the filter." =
	[
		2 : "Survivor"
		3 : "Infected"
	]
]

@FilterClass base(BaseFilter) iconsprite("editor/filter_team.vmt") = filter_activator_infected_class :
	"A filter that filters by the activator's infected class."
[
	filterinfectedclass(choices) : "Filter Infected Class" : 2 : "The infected class to filter by.  If the filter mode is Allow, only entities whose "+
		"class matches the given team will pass the filter. If the filter mode is Disallow, "+
		"all entities EXCEPT those whose class matches the given team will pass the filter." =
	[
		1 : "Smoker"
		2 : "Boomer"
		3 : "Hunter"
		4 : "Spitter"
		5 : "Jockey"
		6 : "Charger"
		8 : "Tank"
	]
]

@FilterClass base(BaseFilter) = filter_melee_damage :
	"A damage filter that filters by the damage, allowing only melee damage. damagetype specifies which types of melee damage are allowed"
[
	damagetype(choices) : "Damage type" : 64 : "The damage type to filter by. Allows the specified damage type." =
	[
		0 : "All Melee Damage"
		4 : "only SLASH"
		128 : "only CLUB"
	]
]

@FilterClass base(BaseFilter) = filter_health :
	"A damage filter that filters based on if the entity causing the damage has adrenaline active or not."
[	
	adrenalinepresence(choices) : "Adrenaline presence" : 1 : "Allows this state of adrenaline on the attacker to pass the filter." =
	[
		0 : "only inactive"
		1 : "only active"
	]
	
	healthmin(integer) : "Min Health" : 0 : "The lower bound on player health that will pass this filter (inclusive)."
	healthmax(integer) : "Max Health" : 100 : "The upper bound on player health that will pass this filter (inclusive)."
]


@PointClass base(prop_dynamic_base,EnableDisable) studioprop("models/w_models/weapons/w_minigun.mdl") = prop_minigun : "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."
]


@PointClass base(prop_dynamic_base,EnableDisable) studioprop("models/w_models/weapons/50cal.mdl") = prop_mounted_machine_gun: "50 caliber mounted gun (+USE)"
[
	model(studio) : "World model" : "models/w_models/weapons/50cal.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 machine gun has starting firing."
	output OnFireStop(void) : "Fired when the machine gun has stopped firing."
]


@PointClass base(prop_dynamic_base,EnableDisable) studioprop() = prop_health_cabinet : "Health Cabinet"
[
	model(studio) : "World model" : "models/props_interiors/medicalcabinet02.mdl"
	HealthCount(integer) : "Number of pain pills" : 1 : "Number of pain pills/first aid kits inside (1-4)"
]

@PointClass base(Targetname, Angles, Parentname) color(255 100 100) studio("models/survivors/survivor_coach.mdl") = info_survivor_position : "A point where survivors are placed when escaping the finale"
[
	Order(integer) : "Order" : 1 : "Index of spot based on order people got on board. (1-4)"
	SurvivorName(string) : "Survivor Name" : "" : "Force this survivor to use this position (Zoey, Louis, etc.)"
	SurvivorIntroSequence(string) : "Survivor Intro Sequence" : "" : "Sequence to play when the intro starts"
	GameMode(string) : "Game Mode" : "" : "Use this position for a particular game mode only (coop,versus,survival,scavenge)"
	SurvivorConcept(string) : "Survivor Concept" : "" : "Response rule concept to play when survivor is moved here"
	HideWeapons(choices) : "Hide Weapons" : 0 : "Hide Survivor's weapon while locked to this position." =
	[
		0 : "No"
		1 : "Yes"
	]

	// Inputs
	input SetViewControl(string) : "If a survivor is assigned to this position, set his view to a point_viewcontrol"
]

@PointClass base(Targetname, PlayerClass, Angles) studio("models/survivors/survivor_coach.mdl") = info_survivor_rescue : "Survivor rescue point"
[
	rescueEyePos(vecline) : "Eye position of survivors waiting for rescue"
	model(studio) : "World model" : "models/editor/playerstart.mdl"
]

@PointClass base(Targetname, Angles, EnableDisable) studioprop() = trigger_finale : "Finale Trigger"
[
	model(studio) : "World model" : "models/props_misc/german_radio.mdl"

	disableshadows(choices) : "Disable Shadows" : 0 : "Used to disable dynamic shadows on this entity." =
	[
		0 : "No"
		1 : "Yes"
	]

	FirstUseDelay(float) : "First Use Delay" : "0" : "For two-part finale starts, delays this many seconds before allowing another +use."
	UseDelay(float) : "Use Delay" : "0" : "Starts the finale this many seconds after a +use."

	type(choices) : "Finale Type" : 0 : "Specifies which style of finale to trigger" =
	[
		0 : "Standard"
		1 : "Gauntlet"
		2 : "Custom"
		4 : "Scavenge"
	]

	ScriptFile(string) : "Script File"
	
	VersusTravelCompletion(float) : "Versus Travel" : "0.2" : "How much of the versus score is attained through travel to the finale ( not valid in gauntlet finale )"

	
	IsSacrificeFinale(choices) : "Is Sacrifice Finale" : 0 : "If true, one survivor has to be available to perform some action outside the escape vehicle." =
	[
		0 : "No"
		1 : "Yes"
	]
	
	
	input FinaleEscapeFinished(void) : "Give the survivors a victory."
	input FinaleEscapeForceSurvivorPositions(void) : "Make the survivors stand still on the escape vehicle."
	input FinaleEscapeVehicleReadyForSurvivors(void) : "Make survivors say something about how the vehicle has stopped now."
	input ForceFinaleStart(void) : "Start the finale now."
	input GauntletStopPanic(void) : "Move the gauntlet finale state out of continuous panic mode"
	input AdvanceFinaleState(void) : "Increments the finale state"
	input SacrificeEscapeFailed(void) : "Indicates the survivors failed the escape requirements"
	input SacrificeEscapeSucceeded(void) : "Indicates the surviors met the escape requirements"
	input SacrificePlayerBeginsRun(void) : "A player ( !Activator ) has committed to the sacrifice run"
	output FinaleEscapeStarted(void) : "Fired when the survivors should start their escape."
	output FinaleWon(void) : "Fired when the survivors win the finale."
	output FinaleLost(void) : "Fired when the survivors lose the finale."
	output FirstUseStart(void) : "Fired when a player uses the trigger the first time."
	output UseStart(void) : "Fired when a player uses the trigger to start the finale."
	output FinaleStart(void) : "Fired when the finale starts."
	output FinalePause(void) : "Fired during the pause between each finale wave."
	output EscapeVehicleLeaving(void) : "Fired when the escape vehicle starts to leave."
]

@PointClass base(Targetname, Angles) studioprop() = trigger_standoff : "Standoff Trigger"
[
	model(studio) : "World model" : "models/props_misc/german_radio.mdl"
	spawnflags(flags) =
	[
		512: "Diable +use" : 0
	]

	disableshadows(choices) : "Disable Shadows" : 0 : "Used to disable dynamic shadows on this entity." =
	[
		0 : "No"
		1 : "Yes"
	]

	UseDuration(float) : "Use Duration" : "0" : "Seconds a survivor must +use the trigger to start the finale (0 is instantaneous)."
	UseDelay(float) : "Use Delay" : "0" : "Starts the finale this many seconds after a +use."

	input FinaleEscapeFinished(void) : "Give the survivors a victory."
	input FinaleEscapeForceSurvivorPositions(void) : "Make the survivors stand still on the escape vehicle."
	input FinaleEscapeVehicleReadyForSurvivors(void) : "Make survivors say something about how the vehicle has stopped now."
	input ForceFinaleStart(void) : "Start the finale now."
	output FinaleEscapeStarted(void) : "Fired when the survivors should start their escape."
	output FinaleWon(void) : "Fired when the survivors win the finale."
	output FinaleLost(void) : "Fired when the survivors lose the finale."
	output UseStart(void) : "Fired when a duration-based +use starts."
	output UseCancel(void) : "Fired when a duration-based +use is stopped early."
	output FinaleStart(void) : "Fired when the finale starts."
	output FinalePause(void) : "Fired during the pause between each finale wave."
	output EscapeVehicleLeaving(void) : "Fired when the escape vehicle starts to leave."
]

@SolidClass = info_changelevel : 
	"An entity that marks a level change.\n" +
	"Place an info_landmark in both maps that marks the 'same' location in each map.\n"+
	"TIPS & TRICKS: To fire events in the next level, use the OnLevelChange output to turn on "+
	"an env_global in the current level.  Create an logic_auto in the next level that checks "+
	"for the state set by the env_global.\n\n"+
	"To control which entities go through the level transition, create one or more info_transitions and "+
	"give them the same name as the landmark. Any entities within the info_transition(s) will go to the next map."
[
	targetname(target_source) : "Name"
	map(string) : "New Map Name"
	landmark(target_destination) : "Landmark Name"
	spawnflags(flags) =
	[
		2: "Disable Touch" : 0
		4: "To Previous Chapter" : 0
	]
	
	// Outputs
	output OnChangeLevel(void) : "Fired when the level changes."
]

@PointClass base(prop_door_rotating) studioprop() = prop_door_rotating_checkpoint : 
	"An entity used to place a special checkpoint door in the world."
[
]

@PointClass base(Targetname, Angles, Parentname, Angles) studio("models/infected/common_male01.mdl") = info_zombie_spawn :
	"An entity used to spawn a zombie"
[
	population(string) : "Population" : "default" : "Zombie population to choose among."
	
	offer_tank(choices) : "Offer Spawned Tank to PZs" : 0 =
	[
		0: "No"
		1: "Yes"
	]
	
	input SpawnZombie(void) : "Spawn a zombie now."
	input StartleZombie(string) : "Startle the zombie (witches only). Optionally pass the name of a survivor to attack."
	
		// Outputs
	output OnSpawnNormal(void) : "Fired when the spawner creates a normal infected."
	output OnSpawnSmoker(void) : "Fired when the spawner creates a Smoker."
	output OnSpawnBoomer(void) : "Fired when the spawner creates a Boomer."
	output OnSpawnHunter(void) : "Fired when the spawner creates a Hunter."
	output OnSpawnSpitter(void) : "Fired when the spawner creates a Spitter."
	output OnSpawnJockey(void) : "Fired when the spawner creates a Jockey."
	output OnSpawnCharger(void) : "Fired when the spawner creates a Charger."
	output OnSpawnWitch(void) : "Fired when the spawner creates a Witch."
	output OnSpawnTank(void) : "Fired when the spawner creates a Tank."
]

@PointClass base(Targetname, Angles, Parentname, EnableDisable) = info_zombie_border :
	"No zombies will spawn behind this entity."
[

]

@PointClass base(Origin,Targetname) = info_remarkable : "An object in the world such that characters seeing it will speak a TLK_REMARK concept"
[
	contextsubject(string) : "Subject context" : "" : "Text to put in the SUBJECT context of the TLK_REMARK fired upon sighting this object." 
]

//--------------------------------------------------------------------------------------------------------
// Weapons

@BaseClass color(0 0 200) base(Targetname, Angles) = Weapon
[
	output OnPlayerPickup(void) : "Fires when the player picks up this weapon"
]

@BaseClass color(0 0 200) base(Parentname, Global, Targetname, Angles, Studiomodel) = WeaponSpawnSingle
[
	weaponskin(integer) : "Weapon Skin" : -1 : "Some weapons have multiple versions of their textures, called skins. Set this to a number other than -1 to make the given weapon use that skin instead of the default."
	glowrange(float) : "Glow Range" : 0 : "Set a custom glow range for this spawner. 0 means use the default range."

	solid(choices) : "Collisions" : 6 =
	[
		0: "Not Solid"
		2: "Use Bounding Box"
		6: "Use VPhysics"
	]

	spawnflags(Flags) =
	[
		1 : "Enable Physics" : 0
		2 : "Must Exist" : 0
		8 : "Infinite items (overrides count)" : 0
	]
]

@BaseClass color(0 0 200) base(WeaponSpawnSingle) = WeaponSpawn
[
	count(integer) : "Count" : 5 : "Max number of weapons given before disappearing."
	
	spawnflags(Flags) = 
	[
		4 : "Absorb any dropped weapon type" : 0
	]
]

// Left4Dead Guns -----------

@PointClass base(Targetname,Angles) = weapon_item_spawn
[
	weaponskin(integer) : "Weapon Skin" : -1 : "Some weapons have multiple versions of their textures, called skins. Set this to a number other than -1 to make the given weapon use that skin instead of the default."
	glowrange(float) : "Glow Range" : 0 : "Set a custom glow range for this spawner. 0 means use the default range."

	item1(integer) : "Ammo pile" : 1 
	item2(integer) : "First aid kit" : 0 
	item3(integer) : "Molotov Cocktail" : 1 
	item4(integer) : "Pain Pills" : 1 
	item5(integer) : "Pipe Bomb" : 1 
	item6(integer) : "Oxygen Tank" : 0
	item7(integer) : "Propane Tank" : 0
	item8(integer) : "Gasoline Can" : 0
	//item9(integer) : "" : 0				// These keys may be set in maps, beware if re-using them. Instead make a new itemN
	//item10(integer) : "" : 0
	item11(integer) : "Adrenaline" : 1
	item12(integer) : "Defibrillator" : 0
	item13(integer) : "Boomer Bile" : 0
	//item14(integer) : "" : 0
	//item15(integer) : "" : 0
	item16(integer) : "Chainsaw" : 0
	item17(integer) : "Grenade Launcher" : 0	
	item18(integer) : "M60 Machinegun" : 0	

	melee_weapon(string) : "Melee Weapon" : "" : "Options: 'Any' or a comma-delimited string of melee weapon script names. Leave blank for none."
	
	spawnflags(Flags) =
	[
		1 : "Enable Physics on spawned item" : 0
		2 : "Spawned Item Must Exist" : 0
		8 : "Infinite Items" : 0
	]
]

@PointClass base(Targetname) = upgrade_spawn
[
	laser_sight(integer) : "Laser Sight" : 1
	upgradepack_incendiary(integer) : "UpgradePack - Incendiary" : 1
	upgradepack_explosive(integer) : "UpgradePack - Explosive" : 1
	
	spawnflags(Flags) =
	[
		1 : "Enable Physics on spawned item" : 0
		2 : "Spawned Item Must Exist" : 0
	]
]

@PointClass base(Targetname,Angles) studioprop("models/props/terror/exploding_ammo.mdl") = upgrade_ammo_explosive
[
	count(integer) : "Count" : 4 : "Max number of upgrades given before disappearing."
]

@PointClass base(Targetname,Angles) studioprop("models/props/terror/incendiary_ammo.mdl") = upgrade_ammo_incendiary
[
	count(integer) : "Count" : 4 : "Max number of upgrades given before disappearing."
]

@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 : "Pistols" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_desert_eagle.mdl") = weapon_pistol_magnum_spawn : "Magnum Pistol" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_smg_uzi.mdl") = weapon_smg_spawn : "Submachinegun" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_shotgun.mdl") = weapon_pumpshotgun_spawn : "Pump Shotgun" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_autoshot_m4super.mdl") = weapon_autoshotgun_spawn : "Auto Shotgun" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_rifle_m16a2.mdl") = weapon_rifle_spawn : "Assault Rifle" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_sniper_mini14.mdl") = weapon_hunting_rifle_spawn : "Hunting Rifle" []

@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_smg_a.mdl") = weapon_smg_silenced_spawn : "MicroUZI" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_pumpshotgun_A.mdl") = weapon_shotgun_chrome_spawn : "Chrome Shotgun" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_shotgun_spas.mdl") = weapon_shotgun_spas_spawn : "SPAS Shotgun" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_rifle_B.mdl") = weapon_rifle_desert_spawn : "Desert Rifle" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_rifle_ak47.mdl") = weapon_rifle_ak47_spawn : "AK47" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_sniper_military.mdl") = weapon_sniper_military_spawn : "Military Sniper Rifle" []

@PointClass base(WeaponSpawn) studioprop("models/weapons/melee/w_chainsaw.mdl") = weapon_chainsaw_spawn : "Chainsaw" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/weapons/w_grenade_launcher.mdl") = weapon_grenade_launcher_spawn : "Grenade Launcher" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_m60.mdl") = weapon_rifle_m60_spawn : "M60 Machinegun" []

// CSS Guns
@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 Sniper" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_sniper_scout.mdl") = weapon_sniper_scout_spawn : "Scout Sniper" []

// Grenades -----------------
@PointClass base(WeaponSpawn) studioprop("models/w_models/weapons/w_eq_pipebomb.mdl") = weapon_pipe_bomb_spawn : "Pipe Bomb" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/weapons/w_eq_molotov.mdl") = weapon_molotov_spawn : "Molotov" []
@PointClass base(WeaponSpawn) studioprop("models/w_models/weapons/w_eq_bile_flask.mdl") = weapon_vomitjar_spawn : "Vomit Jar" []

// Items ------------------
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_Medkit.mdl") = weapon_first_aid_kit_spawn : "First Aid Kit" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_painpills.mdl") = weapon_pain_pills_spawn : "Painkillers" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_adrenaline.mdl") = weapon_adrenaline_spawn : "Adrenaline" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_defibrillator.mdl") = weapon_defibrillator_spawn : "Defibrillator" []
@PointClass base(WeaponSpawnSingle) studioprop("models/props_junk/gascan001a.mdl") = weapon_gascan_spawn : "Gas Can" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_incendiary_ammopack.mdl") = weapon_upgradepack_incendiary_spawn : "Upgrade Pack - Incendiary" []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_explosive_ammopack.mdl") = weapon_upgradepack_explosive_spawn : "Upgrade Pack - Explosive" []

@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_eq_Medkit.mdl") = weapon_first_aid_kit : "Physics First Aid Kit - This entity is intended to be used in scripted events where a single item needs to spawned with physics active." []
@PointClass base(WeaponSpawnSingle) studioprop("models/w_models/weapons/w_grenade_launcher.mdl") = weapon_grenade_launcher : "Grenade Launcher - This entity is intended to be used in scripted events where a single item needs to spawned with physics active." []

// Melee --------------------
@PointClass base(WeaponSpawn) studioprop() = weapon_melee_spawn : "Melee Weapon"
[
	melee_weapon(string) : "Melee Weapon" : "any" : "Options: 'Any' or a comma-delimited string of melee weapon script names. Leave blank for none."
	model(studio) : "Model" : "models/weapons/melee/w_fireaxe.mdl" : "Helper Model"
]

// Scavenge Mode --------------------
@PointClass base(WeaponSpawnSingle) studioprop("models/props_junk/gascan001a.mdl") = weapon_scavenge_item_spawn : "Scavenge Item"
[
	glowstate(choices) : "Initial Glow State" : 3 =
	[
		0: "OFF"
		3: "ON"
	]

	input SpawnItem(void) : "Spawn an instance of a scavenge mode item."
	input TurnGlowsOn(void) : "All current and future spawned items should glow."
	input TurnGlowsOff(void) : "All current and future spawned items should not glow."
	
	output OnItemPickedUp(void) : "Fired when this spawner's scavenge item is picked up by a player."
]

@PointClass base(Origin,Targetname) = point_prop_use_target : "A use target for carried props. Triggers the prop's use behavior."
[
	spawnflags(Flags) = 
	[
		1 : "Useable by Gas Can" : 1
		2 : "Useable by Cola Bottles" : 0
	]

	nozzle(target_destination) : "Gas nozzle" : : "The name of the prop_dynamic gas nozzle for this use_target (scavenge mode)."

	input Activate(void) : "Activate the use target."
	input Deactivate(void) : "Deactivate the use target."

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

@PointClass base(WeaponSpawn) studioprop("models/w_models/Weapons/w_rifle_m16a2.mdl") = weapon_spawn : "Configurable Weapon Spawner"
[	
	weapon_selection(choices) : "Selection" : "any_primary" : "Spawn the selected weapon or weapon category" =
	[
		"any" : "Any primary or secondary weapon"
		
		"any_pistol" : "Any Pistol"
		
		// specific pistols
		"weapon_pistol" : "Pistol"

		"weapon_pistol_magnum" : "Magnum Pistol"
		
		"any_primary" : "Any Primary Weapon"
		
		"tier1_any"	: "Any tier 1 primary"
		"tier2_any"	: "Any tier 2 primary"
		
		"any_smg" : "Any tier 1 SMG"
		"any_rifle" : "Any tier 2 Rifle"
		"any_sniper_rifle" : "Any tier 2 Sniper Rifle"
		
		"any_shotgun" : "Any Shotgun"
		"tier1_shotgun" : "Any tier 1 Shotgun"
		"tier2_shotgun" : "Any tier 2 Shotgun"
		
		// specific primary weapons	
		"weapon_smg" : "SMG"
		"weapon_smg_silenced" : "Silenced SMG"
		"weapon_pumpshotgun" : "Pump Shotgun"
		"weapon_shotgun_chrome" : "Chrome Shotgun"
		"weapon_autoshotgun" : "Auto Shotgun"
		"weapon_shotgun_spas" : "SPAS Shotgun"
		"weapon_rifle" : "M4 Rifle"
		"weapon_rifle_desert" : "Desert Rifle"
		"weapon_rifle_ak47" : "AK47"
		"weapon_hunting_rifle" : "Hunting Rifle"
		"weapon_sniper_military" : "Sniper Military"
		
		// specific css weapons	
		"weapon_smg_mp5" : "MP5"
		"weapon_rifle_sg552" : "SG552"
		"weapon_sniper_awp" : "Sniper AWP"
		"weapon_sniper_scout" : "Sniper Scout"
	]	
	
	spawn_without_director(choices) : "Spawn instantly without director" : 0 : "Bypass the proximity checks that make nearby weapons be the same tier / not the same weapon" =
	[
		0 : "No"
		1 : "Yes"
	]	

	spawnflags(Flags) = 
	[
		16 : "Constrain to spawn position (don't drop to the ground)" : 0
	]

	no_cs_weapons(choices) : "No CS Weapons" : 0 : "When selecting 'any' weapon, set this to true if you do not want CS weapons." =
	[
		0 : "No"
		1 : "Yes"
	]	
]


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

// Weapon Population --------
@PointClass base(Targetname,Angles) = info_map_parameters :
	"L4D-specific map parameters."
[
	AmmoDensity(float) : "Ammo pile density" : "6.48" : "Ammo pile density per sq 100 yards"
	PainPillDensity(float) : "Pain Pill density" : "6.48" : "Pain Pill density per sq 100 yards"
	MolotovDensity(float) : "Molotov density" : "6.48" : "Molotov density per sq 100 yards"
	PipeBombDensity(float) : "Pipe Bomb density" : "6.48" : "Pipe Bomb density per sq 100 yards"
	PistolDensity(float) : "Pistol density" : "6.48" : "Pistol density per sq 100 yards"
	GasCanDensity(float) : "Gas Can density" : "6.48" : "Gas Can density per sq 100 yards"
	OxygenTankDensity(float) : "Oxygen Tank density" : "6.48" : "Oxygen Tank density per sq 100 yards"
	PropaneTankDensity(float) : "Propane Tank density" : "6.48" : "Propane Tank density per sq 100 yards"
	MeleeWeaponDensity(float) : "Melee Weapon density" : "6.48" : "Melee Weapon density per sq 100 yards"
	AdrenalineDensity(float) : "Adrenaline density" : "6.48" : "Adrenaline density per sq 100 yards"
	DefibrillatorDensity(float) : "Defibrillator density" : "3.0" : "Defibrillator density per sq 100 yards"
	VomitJarDensity(float) : "Boomer Bile density" : "6.48" : "Boomer Bile density per sq 100 yards"
	UpgradepackDensity(float) : "Ammo upgrade density" : "1.0" : "Ammo upgrade pack density per sq 100 yards"
	ChainsawDensity(float) : "Super Weapon density" : "1.0" : "Chainsaw and Grenade Launcher density per sq 100 yards"
	ConfigurableWeaponDensity(float) : "Configurable Weapon Spawn density" : "-1.0" : "Density for weapon_spawn entities, -1 to spawn all"
	ConfigurableWeaponClusterRange(float) : "Configurable Weapon Cluster Range" : 100 : "weapon_spawn entities that are this close to each other are considered a single 'cluster' for population purposes"
	MagnumDensity(float) : "Magnum Pistol Spawn density" : "-1.0" : "Density for weapon_magnum_spawn entities, -1 to spawn all"

	ItemClusterRange(float) : "Item Cluster Range" : 50 : "Scavenge items of the same kind that are this close to each other are considered a single 'cluster' for population purposes"	
	FinaleItemClusterCount(integer) : "Finale Item Cluster Count" : 3 : "How many clusters of items will be populated in the finale"
	
	input UpdateCvars(void) : "Stuff values from this entity into cvars for tweaking"
]

@PointClass base(Targetname,Angles) = info_map_parameters_versus :
	"L4D-specific map parameters for versus games."
[
	AmmoDensity(float) : "Ammo pile density" : "6.48" : "Ammo pile density per sq 100 yards"
	PainPillDensity(float) : "Pain Pill density" : "6.48" : "Pain Pill density per sq 100 yards"
	MolotovDensity(float) : "Molotov density" : "6.48" : "Molotov density per sq 100 yards"
	PipeBombDensity(float) : "Pipe Bomb density" : "6.48" : "Pipe Bomb density per sq 100 yards"
	PistolDensity(float) : "Pistol density" : "6.48" : "Pistol density per sq 100 yards"
	GasCanDensity(float) : "Gas Can density" : "6.48" : "Gas Can density per sq 100 yards"
	OxygenTankDensity(float) : "Oxygen Tank density" : "6.48" : "Oxygen Tank density per sq 100 yards"
	PropaneTankDensity(float) : "Propane Tank density" : "6.48" : "Propane Tank density per sq 100 yards"
	MeleeWeaponDensity(float) : "Melee Weapon density" : "6.48" : "Melee Weapon density per sq 100 yards"
	AdrenalineDensity(float) : "Adrenaline density" : "6.48" : "Adrenaline density per sq 100 yards"
	DefibrillatorDensity(float) : "Defibrillator density" : "2.50" : "Defibrillator density per sq 100 yards"
	VomitJarDensity(float) : "Boomer Bile density" : "6.48" : "Boomer Bile density per sq 100 yards"
	UpgradepackDensity(float) : "Ammo upgrade density" : "1.0" : "Ammo upgrade pack density per sq 100 yards"
	ChainsawDensity(float) : "Super Weapon density" : "1.0" : "Chainsaw and Grenade Launcher density per sq 100 yards"
	ConfigurableWeaponDensity(float) : "Configurable Weapon Spawn density" : "-1.0" : "Density for weapon_spawn entities, -1 to spawn all"
	ConfigurableWeaponClusterRange(float) : "Configurable Weapon Cluster Range" : 100 : "weapon_spawn entities that are this close to each other are considered a single 'cluster' for population purposes"
	MagnumDensity(float) : "Magnum Pistol Spawn density" : "-1.0" : "Density for weapon_spawn entities, -1 to spawn all"

	ItemClusterRange(float) : "Item Cluster Range" : 50 : "Scavenge items of the same kind that are this close to each other are considered a single 'cluster' for population purposes"
	FinaleItemClusterCount(integer) : "Finale Item Cluster Count" : 3 : "How many clusters of items will be populated in the finale"
	
	input UpdateCvars(void) : "Stuff values from this entity into cvars for tweaking"
]

@PointClass base(Targetname,Angles) iconsprite("editor/info_gamemode.vmt") = info_gamemode :
	"Game mode trigger."
[
	output OnCoop(void) : "Fired when the map spawns in coop games."
	output OnVersus(void) : "Fired when the map spawns in versus games."
	output OnSurvival(void) : "Fired when the map spawns in survival games."
	output OnScavenge(void) : "Fired when the map spawns in scavenge mode."

	output OnCoopPostIO(void) : "Fired after all entity IO generated by OnCoop has finished."
	output OnVersusPostIO(void) : "Fired after all entity IO generated by OnVersus has finished"
	output OnSurvivalPostIO(void) : "Fired after all entity IO generated by OnSurvival has finished"
	output OnScavengePostIO(void) : "Fired after all entity IO generated by OnScavenge has finished"

	output OnScavengeMatchStart(void) : "Fired on the first map load of a scavenge match. Doesn't fire on round restarts."

	output OnNavAnalyze(void) : "Fired when the map is loaded with -navanalyze on the command line."
]

// Beam spotlight ---------------------
@PointClass base(Targetname, Parentname, RenderFields, Angles) studio("models/editor/cone_helper.mdl") = beam_spotlight : 
	"An entity to draw a spotlight. Will draw a beam when the player views it side on, and a halo when it's facing towards the player. "+
	"Unless the 'No Dynamic Light' spawnflag is checked, it will also create a dynamic light wherever the end of the spotlight rests." +
	"This spotlight is entirely client side, it is not sync'd across clients."
[
	spawnflags(Flags) = 
	[
		1 : "Start On" : 1
		2 : "No Dynamic Light" : 0
		4 : "Start rotation on" : 0
		8 : "Reverse Direction" : 0
		16 : "X Axis"  : 0
		32 : "Y Axis"  : 0
		64 : "No Fog" : 0
	]

	maxspeed(integer) : "Max Rotation Speed" : 100 : "The maximum rotation speed of the spotlight, in degrees per second."

	spotlightlength(integer) : "Spotlight Length" : 500 : "Length of the spotlight beam."
	spotlightwidth(integer) : "Spotlight Width" : 50 : "Width of the spotlight beam."
	rendercolor(color255) : "Color (R G B)" : "255 255 255"
	HDRColorScale(float) : "HDR color scale." : "0.7" : "float value to multiply sprite color by when running in HDR mode."
	
	// Inputs
	input LightOn(void) : "Turn the spotlight on."
	input LightOff(void) : "Turn the spotlight off"
	input Start(void) : "Start the rotator rotating."
	input Stop(void) : "Stop the rotator from rotating."
	input Reverse(void) : "Reverse the direction of rotation of the rotator."
	
	// outputs
	output OnLightOn(void) : "Fires when light turns on."
	output OnLightOff(void) : "Fires when light turns off."
]

@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."
[
]