//====== Copyright © 2004-2011, Troika Games, Inc. All rights reserved. =======
//
// Purpose: Vampire Bloodlines game definition file (.fgd) 
// Version: 0.9 beta
// Edition: Original VtMB [Additional Base]
// Written: Psycho-A
//
//=============================================================================


//-------------------------------------------------------------------------------------------------------------------
// NOTE1: These entities found in game code but not included for its potetial useless and inoperability.
//-------------------------------------------------------------------------------------------------------------------

	// activity_copy_prop
	// ai_hint
	// ai_network
	// aitesthull
	// auspex_aura
	// beam
	// bodyque
	// camera_animated
	// camera_track
	// debug_entity
	// dynamic_prop
	// entityflame
	// disc_particle
	// env_glow
	// env_steamjet
	// env_swarm_bats
	// filter_base
	// flame_cluster
	// func_plat
	// func_wall
	// funCBaseFlex
	// gib
	// gravity_pellet
	// grenade
	// info_constraint_anchor
	// info_intermission
	// info_player_deathmatch
	// instanced_scripted_scene
	// light_glspot
	// logic_proximity
	// momentary_door
	// multisource
	// npc_crow
	// npc_generic_bathack
	// npc_TestBaseHumanoid
	// npc_VTest
	// npc_VPlaceholder
	// npc_VChangBros
	// npc_VCombatman
	// npc_VMercurio
	// npc_VMoleman
	// npc_sabbat
	// physics_prop
	// physics_prop_ragdoll
	// player
	// player_manager
	// player_pickup
	// playerevents
	// prop_base
	// prop_model_state
	// prop_ragdoll_special
	// raggib
	// scripted_scene
	// sheriff_teleport_bats
	// simple_physics_brush
	// simple_physics_prop
	// soundent
	// speaker
	// tectonic
	// te_tester
	// test_traceline
	// trigger
	// trigger_brush
	// vampire_skill
	// vampireprojectile
	// vampireprojectile_mingxiaospit
	// vdisciplineprojectile
	// viewmodel
	// weapon_physcannon
	// window_pane
	// worldevents


		
//-------------------------------------------------------------------------------------------------------------------
// NOTE2: All of entities below are workable and compatible with Source Engine but not used in game.
//-------------------------------------------------------------------------------------------------------------------

//*******************************************************************************************************************
//*******************************************************************************************************************
//
// AI Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// ai_changehintgroup [common, HL2-based]
//====================================================================================================================

@PointClass base(Targetname) sphere(Radius)  size(-8 -8 -8, 8 8 8) = ai_changehintgroup : "Change Hint Group"
[
	SearchType(choices) : "Search Type" : 0 : "How to search for the entities to change." = 
	[
		0 : "Entity Name"
		1 : "Classname"
		2 : "Old Hint Group"
	] 
	SearchName(string) : "Name to search for"
	NewHintGroup(string) : "New Hint Group"
	Radius(string) : "Search Radius" : "0.0" : "Radius to search (0 for all of map)"
	hintlimiting(choices) : "Hint Limit Nav" : 0 : "Limits NPC to using specified hint group for navigation requests, does not limit local navigation." =
	[
		0 : "No"
		1 : "Yes"
	]

	input Kill( void ) : "Removes this entity from the world"
	input Activate( void ) : "Change the Hint Group"
]




//====================================================================================================================
// ai_changetarget [common, HL2-based]
//====================================================================================================================

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = ai_changetarget : "Change Target"
[
	target(target_destination) : "Target entity" : : "Name of entity whose target will be changed."
	m_iszNewTarget(string) : "New Target"

	// Inputs
	input Kill( void ) : "Removes this entity from the world"
	input Activate( void ) : "Changes the entities target"
]




//====================================================================================================================
// ai_goal_standoff [common, HL2-based]
//====================================================================================================================

@PointClass base(Targetname) iconsprite("editor/ai_goal_standoff.vmt") = ai_goal_standoff : "AI Goal Standoff"
[
	actor(target_destination) : "Actor(s) to affect"
//	goal(string) : "Target Entity (self by default) [NOT IMPLEMENTED]"

	StartActive(choices) : "Start Active" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	HintGroupChangeReaction(Choices) : "Reaction to tactical change" : 1 : "What to do if leader moves, threat is neutralized, hint group changes, etc" =
	[
		0 : "Move when ready (default AI)"
		1 : "Move when seek cover"
		2 : "Move immediately"
	]

	Aggressiveness(Choices) : "Aggressiveness" : 2 =
	[
		0 : "Very low"
		1 : "Low"
		2 : "Medium"
		3 : "High"
		4 : "Very High"
		// Custom agression disabled
		// 		100 : "Custom"
	]

	PlayerBattleline(choices) : "Player battleline" : 1 : "Player defines a battle line, applies to allies only" =
	[
		0 : "No"
		1 : "Yes"
	]

	StayAtCover(choices) : "Stay at cover location" : 0 : "When have suitable cover, don't change it (disables advancing to battle line)" =
	[
		0 : "No"
		1 : "Yes"
	]

	// Inputs
	input Activate( void ) : "Begin contesting position"
	input Deactivate( void ) : "Cease contesting position"
	input SetAggressiveness(integer) : "Set aggressiveness"
]



//====================================================================================================================
// ai_sound [common, HL2-based]
//====================================================================================================================

@PointClass base(Targetname,Parentname) sphere(volume) iconsprite("editor/ai_sound.vmt") = ai_sound :
	"This entity makes sounds or smells that can be sensed by NPCs, butnot by the player. This can be used " +
	"to cause reactions in nearby NPCs.\n\n" +
	"Sound Types\n" +
	"  Combat: Will cause most NPCs to become alert\n" +
	"  World: Will cause most NPCs to become alert\n" +
	"  Danger: Will cause most NPCs to move away from the position of the sound\n" +
	"  Bullet Impact: \n" +
	"  Carcass: \n" +
	"  Meat: \n" +
	"  Garbage: \n" +
	"  Thumper: causes antlions to run away briefly\n" +
	"  Readiness: (Low, Medium, High) Causes player companions that can hear this sound to change readiness\n"
[																									  
	input InsertSound(Integer) : "Insert a sound in the AI sound list"

	soundtype(choices) : "Sound Type" : 0 : "The type of sound or smell will determine the reaction of NPCs that sense it." =
	[
		1: "Combat"
		2: "World"
		//4: "Player (Don't use)"
		8: "Danger"
		16: "Bullet Impact"
		32: "Carcass"
		64: "Meat"
		128: "Garbage"
		256: "Thumper"
	]
]












//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Environmental Effects
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// env_dustpuff [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@PointClass base(Targetname,Parentname) size( -8 -8 -8, 8 8 8 ) = env_dustpuff : 
	"An entity that can emit dust puffs."
[
	scale(float) : "Scale" : 8 : "Size of the dust puff."
	speed(float) : "Speed" : 16 : "Speed at which the dust particles should move."

	color(color255) : "Dust color" : "128 128 128"

	// Inputs
	input SpawnDust(void) : "Spawn a dust puff."
]



//====================================================================================================================
// env_fire [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname,EnableDisable) iconsprite("editor/env_fire") color(0 180 0) = env_fire : 
	"An entity that handles a single flame at its origin. The flame causes heat 'damage' to other env_fire entities around it, and will eventually ignite non-flaming env_fire entities nearby, causing the fire to spread."
[
	health(integer) : "Duration" : 30 : "Amount of time the fire will burn."
	firesize(integer) : "Size" : 64 : "Height (in world units) of the flame."
	fireattack(integer) : "Attack" : 4 : "Amount of time the fire takes to grow to full strength."
	firetype(choices) : "Type" : 0 =
	[
		0 : "Natural"
		1 : "Plasma"
	]
	spawnflags(flags) =
	[
		1:	"Infinite Duration" : 0
		2:	"Smokeless" : 0
		4:	"Start On" : 0
		8:	"Start Full" : 0
		16:	"Don't drop" : 0
		32: "No glow" : 0
		128: "Delete when out" : 0
		256: "Start disabled" : 0
	]

	ignitionpoint(float) : "Ignition Point" : 32
	damagescale(float) : "Damage Scale" : "1.0"

	// Inputs
	input Enable(void)				: "Enables input and ignition"
	input Disable(void)				: "Disables input and ignition"
	input StartFire(void)			: "Start the fire"
	input Extinguish(float)			: "Puts out the fire premanently in the number of seconds specified"
	input ExtinguishTemporary(float): "Puts out the fire temporarily in the number of seconds specified"

	// Outputs
	output OnIgnited(void)			: "Fires when the fire is first ignited"
	output OnExtinguished(void)		: "Fires when the fire is fully extinguished"
]



//====================================================================================================================
// env_firesensor [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname) size(-4 -4 -4, 4 4 4) color(255 255 0) sphere(fireradius) = env_firesensor : 
	"An entity that detects changes in heat nearby."
[
	spawnflags(flags) =
	[
		1:	"Start On" : 1
	]

	fireradius(float) : "Radius" : 128
	heatlevel(float) : "Heat level" : 32
	heattime(float) : "Time at level" : 0

	// Inputs
	input Enable(void)				: "Enable fire source"
	input Disable(void)				: "Disable fire source"
	output OnHeatLevelStart(void)	: "Fires when the heat level has been detected for the given length of time"
	output OnHeatLevelEnd(void)		: "Fires when the heat level is no longer detected."
]



//====================================================================================================================
// env_firesource [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname) iconsprite("editor/env_firesource") color(255 255 0) sphere(fireradius) = env_firesource : 
	"An entity that provides heat to all nearby env_fire entities. Cannot be extinguished."
[
	spawnflags(flags) =
	[
		1:	"Start On" : 0
	]

	fireradius(float) : "Radius" : 128 : "The radius around this entity in which to provide heat."
	firedamage(float) : "Intensity / Damage" : 10 : "Amount of heat 'damage' to apply to env_fire entities within the radius."

	// Inputs
	input Enable(void) : "Enable fire source."
	input Disable(void) : "Disable fire source."
]



//====================================================================================================================
// env_fog_controller [common]
//====================================================================================================================
// VTMB-adaptation
//  removed: DXLevelChoice (unused)

@PointClass base(Targetname) iconsprite("editor/fog_controller.vmt") color(255 255 255) = env_fog_controller : 
	"An entity that controls the fog and view distance in the map."
[
	// Inputs
	input SetStartDist(float) : "Sets fog start distance"
	input SetEndDist(float) : "Sets fog end distance"
	input TurnOn(void) : "Turns fog on"
	input TurnOff(void) : "Turns fog off"
	input SetColor(color255) : "Sets primary fog color."
	input SetColorSecondary(color255) : "Sets secondary fog color."
	
	
	// Starting fog parameters for the level. These are selectable per LOD.	
	fogenable(choices) : "Fog Enable" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	fogblend(choices) : "Fog Blend" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	fogcolor(color255) : "Primary Fog Color" : "255 255 255"
	fogcolor2(color255) : "Sec Fog Color" : "255 255 255"
	fogdir(string) : "Primary Fog Dir" : "1 0 0"
	fogstart(string) : "Fog Start" : "500.0"
	fogend(string) : "Fog End" : "2000.0"
	
	farz(string) : "Far Z Clip Plane" : "-1"
]



//====================================================================================================================
// env_global [common]
//====================================================================================================================

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_global :
	"An entity to control a game-specific global states."
[
	globalstate(choices) : "Global State to Set" =
	[
		"gordon_precriminal" : "Gordon pre-criminal" 
		"antlion_allied" : "Antlions are player allies" 
		"player_stealth" : "Player in APC is disguised as combine" 
	]

	initialstate(choices) : "Initial State" : 0 =
	[
		0 : "Off"
		1 : "On"
		2 : "Dead"
	]
	spawnflags(flags) =
	[
		1 : "Set Initial State" : 0
	]

	// Inputs
	input TurnOn(void) : "Set state of global to ON"
	input TurnOff(void) : "Set state of global to OFF"
	input Toggle(void) : "Toggles state of global between ON and OFF"
	input Remove(void) : "Set state of global to DEAD"
]



//====================================================================================================================
// env_laser [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname,RenderFxChoices) size(-4 -4 -4, 4 4 4) line(255 255 255, targetname, LaserTarget) = env_laser : 
	"An entity that creates a laser beam between itself and a given target."
[
	LaserTarget(target_destination) : "Target of Laser" : : "Name of entity or entities to strike at, randomly chosen if there are multiple entities with the given name."
	renderamt(integer) : "Brightness (1 - 255)" : 100
	rendercolor(color255) : "Beam Color (R G B)" : "255 255 255"
	width(float) : "Width of beam in pixels" : 2
	NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0
	texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr"
	EndSprite(sprite) : "End Sprite" : ""
	TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35
	framestart(integer) : "Starting Frame" : 0
	damage(string) : "Damage / second" : "100" : "How much damage this laser does per second to things it hits."
	spawnflags(flags) = 
	[
		1 : "Start On" : 0
		16: "StartSparks" : 0
		32: "EndSparks" : 0
		64: "Decal End" : 0
	]

	// Inputs
	input TurnOn(void) : "Turns the laser on."
	input TurnOff(void) : "Turns the laser off."
	input Toggle(void) : "Toggles the laser between on and off."
]



//====================================================================================================================
// env_message [common]
//====================================================================================================================

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_message : 
	"An entity that draws a text message on player's HUDs."
[
	message(string) : "Message Text"
	spawnflags(flags) =
	[
		1: "Play Once" : 0
		2: "All Clients" : 0
	]
	messagesound(sound) : "Sound Effect" : "" : "When the message is shown, this sound effect will be played, originating from this entity."
	messagevolume(string) : "Volume 0-10" : "10" : "Volume of the sound effect."
	messageattenuation(Choices) : "Sound Radius" : 0 =
	[
		0 : "Small Radius"
		1 : "Medium Radius"
		2 : "Large  Radius"
		3 : "Play Everywhere"
	]
	
	// Inputs
	input ShowMessage(void) : "Shows the message and plays the sound."
	
	// Outputs
	output OnShowMessage(void) : "Fired when the message is activated."
]



//====================================================================================================================
// env_microphone [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname,EnableDisable) iconsprite("editor/env_microphone.vmt") sphere(MaxRange) color(0 0 255) = env_microphone :
	"An entity that acts as a microphone. It works in one of two modes. If it has a 'Speaker' set, it picks up all sounds within the specified sound range, " +
	"and rebroadcasts them through the Speaker entity. In this Speaker mode, it ignores the Hears X spawnflags and does not fire the SoundLevel output. " +
	"If it has no Speaker set, it measures the sound level at a point, and outputs the sound level as a value between 0 and 1. In Measuring mode, it only hears sounds that match the Hear X spawnflags."
[
	target(target_destination) : "Measure target" : : "The name of an entity where the sound level will be measured."
	SpeakerName(target_destination) : "Speaker" : "" : "The name of a speaker entity through which to play any sounds heard by this microphone."

	spawnflags(flags) =
	[
		1 : "Hears combat sounds" : 1
		2 : "Hears world sounds" : 1
		4 : "Hears player sounds" : 1
		8 : "Hears bullet impacts" : 1
		16: "Swallows sounds routed through speakers" : 0
	]

	Sensitivity(float) : "Sensitivity (0 - 10)" : 1 : "Microphone sensitivity, 0=deaf, 1=default, 10=extremely sensitive)"
	SmoothFactor(float) : "Smoothing (0 - 1)" : 0 : "Smoothing factor, 0=no smoothing, 1=maximum smoothing)"
	MaxRange(float) : "Maximum hearing range (0=infinite)" : 240 : "Sounds beyond this range won't be heard, irrelevant of attenuation. "+
		"WARNING: setting this to zero (or a value > 1024) when the microphone is connected to a speaker entity can be very bad for performance!!"

	// Outputs
	output SoundLevel(float) : "Fires when the sound level at the point changes."
	output OnRoutedSound(void) : "Fires whenever a heard sound is routed out through the specified speaker (if any)."
]



//====================================================================================================================
// env_player_surface_trigger [common]
//====================================================================================================================

@PointClass base(Targetname) = env_player_surface_trigger : 
	"An entity that monitors the material of the surface the player is standing on, and fires outputs whenever it changes to/from a specific material."
[
	gamematerial(choices) : "Game Material to Watch" : "0" : "The material to watch. When the player stands on/off this material, this entity's outputs will be fired." =
	[
		0 : "None (player's in the air)"
		67 : "Concrete"
		77 : "Metal"
		68 : "Dirt"
		86 : "Vent"
		71 : "Grate"
		84 : "Tile"
		83 : "Slosh"
		87 : "Wood"
		80 : "Computer"
		89 : "Glass"
		70 : "Flesh"
		73 : "Clip"
		79 : "Foliage"
		78 : "Sand"
	]
	
	// Inputs
	input Enable(void) : "Start watching the player's surface."
	input Disable(void) : "Stop watching the player's surface."

	// Outputs
	output OnSurfaceChangedToTarget(void) : "Fired when the player moves onto the specified game material."
	output OnSurfaceChangedFromTarget(void) : "Fired when the player moves off the specified game material."
]



//====================================================================================================================
// env_shake [common]
//====================================================================================================================

@PointClass base(Targetname, Parentname) sphere() iconsprite("editor/env_shake.vmt") = env_shake : 
	"An entity to control screen shake on players." 
[
	spawnflags(flags) =
	[
		1: "GlobalShake" : 0
		//2: "Disrupt player control" : 0 // doesn't work
		4: "In Air" : 0		// shakes objects even if they are not onground
		8: "Physics" : 0	// shakes physically as well as the camera
	]

	amplitude(float) : "Amplitude 0-16" : "4"
	radius(float) : "Effect radius" : "500"
	duration(float) : "Duration (seconds)" : "1"
	frequency(float) : "0.1 = jerk, 255.0 = rumble" : "2.5"

	input Amplitude(string) : "Amplitude 0-16"
	input Frequency(string) : "0.1 = jerk, 255.0 = rumble"
	input StartShake(void) : "Starts the shake"
	input StopShake(void) : "Stops the shake"
]



//====================================================================================================================
// env_soundscape [common]
//====================================================================================================================

@PointClass base(Targetname,Parentname,EnableDisable) sphere() iconsprite("editor/env_soundscape.vmt") line(255 255 255, targetname, position0) line(255 255 255, targetname, position1) line(255 255 255, targetname, position2) line(255 255 255, targetname, position3) line(255 255 255, targetname, position4) line(255 255 255, targetname, position5) line(255 255 255, targetname, position6) line(255 255 255, targetname, position7) = env_soundscape : 
	"An entity to control sound in an area. The active soundscape at any time is the last one that had line-of-sight to the player, and was within the radius."
[
	radius(integer) : "Radius" : 128
	soundscape(choices) : "Soundscape" : "Nothing" =
	[
		"Nothing"				: "Nothing"
		"Automatic"				: "Automatic"
		"GenericIndoor"			: "Indoor"
		"GenericOutdoor"		: "Outdoor"
	]
	position0(target_destination) : "Sound Position 0" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world."
	position1(target_destination) : "Sound Position 1" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world."
	position2(target_destination) : "Sound Position 2" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world."
	position3(target_destination) : "Sound Position 3" : "" : "A sound position that will be referenced inside the soundscape text file. Usually used to position a set of sounds within the world."
]



//====================================================================================================================
// env_sun [common]
//====================================================================================================================
//  removed: Angles (included)

@PointClass base(Targetname) color(255 0 0) = env_sun : 
	"An entity to control & draw a sun effect in the sky."
[
	target(target_destination)	: "Viewer entity" : : "Name of an entity used to determine where the sun is in the skybox. The sun should be lined up on a line from this entity to the env_sun entity."
	rendercolor(color255)		: "Sun Color (R G B)" : "100 80 80"
	NumLayers(integer)			: "Number of layers" : 3
	HorzSize(integer)			: "Horizontal size of sun"	: 120
	VertSize(integer)			: "Vertical size of sun"	: 100

	input TurnOn(void)			: "Enable sun rendering"
	input TurnOff(void)			: "Disable sun rendering"
	input SetColor(color255)	: "Change the sun's color"
]



//====================================================================================================================
// env_terrainmorph [common, HL2-based]
//====================================================================================================================

@PointClass base(Targetname,Parentname) size(-4 -4 -4, 4 4 4) color(0 180 0) = env_terrainmorph : 
	"Morphs terrain by pulling vertices along a normal.\n\n" +
	"Place this entity the desired distance from a terrain surface and set ANGLES " +
	"to the normal along which you want to pull the surface's vertices. If you set the INSTANT spawnflag, " +
	"the morph will take place instantly instead of over time.\n"
[
	startradius( integer ) : "Start Radius" : 500 : "Radius of the effect when morphing begins. Only this value is used" +
													"if the effect is flagged to occur instantly."
	goalradius( integer ) : "Goal Radius" : 100 : "Radius of the effect at the end of morphing. The radius of this effect will change from "+
												  "Start Radius to Goal Radius over the duration of this effect. This value is ignored if the effect is flagged to occur instantly."

	duration( integer ) : "Duration" : 3 : "The morph will take place over this period of time (seconds). Ignored if flagged to occur instantly"

	fraction( integer ) : "Displacement Fraction" : 1 : "If set to 1, the terrain surface will be pulled exactly to this entity's position." +
														" If set to 0.5, the surface will be pulled exactly half way to this entity's position. " +
														"If set to 2, the surface will be pulled to an imaginary point twice as far away as this entity. " +
														"(Any Displacement Fraction greater than 1.0 will result in clipping. The surface cannot be pulled beyond " +
														"This entity's position and any vertices attemping will clip to this entity's position. You may use this feature to create mesas.)"

	// Inputs
	input BeginMorph(void) : "Begin Morph"

	spawnflags(flags) =
	[
		1: "Instant" : 0 
	]
]



//====================================================================================================================
// env_wind [common]
//====================================================================================================================

@PointClass base(Targetname, Angles) iconsprite("editor/env_wind.vmt") = env_wind : 
	"An entity to control wind in the map. Partially functional."
[
	gustsound(sound) : "Gust Sound Filename" : "" : "Sound to be played to simulate the gusting wind."
	minwind(integer) : "Min normal speed" : 20 : "Minimum speed of the wind while idling."
	maxwind(integer) : "Max normal speed" : 50 : "Maximum speed of the wind while idling."

	mingust(integer) : "Min gust speed" : 100 : "Minimum speed of wind gusts."
	maxgust(integer) : "Max gust speed" : 250 : "Maximum speed of wind gusts."

	mingustdelay(integer) : "Min gust delay" : 10 : "Minimum time delay between random gusts."
	maxgustdelay(integer) : "Max gust delay" : 20 : "Maximum time delay between random gusts."

	gustdirchange(integer) : "Max gust dir change (degrees)" : 20 : "Maximum amount that the wind's direction changes due to a gust."
]



//====================================================================================================================
// gibshooter [common]
//====================================================================================================================

@PointClass base(gibshooterbase) iconsprite("editor/gibshooter.vmt") = gibshooter : 
	"An entity that shoots out gibs. Style of body part depends on language type."
[
]












//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Function Brushes
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// func_dustcloud [common]
//====================================================================================================================

@SolidClass base(Targetname,BModelParticleSpawner) = func_dustcloud : 
	"A brush entity that spawns a translucent dust cloud within its volume."
[
	Alpha(integer) : "Alpha" : 30

	SizeMin(string) : "Minimum Particle Size" : 100
	SizeMax(string) : "Maximum Particle Size" : 200
]



//====================================================================================================================
// func_platrot [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: Angles,Shadow (included)

@BaseClass = BasePlat
[
 	input Toggle(void) : "Toggles the platform's state."
	input GoUp(void) : "Tells the platform to go up."
	input GoDown(void) : "Tells the platform to go down."
]

@SolidClass base(Targetname,Parentname,Origin,RenderFields,BasePlat) = func_platrot : 
	"A brush entity that moves vertically, and can rotate while doing so." 
[
	spawnflags(Flags) =
	[
		1: "Toggle" : 1
		64: "X Axis" : 0
		128: "Y Axis" : 0
	]
	noise1(sound) : "Movement Sound" : : "The sound to play when the brush moves."
	noise2(sound) : "Stop Sound" : : "The sound to play when the brush stops moving."
	speed(integer) : "Speed of Rotation" : 50 : "Speed at which the brush rotates, in degrees per second."
	height(integer) : "Travel Altitude" : 0 : "The vertical distance from the starting position that this platform moves. If negative, the platform will lower."
	rotation(integer) : "Spin amount" : 0 : "The amount this platform should rotate as it moves, in degrees."
	_minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush."
]



//====================================================================================================================
// func_rot_button [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@SolidClass base(Targetname,Parentname,Origin,Global,Button,EnableDisable) = func_rot_button : 
	"A brush entity that's designed to be used for a rotating player-useable button. When used by the player, it rotates to a pressed position."
[
	master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this button cannot be used."
	speed(integer) : "Speed" : 50 : "The speed that the button rotates, in degrees per second."
	health(integer) : "Health (Obsolete)" : 0 : "Legacy method of specifying whether or not the button can be shot to activate it. Use the 'Damage Activates' spawnflag instead."
	sounds(choices) : "Sounds" : 21 = 
	[
		0: "None (Silent)"
		21: "Squeaky"
		22: "Squeaky Pneumatic"
		23: "Ratchet Groan"
		24: "Clean Ratchet"
		25: "Gas Clunk"
	]
	wait(integer) : "Delay Before Reset (-1 stay)" : 3 : "Amount of time, in seconds, after the button has been pressed before it returns to the starting position. Once it has returned, it can be used again. If the value is set to -1, the button never returns."
	distance(integer) : "Distance (deg)" : 90 : "The amount, in degrees, that the button should rotate when it's pressed."
	// TODO: move spawnflags into Button base class?
	spawnflags(flags) =
	[
		1 : "Not solid" : 0
		2 : "Reverse Dir" : 0
		32: "Toggle" : 0
		64: "X Axis" : 0
		128: "Y Axis" : 0
		256: "Touch Activates": 0
		512: "Damage Activates": 0
		1024: "Use Activates": 0
		2048: "Starts locked" : 0
	]
	_minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush."
]



//====================================================================================================================
// momentary_rot_button [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@SolidClass base(Targetname,Parentname,Origin,RenderFields) = momentary_rot_button : 
	"A brush entity that's designed to be used for rotating wheels, where the player can rotate them to arbitrary positions before stopping."
[
	speed(integer) : "Speed (deg/sec)" : 50 : "The amount, in degrees, that the wheel turns per second."
	master(string) : "Master (Obsolete)" : : "Legacy support: The name of a master entity. If the master hasn't been activated, this button cannot be used."
	sounds(choices) : "Sounds" : 0 = 
	[
		0: "None"
		1: "Big zap & Warmup"
		2: "Access Denied"
		3: "Access Granted"
		4: "Quick Combolock"
		5: "Power Deadbolt 1"
		6: "Power Deadbolt 2"
		7: "Plunger"
		8: "Small zap"
		9: "Keycard Sound"
		21: "Squeaky"
		22: "Squeaky Pneumatic"
		23: "Ratchet Groan"
		24: "Clean Ratchet"
		25: "Gas Clunk"
	]
	distance(integer) : "Distance" : 90 : "The maximum amount, in degrees, that the wheel is allowed to rotate."
	returnspeed(integer) : "Auto-return speed" : 0 : "If the 'Toggle' spawnflag is not set, the speed at which the wheel auto-returns when left alone, in degrees per second."
	spawnflags(flags) =
	[
		1: "Not Solid" : 1
		32: "Toggle (Disable Auto Return)" : 1
		64: "X Axis" : 0
		128: "Y Axis" : 0
		1024: "Use Activates" : 1
		2048: "Starts locked" : 0
		8192: "Jiggle when used while locked" : 0
	]
	_minlight(string) : "Minimum Light Level" : : "The minimum level of ambient light that hits this brush."
	startposition(float) : "Start Position" : 0 : "Postion when spawned. The value is a range between 0.0 and 1.0, where 0 is the unrotated position and 1 is the rotated position + 'Distance'."
	startdirection(choices) : "Start Direction" : "Forward" =
	[
		-1 : "Forward"		 // Reverses upon USE, so are
		1 : "Backward"	 // reversed here.
	]

	// Inputs
	input Lock(void) : "Lock the button, preventing it from functioning."
	input Unlock(void) : "Unlock the button, allowing it to function."
	input SetPosition(string) : "Move to a position. The parameter must be a value between 0 and 1, where 0 is the unrotated position and 1 is the rotated position + 'Distance'."

	// Outputs
	output Position(integer)   : "Fired whenever the button moves. The output is the position of button from 0 to 1, where 0 is the unrotated position and 1 is the rotated position + 'Distance'."
	output OnPressed(integer)  : "Fired when the button is first pressed."
	output OnUnpressed(integer): "Fired when the button is first released from being pressed."
	output OnFullyClosed(void) : "Fired when the button has reached position 1, the rotated position + 'Distance'."
	output OnFullyOpen(void)   : "Fired when the button has reached position 0, the unrotated starting position."
]















//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Nodes
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// info_node_air [common]
//====================================================================================================================

@PointClass base(Node) studio("models/editor/air_node.mdl") color(232 171 8)  = info_node_air :
	"A navigation node for flying NPCs. Air navigation nodes are baked into the nodegraph so that NPCs can move " +
	"to them. Air nodes do not fall to the ground when they spawn."
[
	nodeheight(integer) : "NodeHeight"  : 0
]


//====================================================================================================================
// info_node_air_hint [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@PointClass base(Targetname,HintNode) studio("models/editor/air_node_hint.mdl") color(232 171 8) line(255 255 255, nodeid, TargetNode) = info_node_air_hint :
	"A navigation node for flying NPCs that includes some context information for NPCs that are interested in it. The hint might " +
	"indicate a window that could be looked into, or an item of interest that could be commented on. Many hint nodes are NPC-specific, " +
	"so it's helpful to use naming conventions like 'Crow: Fly to point' in the hint choices list. The angles of a hint node indicate what direction " +
	"the NPC should face to perform the hint behavior."

[
	nodeheight(integer) : "NodeHeight"  : 0
]


//====================================================================================================================
// info_node_hint [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@PointClass base(Targetname,HintNode) studio("models/editor/ground_node_hint.mdl") color(232 219 8) = info_node_hint :
	"A navigation node for ground moving NPCs that includes some context information for NPCs that are interested in it. The hint might " +
	"indicate a window that could be looked out of, or an item of interest that could be commented on. Many hint nodes are NPC-specific, " +
	"so it's helpful to use naming conventions like 'Crow: Fly to point' in the hint choices list. The angles of a hint node indicate what direction " +
	"the NPC should face to perform the hint behavior.\n\n" +
	"It's important to understand the distinction between scripts, such as scripted_sequence and scripted_schedule, and info_hint entities. Scripts summon " +
	"NPCs to specific cue points to play their parts, while hints provide context information to the AI that they use to perform their " +
	"behaviors. Hints require code support in the NPC, while scripts are generic and may require only animations to play. Use a hint if the behavior is driven " +
	"by the AI, use a script if the behavior is driven by the map."

[
]










//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Logic Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// logic_branch [common]
//====================================================================================================================

@PointClass base(Targetname) iconsprite("editor/logic_branch.vmt") = logic_branch :
	"Tests a boolean value and fires an output based on whether the value is true or false. " +
	"Use this entity to branch between two potential sets of events."
[
	// Keys
	InitialValue(integer) : "Initial value" : : "Initial value for the boolean value (0 or 1)."
	
	// Inputs
	input SetValue(bool) : "Sets the boolean value without performing the comparison. Use this to hold a value for a future test."
	input SetValueTest(bool) : "Sets the boolean value and tests it, firing OnTrue or OnFalse based on the value."
	input Test(void) : "Tests the input value and fires OnTrue or OnFalse based on the value."
	
	// Outputs
	output OnTrue(bool) : "Fires when the input value is true (nonzero)." 
	output OnFalse(bool) : "Fires when the input value is false (zero)." 
]


//====================================================================================================================
// logic_compare [common]
//====================================================================================================================

@PointClass base(Targetname) iconsprite("editor/logic_compare.vmt") = logic_compare :
	"Compares an input value to another value. " +
	"If the input value is less than the compare value, the OnLessThan output is fired with the input value. " +
	"If the input value is equal to the compare value, the OnEqualTo output is fired with the input value. " +	
	"If the input value is greater than the compare value, the OnGreaterThan output is fired with the input value."
[
	// Keys
	InitialValue(integer) : "Initial value" : : "Initial value for the input value."
	CompareValue(integer) : "Compare value" : : "The value to compare against."
	
	// Inputs
	input SetValue(float) : "Sets the value that will be compared against the compare value."
	input SetValueCompare(float) : "Sets the value that will be compared against the compare value and performs the comparison."
	input SetCompareValue(float) : "Sets the compare value."
	input Compare(void) : "Forces a compare of the input value with the compare value."
	
	// Outputs
	output OnLessThan(float) : "Fires when the input value is less than the compare value. Sends the input value as data." 
	output OnEqualTo(float) : "Fires when the input value is equal to the compare value. Sends the input value as data." 
	output OnNotEqualTo(float) : "Fires when the input value is different from the compare value. Sends the input value as data." 
	output OnGreaterThan(float) : "Fires when the input value is greater than the compare value. Sends the input value as data."
]


//====================================================================================================================
// logic_lineto [common]
//====================================================================================================================

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = logic_lineto : 
	"An entity that calculates and outputs a vector from one entity to another." 
[
	source(target_destination) : "Start entity" : : "Name of the entity the line should start from."
	target(target_destination) : "End entity" : : "Name of the entity that line should end at."
	
	// Outputs
	output Line(vector) : "Fired when the vector, from the start entity to the end entity, changes. Passes along the vector as a parameter."
]


//====================================================================================================================
// logic_multicompare [common]
//====================================================================================================================

@PointClass base(Targetname) iconsprite("editor/logic_multicompare.vmt") = logic_multicompare :
	"Compares a set of inputs to each other. If they are all the same, fires an OnEqual output. " +
	"If any are different, fires the OnNotEqual output."
[
	// keys
	IntegerValue(integer) : "Integer Value (optional)"
	ShouldComparetoValue(choices) : "Should use Integer Value" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	// Inputs
	input InputValue(integer) : "Input value"
	input CompareValues(void) : "Compares the values and fires appropriate outputs"

	// Outputs
	output OnEqual(void) : "Fires if the values are equal"
	output OnNotEqual(void) : "Fires if the values are not equal"
]



















//*******************************************************************************************************************
//*******************************************************************************************************************
//
// NPCs
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// CLASS: BaseNPC [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Angles,Shadow (included)

@BaseClass base(Targetname,RenderFields,DamageFilter,ResponseContext) color(0 200 200) = BaseNPC
[
	target(target_destination) : "Target path corner" : : "If set, the name of a path corner entity that this NPC will walk to after spawning."
	squadname(String) : "Squad Name"
	hintgroup(String) : "Hint Group"
	hintlimiting(choices) : "Hint Limit Nav" : 0 : "Limits NPC to using specified hint group for navigation requests, does not limit local navigation." =
	[
		0 : "No"
		1 : "Yes"
	]

	spawnflags(Flags) = 
	[
		1 : "Wait Till Seen" : 0
		2 : "Gag" : 0
		4 : "Fall to ground" : 1
		8 : "Drop Healthkit" : 0
		16 : "Efficient" : 0
		128: "Wait For Script" : 0
		256: "Long Visibility/Shoot" : 0
		512: "Fade Corpse" : 0
		1024: "Think outside PVS" : 0
		2048: "Template NPC (used by npc_maker, will not spawn)" : 0
	]

	physdamagescale(float) : "Physics Impact Damage Scale" : "1.0" : "Scales damage energy when this character is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility."
	output OnDamaged(void) : "This NPC takes damage"
	output OnDeath(void) : "This NPC is killed" 
	output OnHalfHealth(void) : "This NPC reaches half of its maximum health"
	output OnHearWorld(void) : "This NPC hears a sound (other than combat or the player)"
	output OnHearPlayer(void) : "This NPC hears the player"
	output OnHearCombat(void) : "This NPC hears combat sounds"

	output OnFoundEnemy(string) : "Fired when establish line of sight to enemy (output's entity)"
	output OnLostEnemyLOS(void) : "Fired when lost line of sight to enemy"
	output OnLostEnemy(void) : "Fired when lost enemy"

	output OnFoundPlayer(string) : "Fired when establish line of sight to player (output's player entity)"
	output OnLostPlayerLOS(void) : "Fired when lost line of sight to player"
	output OnLostPlayer(void) : "Fired when lost player"

	// Inputs
	input SetRelationship(string) : "Changes this entity's relationship with another entity or class"
	input SetHealth(integer) : "Set this entity's health"
	input SetBodyGroup(integer) : "HACK: Sets this NPC's body group (from 0 - n). You'd better know what you are doing!"
	input physdamagescale(float) : "Sets the value that scales damage energy when this character is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility."
	input Ignite(void) : "Ignite, burst into flames"
]



//===================================================================================================================
// monster_generic [common, HL2-based]
//===================================================================================================================

@PointClass base(BaseNPC,RenderFields) studio() = monster_generic : "Generic Script NPC"
[
	spawnflags(Flags) = 
	[
		4 : "Not solid"	: 0
	]
	model(studio) : "Model"
	body(Integer) : "Body" : 0
]
	
	

//===================================================================================================================
// npc_bullseye [common]
//===================================================================================================================

@NPCClass base(Parentname, BaseNPC) iconsprite("editor/bullseye.vmt") color(255 0 0) = npc_bullseye : "Bullseye"
[
	// Unlike other NPCs level designers are allowed to set the health on bullseyes
	health(Integer) : "Health" : 35

	spawnflags(Flags) = 
	[
		65536   : "Not Solid" : 0
		131072  : "Take No Damage" : 0
		262144  : "Enemy Damage Only" : 0
		524288  : "Bleed" : 0
		1048576 : "Perfect Accuracy" : 0
	]
	output OnTargeted(void) : "Fires when targeted"
	output OnReleased(void) : "Fires when no longer targeted"
]


















//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Physics Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// phys_keepupright [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@PointClass base(Targetname) = phys_keepupright : "A controller that tries to keep an entity facing a particular direction."
[
	spawnflags(flags) =
	[
		1: "Start inactive" : 0
	]

	attach1(target_destination) : "Target Entity" : "" : "The entity to align to the desired angles."
	angularlimit(float) : "Angular Limit" : "15" : "The maximum angular velocity that this controller can compensate for, in degrees per second."

	// Inputs
	input TurnOn(void) : "Enable the controller."
	input TurnOff(void) : "Disable the controller." 
]



//===================================================================================================================
// phys_motor [common]
//===================================================================================================================

@PointClass base(Targetname) halfgridsnap size(-8 -8 -8, 8 8 8) = phys_motor : 
	"An entity that tries to spin a target entity at a particular speed."
[
	speed(string) : "Rotation Speed" : "0" : "Angular speed (units are degress/second)"
	spinup(string) : "Spin up time" : "1" : "spin up time in seconds (also affects the rate at which speed changes happen)"
	inertiafactor(float) : "System Interia Scale" : "1.0" : "Make this larger if the object being driven is constrained to a set of heavier objects."
	axis(vecline) : "Rotation Axis" : ""

	spawnflags(flags) =
	[
		// starts on by default
		1: "Start On" : 1
		// Disable world collisions on hinges
		2: "No world collision" : 0
		// motor also acts as a hinge constraining the object to this axis
		4: "Hinge Object" : 1
		// Maintain local relationship with the attached object (NOT WORKING YET)
//		8: "Orient Locally" : 1
	]
	attach1(target_destination) : "Attached Object" : "" : "Object to apply the force to"

	input SetSpeed(float) : "Sets target speed"
	input TurnOn(void) : "Turns motor on"
	input TurnOff(void) : "Turns motor off"
]
	
	
	
//===================================================================================================================
// phys_pulleyconstraint [common]
//===================================================================================================================

@PointClass base(TwoObjectPhysics) studio("models/editor/axis_helper.mdl") = phys_pulleyconstraint : 
	"A constraint that is essentially two length constraints and two points. Imagine it as a virtual rope connected to two objects, each suspended from a pulley above them."+
	"The constraint keeps the sum of the distances between the pulley points and their suspended objects constant."
[
	addlength(float) : "Additional Length" : "0" : "Add (or subtract) this amount to the rest length of the pulley rope."
	gearratio(float) : "Pulley Gear Ratio" : "1" : "Add (or subtract) this amount to the rest length of the pulley rope."
	position2(vecline) : "Pulley Position 2" : : "The position of the pulley for Entity 2. The pulley for Entity 1 is the origin of this constraint entity. Entity 1 is always suspended from pulley point 1, and Entity 2 is always suspended from pulley point 2."
	spawnflags(flags) =
	[
		1: "No Collision until break" : 1
		2: "Keep Rigid" : 0
	]
]	
	
		
	
//===================================================================================================================
// phys_slideconstraint [common]
//===================================================================================================================

@PointClass halfgridsnap base(TwoObjectPhysics) studio("models/editor/axis_helper.mdl") = phys_slideconstraint : 
	"A constraint that constrains an entity along a line segment."
[
	spawnflags(flags) =
	[
		1: "No Collision until break" : 1
		2: "Limit Endpoints" : 0
	]
	slideaxis(vecline) : "Sliding Axis"
	slidefriction(float) : "Friction" : "0" : "Resistance/friction in the constraint"
]
	
	
	
//===================================================================================================================
// phys_spring [common]
//===================================================================================================================

@PointClass halfgridsnap base(Targetname) = phys_spring : 
	"A physically simulated spring. "+
	"'Length' is what's known as the 'natural spring length'. This is how long the spring would "+
	"be if it was at rest (nothing hanging on it or attached). When you attach something to the "+
	"spring, it will stretch longer than its 'natural length'. The amount of stretch is "+
	"determined by the 'Sprint Constant'. The larger the spring constant the less stretch the spring."
[
	spawnflags(flags) =
	[
		1 : "Force only on stretch" : 0
	]

	attach1(target_destination) : "Entity 1" : ""
	attach2(target_destination) : "Entity 2" : ""

	springaxis(vecline) : "Spring Axis" : "" : "Use the helper. Drag it out to match the virtual spring."
	length(string) : "Spring Length" : "0" : "How long the spring would be if it was at rest (nothing hanging on it or attached). 0 means the length of the brush."
	constant(string) : "Spring Constant" : "50" : "Stiffness of the spring.  The larger the number the less the spring will stretch."
	damping(string) : "Damping Constant" : "2.0" : "How much energy the spring loses.  The larger the number, the less bouncy the spring."
	relativedamping(string) : "Relative Damping Constant" : "0.1" : "The amount of energy the spring loses proportional to the relative velocity of the two objects the spring is attached to."
	// UNDONE: add max tension and what event to fire when it breaks
	breaklength(string) : "Break on Length" : "0" : "If the spring's length ever exceeds this length, the spring breaks."

	// Inputs
	input SetSpringConstant(float) : "Set the Spring Constant."
	input SetSpringLength(float) : "Set the Spring Length."
	input SetSpringDamping(float) : "Set the Spring Damping."
]
	
	
	
//===================================================================================================================
// phys_torque [common]
//===================================================================================================================
	
@PointClass halfgridsnap base(ForceController) = phys_torque : 
	"An angular thruster. Use it to apply angular force to an entity."
[
	// Angular acceleration (units are degress/s^2)
	force(string) : "Angular Acceleration" : "0"
	axis(vecline) : "Rotation Axis" : ""
]

	
	
//===================================================================================================================
// physics_cannister [common]
//===================================================================================================================

@PointClass base(Targetname) sphere(expradius) studioprop() = physics_cannister : 
	"A physically simulated gas cannister that can have its cap shot off, at which point gas will start escaping and cause the cannister to fly around. If it takes enough damage, it will explode."
[
	model(studio) : "World model" : "models/fire_equipment/w_weldtank.mdl" : "Model to use for render/physics"
	spawnflags(flags) = 
	[
		1 : "Start Asleep" : 0
		2 : "Explodes" : 1
	]

	expdamage(string) : "Explosion Damage" : "200.0" : "Magnitude of radius damage to do upon explosion"
	expradius(string) : "Explosion Radius" : "250.0" : "Radius of the explosion damage"
	health(integer) : "Health" : 25 : "How much damage the cannister takes before exploding."

	thrust(string) : "Thrust" : "3000.0" : "Amount of thrust"
	fuel(string) : "Fuel Seconds" : "12.0" : "Time that thrust lasts"
	rendercolor(color255) : "Smoke Color (R G B)" : "255 255 255"
	renderamt(integer) : "Smoke Alpha (0 - 255)" : 128
	gassound(sound) : "Thruster Sound" : "ambient/objects/cannister_loop.wav"

	// input
	input Activate(string) : "Starts the thruster."
	input Deactivate(string) : "Stops the thruster."
	input Explode(string) : "Triggers the explosion."
	input Wake(void) : "Wakes up the cannister if it is sleeping."

	// outputs
	output OnActivate(void) : "Fired when the cannister is activated."
]
	
	
	
	
	
	
	
	
	
	
	
	
	
//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Point Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// player_loadsaved [common, HL2-based]
//===================================================================================================================

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" 
[
	duration(string) : "Fade Duration (seconds)" : "2"
	holdtime(string) : "Hold Fade (seconds)" : "0"
	renderamt(integer) : "Fade Alpha" : 255
	rendercolor(color255) : "Fade Color (R G B)" : "0 0 0"
	loadtime(string) : "Reload delay" : "0"

	input Reload(void) : "Ends this game and reloads"
]

	
	
	
//===================================================================================================================
// player_weaponstrip [common]
//===================================================================================================================

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons"
[
	input Strip(void) : "Strip player's weapons"
]

	
	
	
//===================================================================================================================
// point_anglesensor [common]
//===================================================================================================================

@PointClass base(Targetname,Parentname,EnableDisable) = point_anglesensor :
	"An entity that detects if another entity points in a given direction for a period of time."
[
	target(target_destination) : "Target entity name" : : "Name of the entity whose angles will be sensed."
	lookatname(target_destination) : "Look at entity"
	duration(float) : "Duration in seconds"
	tolerance(integer) : "Tolerance in degrees"

	// Inputs
	input Toggle(void) : "Toggles the sensor between enabled and disabled."
	input Test(void) : "Checks to see if the target entity is facing the lookat entity within the specified tolerance, " +
		"firing either the OnFacingLookat or OnNotFacingLookat output based on the result."
	
	// Outputs
	output TargetDir(vector) : "Fired when the forward direction of the target entity changes. Passes the new forward direction as a parameter."
	output OnFacingLookat(void) : "Fired when the target entity points at the lookat entity for more than the " +
		"specified duration."
	output OnNotFacingLookat(void) : "Fires in response to a CheckFacing input when the target entity is not " +
		"pointing at the lookat entity."
]
	
	
	
//===================================================================================================================
// point_hurt [common]
//===================================================================================================================

@PointClass base(Targetname) sphere(DamageRadius) = point_hurt :
	"An entity that does damage to all entities in a radius around itself, with a specified delay." +
	"If 'Target Entity' is specified, the damage is only done to that entity."
[
	DamageTarget(string) : "Target Entity" : "" : "If specified, only this entity will take damage. Otherwise, all entities within the Radius will take damage."
	
	DamageRadius(float) : "Radius" : 256 : "All entities within this radius of this entity will take damage. If a 'Target Entity' is specified, only that entity will take damage."
	Damage(integer) : "Damage" : 5 : "Damage done to all affected entities each time this entity fires."
	DamageDelay(float) : "Delay" : 1 : "Delay between refires, in seconds."
	
	DamageType(choices) : "Damage Type" : 0 : "Type of damage to inflict on entities damaged." =
	[
		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"
	]

	// Inputs
	input Hurt(void) : "Force a single fire, damaging either the Target Entity or all entities within the radius."
	input TurnOn(void) : "Enable this entity. It will start damaging entities everytime it fires, and refire based upon the specified Delay."
	input TurnOff(void) : "Disable this entity. It will stop damaging entities."
	input Toggle(void) : "Toggle this entity between On/Off state."
]
	


	
	
	
	








//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Triggers
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// trigger_transition [common]
//===================================================================================================================

@SolidClass base(Targetname) = trigger_transition : 
	"A volume that's used to control which entities go through the level transition. Create one or more trigger_transitions and "+
	"give them the same name as the changelevel landmark. Any entities within the trigger_transition(s) will go to the next map."+
	"See trigger_changelevel for more info."
[
]



//===================================================================================================================
// trigger_proximity [common]
//===================================================================================================================

@SolidClass base(Trigger) = trigger_proximity :
	"Measures the distance of the player within the trigger volume from a given point (and within " +
	"a given radius). The NearestPlayerDistance output will be 0 when the player is at the center point, " +
	"and 1 when the player is at the radius."
[
	measuretarget(target_destination) : "Point to Measure From" : : "The name of a target entity who's origin is the point to measure the player's distance from."
	radius(string) : "Radius to measure within" : 256 : "The radius to which the distance should be mapped. If the player is outside the radius he will be ignored."
	
	// Outputs
	output NearestEntityDistance(integer) : "Fired continuously when entities are touching the trigger volume. The output parameter is the distance from the "+
						"Point to Measure From to the nearest entity that passed the trigger filters. The distance is mapped to the radius distance, "+
						"so it will be 0 when the entity is on the point, and 1 when the entity is at the edge of the radius."
]


//===================================================================================================================
// trigger_wind [common]
//===================================================================================================================

@SolidClass base(Trigger) = trigger_wind : 
	"A trigger volume that pushes physics objects that touch it."
[
	Speed(integer) : "Speed" : 200   : "The baseline for how hard the wind blows."
	SpeedNoise(integer) : "Speed Noise" : 0 : "Noise added to wind speed +/-"
	DirectionNoise(integer) : "Direction Noise" : 10 : "Noise added to wind direction."
	HoldTime(integer) : "Hold Time" : 0 : "Baseline for how long to wait before changing wind."
	HoldNoise(integer) : "Hold Noise" : 0 : "Noise added to how long to wait before changing wind."

	// Inputs
	input SetSpeed(integer) : "Set the baseline for how hard the wind blows."
]











//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Misc Point Entities
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//====================================================================================================================
// info_null [common]
//====================================================================================================================

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = info_null : 
	"An entity that's immediately removed on spawning. Useful as a spotlight target."
[
]


//====================================================================================================================
// keyframe_track [common]
//====================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@KeyFrameClass base(Targetname,Parentname,KeyFrame) size(-6 -6 -6, 6 6 6) color(255 200 0) keyframe() = keyframe_track : 
	"Animation KeyFrame"
[
]


//====================================================================================================================
// move_keyframed [common]
//====================================================================================================================

@MoveClass base(Targetname,Parentname,KeyFrame,Mover) size(-8 -8 -8, 8 8 8) color(255 170 0) animator() = move_keyframed : 
	"Keyframed Move Behavior"
[
]


//====================================================================================================================
// math_colorblend [common]
//====================================================================================================================

@PointClass base(Targetname) = math_colorblend :
	"Used to create a blend between two colors for controlling the color of another entity."
[
	spawnflags(flags) = 
	[
		1 : "Ignore out of range input values" : 1
	]

	inmin(integer) : "Minimum Valid Input Value" : 0 : "Input values below this value will be ignored."
	inmax(integer) : "Maximum Valid Input Value" : 1 : "Input values above this value will be ignored."
	colormin(color255) : "Output RGB color when input is min." : "0 0 0" : "When the input value is equal to 'Minimum Valid Input Value', this is the output RGB color."
	colormax(color255) : "Output RGB color when input is max." : "255 255 255" : "When the input value is equal to 'Maximum Valid Input Value', this is the output RGB color."

	// Inputs
	input InValue(float) : "Input value and fire the output with the remapped value."
	
	// Outputs
	output OutColor(color255) : "Fired when the InValue input is received, with the remapped RGB color as the parameter."
]


//====================================================================================================================
// math_remap [common]
//====================================================================================================================

@PointClass base(Targetname,EnableDisable) = math_remap :
	"An entity that remaps a range of input values to a given range of output values."
[
	spawnflags(flags) = 
	[
		1 : "Ignore out of range input values" : 1
		2 : "Clamp output to output range" : 2
	]

	in1(integer) : "Minimum Valid Input Value" : 0 : "Input values below this value will be ignored."
	in2(integer) : "Maximum Valid Input Value" : 1 : "Input values above this value will be ignored."
	out1(integer) : "Output Value When Input Is Min." : : "When the input value is equal to 'Minimum Valid Input Value', this is the output value."
	out2(integer) : "Output Value When Input Is Max." : : "When the input value is equal to 'Maximum Valid Input Value', this is the output value."

	// Inputs
	input InValue(float) : "Input value and fire the output with the remapped value."
	
	// Outputs
	output OutValue(float) : "Fired when the InValue input is received, with the remapped input value as the parameter."
]


//===================================================================================================================
// path_corner [common, HL2-based]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@PointClass base(Targetname) size(16 16 16) line(255 255 255, targetname, target) color(247 181 82) = path_corner : "Generic path point"
[
	spawnflags(Flags) =
	[
		1: "Wait for retrigger" : 0
		2: "Teleport to THIS path_corner" : 0
	]
	target(target_destination) : "Next stop target"
	wait(integer) : "Wait here (secs)" : 0
	speed(integer) : "New Train Speed" : 0
	yaw_speed(integer) : "New Train rot. Speed" : 0

	// Inputs 
	input SetNextPathCorner(string) : "Sets next pathcorner"

	// Outputs
	output OnPass(void) : "Fires when a path follower passes this point"
]


//===================================================================================================================
// path_corner_crash [common, HL2-based]
//===================================================================================================================

@PointClass base(Targetname) size(16 16 16) color(255 0 0) = path_corner_crash : "Flying Object Crash Path"
[
	target(target_destination) : "Next stop target"
]

	
//===================================================================================================================
// scripted_target [common, HL2-based]
//===================================================================================================================

@PointClass base(Targetname,Parentname) iconsprite("editor/info_target.vmt")  = scripted_target : "Scripted Target"
[
	StartDisabled(choices) : "Start Disabled" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]

	m_iszEntity(npcclass) : "Target NPC"
	m_flRadius(integer) : "Search Radius (0=everywhere)" : 0 : "Radius to search within for an NPC to use. 0 searches everywhere."

	MoveSpeed(integer) : "Move Speed" : 5			// How quickly should target move between scripted targets
	PauseDuration(integer) : "Pause Duration" : 0		// How long should target pause at scripted target
	EffectDuration(integer) : "Effect Duration" : 2		// How long should any associated effect last

	target(target_destination) : "Next Target"		// Next scripted target

	// Inputs
	input Enable(void) : "Enable this entity"
	input Disable(void) : "Disable this entity"

	// Outputs
	output AtTarget(void) : "Fires when NPC reaches this target"
	output LeaveTarget(void) : "Fires when NPC leaves this target"
]


//===================================================================================================================
// vgui_screen [common]
//===================================================================================================================
// VTMB-adaptation:
//  removed: Angles (included)

@BaseClass base(Targetname,Parentname) = vgui_screen_base
[
	panelname(string) : "Panel Name"
	overlaymaterial(string) : "Overlay Material" : "" : "Name of a material to overlay over the top of the VGUI screen. NOTE: This material must write Z for the VGUI screen to work."
	width(integer) : "Panel Width in World" : 32 : "Width of the panel in units."
	height(integer) : "Panel Height in World" : 32 : "Height of the panel in units."

	// Inputs
	input SetActive(void) : "Make the vgui screen visible."
	input SetInactive(void) : "Make the vgui screen invisible."
]

@PointClass base(vgui_screen_base) size(-4 -4 -4, 4 4 4) = vgui_screen : 
	"A VGUI screen. Useful for in-world monitors." 
[
]






































//-------------------------------------------------------------------------------------------------------------------
// NOTE3: Entities below are VtMB-specific. Some of it may not work properly...
//-------------------------------------------------------------------------------------------------------------------


//*******************************************************************************************************************
//*******************************************************************************************************************
//
// NPCs
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// npc_generic [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_generic : 
	"[VTMB] Generic scripted NPC. Not used on original maps."
[
	model(studio) : "Model" : "models/character/npc/common/citizen/male2/male_citizen_2.mdl"
]


//===================================================================================================================
// Clan-specific NPCs [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VGangrel : "[VTMB] Generic Gangrel-clan NPC. Not used on original maps."		[ model(studio) : "Model" : "models/character/pc/male/gangrel/armor_0/gangrel_male_armor_0.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VMalkavian : "[VTMB] Generic Malkavian-clan NPC. Not used on original maps."	[ model(studio) : "Model" : "models/character/pc/male/malkavian/armor_0/malkavian_male_armor_0.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VNosferatu : "[VTMB] Generic Nosferatu-clan NPC. Not used on original maps."	[ model(studio) : "Model" : "models/character/pc/male/nosferatu/armor_0/nosferatu.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VToreador : "[VTMB] Generic Toreador-clan NPC. Not used on original maps."		[ model(studio) : "Model" : "models/character/pc/male/toreador/armor_0/toreador_male_armor_0.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VTremere : "[VTMB] Generic Tremere-clan NPC. Not used on original maps."		[ model(studio) : "Model" : "models/character/pc/male/tremere/armor_0/tremere_male_armor_0.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VVentrue : "[VTMB] Generic Ventrue-clan NPC. Not used on original maps."		[ model(studio) : "Model" : "models/character/pc/male/ventrue/armor_0/ventrue_male_armor_0.mdl" ]
@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VHunter : "[VTMB] Generic Hunter-clan NPC. Not used on original maps."			[ model(studio) : "Model" : "models/character/pc/male/average_vampire_hunter/average_vampire_hunter_pc.mdl" ]









//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Animal NPCs
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// npc_VAnimal [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VAnimal : 
	"[VTMB] Animal NPC. Not used on original maps."
[
	model(studio) : "Model" : "models/character/monster/cat/cat.mdl"
	stattemplate(string) : "NPC Stat Template" : "Rat" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics."	

	// npc-specific
	detection_distance(integer) : "Detection Distance" : 256 : "Defines distance rat can wind the player."
	friendship_level(integer) : "Friendship Level" : 1 : "The level of rat's friendliness in relation to player."
	must_detect(choices) : "Must Detect [-?]" : "1" : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	fright_distance(integer) : "Fright Distance" : 128 : "Distance that rat will frights the player."
	fright_duration(float) : "Fright Duration" : "5.0" : "Duration of rat's fright when it nearby the player."
	conflict_range(integer) : "Conflict Range" : 100 : "[VTMB] Unknown yet..."
	warn_range(integer) : "Warn Range" : 200 : "[VTMB] Unknown yet..."
]
	

//===================================================================================================================
// npc_VDog [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VDog : 
	"[VTMB] Dog NPC. Not used on original maps."
[
	model(studio) : "Model" : "models/character/monster/dog/feral/dog_feral.mdl"
	stattemplate(string) : "NPC Stat Template" : "Rat" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics."	

	// npc-specific
	detection_distance(integer) : "Detection Distance" : 256 : "Defines distance rat can wind the player."
	friendship_level(integer) : "Friendship Level" : 1 : "The level of rat's friendliness in relation to player."
	must_detect(choices) : "Must Detect [-?]" : "1" : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	fright_distance(integer) : "Fright Distance" : 128 : "Distance that rat will frights the player."
	fright_duration(float) : "Fright Duration" : "5.0" : "Duration of rat's fright when it nearby the player."
	conflict_range(integer) : "Conflict Range" : 100 : "[VTMB] Unknown yet..."
	warn_range(integer) : "Warn Range" : 200 : "[VTMB] Unknown yet..."
]
	

//===================================================================================================================
// npc_VBatSwarm [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VBatSwarm : 
	"[VTMB] Bat swarm. Not used on original maps."
[
	model(studio) : "Model" : "models/character/monster/animalism_bat/animalism_bat.mdl"

	// npc-specific
	detection_distance(integer) : "Detection Distance" : 256 : "Defines distance rat can wind the player."
	friendship_level(integer) : "Friendship Level" : 1 : "The level of rat's friendliness in relation to player."
	must_detect(choices) : "Must Detect [-?]" : "1" : "[VTMB] Unknown yet..." =
	[
		0 : "No"
		1 : "Yes"
	]
	fright_distance(integer) : "Fright Distance" : 128 : "Distance that rat will frights the player."
	fright_duration(float) : "Fright Duration" : "5.0" : "Duration of rat's fright when it nearby the player."
	conflict_range(integer) : "Conflict Range" : 100 : "[VTMB] Unknown yet..."
	warn_range(integer) : "Warn Range" : 200 : "[VTMB] Unknown yet..."
]








//*******************************************************************************************************************
//*******************************************************************************************************************
//
// Monster NPCs
//
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// npc_VStalker [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VStalker : 
	"[VTMB] Stalker NPC. Not used on original maps."
[
	model(studio) : "Model" : "models/character/npc/unique/Malkavian_Mansion/Stalker/Stalker.mdl"
	additionalequipment(choices) : "Base Equipment" : "item_w_knife" : "This is the weapon that NPC will basically use." =
	[
		"0" : "Nothing"
		"item_w_bush_hook" : "item_w_bush_hook"
		"item_w_crossbow_flaming" : "item_w_crossbow_flaming"
		"item_w_deserteagle" : "item_w_deserteagle"
		"item_w_fireaxe" : "item_w_fireaxe"
		"item_w_fists" : "item_w_fists"
		"item_w_flamethrower" : "item_w_flamethrower"
		"item_w_katana" : "item_w_katana"
		"item_w_knife" : "item_w_knife"
		"item_w_occultblade" : "item_w_occultblade"
	]
	stattemplate(string) : "NPC Stat Template" : "MalkMansionCroucher" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics."	
	player_reaction(choices) : "Reaction to Player" : "D_HT 5" : "Type of NPC's relationship with player. Use <str_type> <int_degree> format,\n\n"+
		"  where <type> is:\n"+
		"\tD_LI [0-10] --> Likes Player (Will Defend)\n"+
		"\tD_NU [0-10] --> Neutral (Default)\n"+
		"\tD_HT [0-10] --> Hates Player (Will Attack)" =
	[
		"D_LI 0" : "D_LI 0"
		"D_NU 0" : "D_NU 0"
		"D_HT 0" : "D_HT 0"
		"D_HT 5" : "D_HT 5"
	]

	// npc-specific
	disturbed(choices) : "Disturbed" : 0 : "Set this NPC disturbing state." =
	[
		0 : "No"
		1 : "Yes"
	]
	on_fire(choices) : "On Fire [-?]" : 0 : "Set this NPC burning state." =
	[
		0 : "No"
		1 : "Yes"
	]
]


//===================================================================================================================
// npc_VMingXiaoTentacle [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VMingXiaoTentacle : 
	"[VTMB] Ming Xiao's tentacles. Not used on original maps."
[
	model(studio) : "Model" : "models/character/monster/mingxiao/mingxiao_tenticle/mingxiao_tenticle.mdl"
	stattemplate(string) : "NPC Stat Template" : "MingXiao" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics."	
]


//===================================================================================================================
// npc_VSheriffSwarm [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VSheriffSwarm : 
	"[VTMB] Sheriff's bat swarm. Not used on original maps."
[
	model(studio) : "Model" : "models/character/npc/unique/downtown/Sheriff/batswarm.mdl"
	stattemplate(string) : "NPC Stat Template" : "SheriffMan" : "Goes to data in 'vdata/system/npctemplate***.txt'. NPCs in Hammer are assigned one of these which determines their statistics."	
]


//===================================================================================================================
// npc_VFrenzyShadow [VTMB-specific]
//===================================================================================================================

@NPCClass base(VBaseNPC,VAddNPCFeats) studio() = npc_VFrenzyShadow : 
	"[VTMB] Frenzy shadow (unknown). Not used on original maps."
[
]










//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// Misc
// 
//*******************************************************************************************************************
//*******************************************************************************************************************


//===================================================================================================================
// trigger_fog [VTMB-specific]
//===================================================================================================================

@SolidClass base(VBaseTrigger,Parentname) = trigger_fog : 
	"[VTMB] A trigger that controls fog on map. Not used on original maps."
[
]


//===================================================================================================================
// hud_image [VTMB-specific]
//===================================================================================================================

@PointClass base(Targetname) = hud_image :
	"[VTMB] Image that draws on player HUD. Not used on original maps."
[
	definition_file(choices) : "Definition Script" : "data/signs/start_game_popup.txt" : "Image definition script related to '<moddir>/VData/Signs/*.txt' file.\n\nPlease, add full moddir-related path and file extension (vdata/signs/mysign.txt) if you're using a custom (not included in this list) script file." =
	[
		"vdata/signs/start_game_popup.txt" : "start_game_popup"
		"vdata/signs/temp_intro.txt" : "temp_intro"
		"vdata/signs/tutorial_popup.txt" : "tutorial_popup"
	]
	fade_in(float) : "Fade-In (secs)" : "0.5" : "Fade-in effect when sign opens."
	fade_out(float) : "Fade-Out (secs)" : "0.5" : "Fade-out effect when sign closes."
	pause(choices) : "Pause When Reading" : 1 : "Pauses game process when sign shows on-screen." =
	[
		0 : "No"
		1 : "Yes"
	]
	spawnflags(flags) =
	[
		1: "1 (unknown yet)" : 0
		5: "Initial State" : 1
	]
	input ChangeFile(string) : "Changes image definition file."
]


//===================================================================================================================
// prop_ragdoll_attached [VTMB-specific]
//===================================================================================================================

@PointClass base(Targetname,Studiomodel,BaseFadeProp,EnableDisable) sphere(fademindist) sphere(fademaxdist) studioprop() = prop_ragdoll_attached :
	"A ragdoll prop that can be attached using it's bones (not tested). Not uses on original maps."
[
	attach_type(integer) : "Attach Type" : 0 : "[VTMB] Unknown yet..."
	bone(choices) : "Attaching Bone" : "<none>" : "Model's bone, which is attached [not tested]." =
	[
		"" : "<none>"
		"Bip01 Head" : "Bip01 Head"
		"Bip01 L Hand" : "Bip01 L Hand"
		"Bip01 R Hand" : "Bip01 R Hand"
		"Bip01 Neck" : "Bip01 Neck"
		"Bip01 Pelvis" : "Bip01 Pelvis"
		"Bip01 Spine" : "Bip01 Spine"
		"Bip01 Spine01" : "Bip01 Spine01"
		"Bip01 Spine02" : "Bip01 Spine02"
		"Bip01 Spine03" : "Bip01 Spine03"
	]
 	physdamagescale(float) : "Physics Impact Damage Scale" : "0.1" : "Scales damage energy when this object is hit by a physics object. NOTE: 0 means this feature is disabled for backwards compatibility.\nSet to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials."
	spawnflags(flags) = 
	[
		4 : "Debris (don't collide with anything)" : 1
	]
	input physdamagescale(float) : "Set the Physics Impact Damage Scale for this character. NOTE: 0 means this feature is disabled for backwards compatibility."
]









//*******************************************************************************************************************
//*******************************************************************************************************************
// 
// End of FGD
// 
//*******************************************************************************************************************
//*******************************************************************************************************************
