Sven Co-op.fgd

From Valve Developer Community
Jump to: navigation, search

From: \common\Sven Co-Op\svencoop\sven-coop.fgd

//
// Sven Co-op game definition file (*.FGD)
//
// Based on the Half-Life definition file "version 3.0.0.1" by Chris "Autolycus" Bokitch.
// Updated by Sniper and Protector to include the Sven Co-op 4.5 Entities.
// VHE 3.5b-ready by Puchi, JPolito, and AdamR. (Model support)
// Tidied up by AdamR because you all suck hard at white spacing.
// Guidelines below added by Silencer so this file stops becoming a mess.
// Sorted by Puchi and Silencer. Proper filter options added by Puchi.

//
//   - FGD EDITING GUIDELINES - KEEP THIS FILE CLEAN -
//
//
//
// » Get unity into it. (Commenting, line breaks, use of BaseClasses)
//
//   » Cut explanations of entities, keys and values out of the file and store them elsewhere for
//     reference.
//
//   » When adding a necessary comment on some part in the file, isolate that part from everything
//     else with a blank line above and below of it, and add the comment in a new line directly
//     above the part you are commenting on. If the line is getting too long, (>100 chars) add a new
//     line to continue.
//
//   » One space (' ') directly after every "//". An exception is when you comment actual entity
//     keys, predefined values (drop-down list) or spawnflags out.
//
//   » Indent comments.
//
//   » Indent with single tabs only. NO SPACES!
//     E.g. under Notepad 2: Go to Settings -> Tab Settings -> Uncheck "Insert tabs as spaces".
//
//   » No unnecessary spaces. Sometimes there are two or more spaces between words or at the end of
//     lines to have a comment added, which looks ugly.
//
//   » Sort ALL entries by name, and KEEP THEM SORTED.
//
//
// » Allow for custom models/sprites to be displayed by entities specifically made for doing so.
//   (cycler/cycler_sprite/env_sprite/item_generic)
//
// » Make sure all entities are properly sized. Some used to have unreasonably sized hulls. E.g.
//   info_teleport_destination used to be a (-8 -8 0 8 8 16)-hullsized 16³ cube, not really
//   revealing any information about the output-height of the teleported player/monster/object.
//
// » Give different entities colors! Anything that helps to differentiate between those vast amount
//   of purple blocks is welcome!
//
// » Make use of the iconsprite(sprite[]) parameter! We could have awesome sprites for many of the
//   point entities, which also helps differentiating. Having varying sizes and colors on top of
//   that also helps differentiating in the 2D views.
//

//
// All entities must have this baseclass
//
@BaseClass = Mandatory
[
	ondestroyfn(string) : "OnDestroy Function"
]

//
// worldspawn
//

@SolidClass base(Mandatory) = worldspawn : "World entity"
[
	message(string) : "Map description / title"
	skyname(string) : "Environment map (cl_skyname)"
	sounds(integer) : "CD track to play" : 1
	light(integer) : "Default light level"
	WaveHeight(string) : "Default wave height"
	MaxRange(string) : "Max viewable distance" : "32768"
	chaptertitle(string) : "Chapter title message"
	startdark(choices) : "Level fade in" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	gametitle(choices) : "Display game title" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	newunit(choices) : "New level unit" : 1 =
	[
		0 : "No, keep current"
		1 : "Yes, clear previous levels"
	]
	mapteams(string) : "Map team List"
	defaultteam(choices) : "Default team" : 0 =
	[
		0 : "Fewest Players"
		1 : "First Team"
	]
	freeroam(choices) : "Roaming monsters (node graph)" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	sentence_file(string) : "Custom Sentences File"
	materials_file(string) : "Custom Materials File"
	globalsoundlist(string) : "Global Sound Replacement File"
	globalmodellist(string) : "Global Model Replacement File"
	forcepmodels(string) : "Force Player Models a;b;c etc"

	// If enabled, the map will use the player class settings file. "mapname_class.cfg"
	//enableclasses(choices) : "Enable Player Classes" : 0 =
	//[
	//	0 : "No"
	//	1 : "Yes"
	//]

	scversion2(choices) : "Minimum game version:" : 516 =
	[
		300 : "3.0 (or earlier)"
		400 : "4.0 Internal"
		401 : "4.0b1 Milestone"
		405 : "4.05 Hotfix"
		406 : "4.06 Hotfix"
		407 : "4.07 Hotfix"
		450 : "4.5 Update"
		460 : "4.6 Update"
		470 : "4.7 Update"
		480 : "4.8 Update"
		500 : "5.0 Milestone"
		501 : "5.01 Patch"
		502 : "5.02 Patch"
		503 : "5.03 Patch"
		504 : "5.04 Patch"
		505 : "5.05 Patch"
		506 : "5.06 Patch"
		507 : "5.07 Patch"
		508 : "5.08 Patch"
		509 : "5.09 Patch"
		510 : "5.10 Patch"
		511 : "5.11 Patch"
		512 : "5.12 Patch"
		513 : "5.13 Patch"
		514 : "5.14 Patch"
		515 : "5.15 Patch"
		516 : "5.16 Patch"
	]
]

@BaseClass = FilterIn
[
	tinfilter(string) : "Name In Filter"
	tinfiltertype(choices) : "Name In Filter Type" : 0 =
	[
		0: "Exclude"
		1: "Include"
	]

	cinfilter(string) : "Class In Filter"
	cinfiltertype(choices) : "Class In Filter Type" : 0 =
	[
		0: "Exclude"
		1: "Include"
	]
]

@BaseClass = FilterOut
[
	toutfilter(string) : "Name Out Filter"
	toutfiltertype(choices) : "Name Out Filter Type" : 0 =
	[
		0: "Exclude"
		1: "Include"
	]

	coutfilter(string) : "Class Out Filter"
	coutfiltertype(choices) : "Class Out Filter Type" : 0 =
	[
		0: "Exclude"
		1: "Include"
	]
]

@BaseClass = ZHLTbmodel
[
	zhlt_usemodel(string) : "ZHLT Template Model Target"
	zhlt_copylight(string) : "ZHLT Copy Lighting From Target"
]

@BaseClass base(ZHLTbmodel) = ZHLT
[
	zhlt_lightflags(choices) : "ZHLT Light Flags" : 0 =
	[
		0 : "Default"
		1 : "Embedded Fix"
		2 : "Opaque (blocks light)"
		3 : "Opaque + Embedded fix"
		6 : "Opaque + Concave Fix"
	]
	light_origin(string) : "ZHLT Light Origin Target"
]

@BaseClass = ZHLTpoint
[
	_fade(string) : "ZHLT Light Fade" : "1.0"
	_falloff(choices) : "ZHLT Light Falloff" : 0 =
	[
		0 : "Default"
		1 : "Inverse Linear"
		2 : "Inverse Square"
	]
]

@BaseClass = Appearflags
[
	spawnflags(Flags) =
	[
		2048 : "Not in Deathmatch" : 0
	]
]

@BaseClass = AttackObject
[
	classify(choices) : "Classification" : 0 =
	[
		-1 : "None"
		0 : "Object Default"
		1 : "Machine"
		2 : "Player"
		3 : "Human Passive"
		4 : "Human Military"
		5 : "Alien Military"
		6 : "Alien Passive"
		7 : "Alien Monster"
		8 : "Alien Prey"
		9 : "Alien Predator"
		10 : "Insect"
		11 : "Player Ally"
		12 : "Player Hornet/Snark"
		13 : "Alien Hornet/Snark"
		14 : "X-Race"
	]
]

@BaseClass = Angles
[
	angles(string) : "Pitch Yaw Roll (X Y Z)" : "0 0 0"
]

@BaseClass base(Mandatory) = Targetname
[
	targetname(target_source) : "Name"
]

@BaseClass = Target
[
	target(target_destination) : "Target"
]

@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Targetname, Appearflags, Angles) = Pickup
[
	spawnflags(Flags) =
	[
		128 : "TOUCH Only" : 0
		256 : "USE Only" : 0
		512 : "Can Use w/o LoS" : 0
		1024: "Disable Respawn" : 0
	]
	renderfx(choices) : "Render FX" : 0 =
	[
		0: "Normal"
		1: "Slow Pulse"
		2: "Fast Pulse"
		3: "Slow Wide Pulse"
		4: "Fast Wide Pulse"
		9: "Slow Strobe"
		10: "Fast Strobe"
		11: "Faster Strobe"
		12: "Slow Flicker"
		13: "Fast Flicker"
		5: "Slow Fade Away"
		6: "Fast Fade Away"
		7: "Slow Become Solid"
		8: "Fast Become Solid"
		14: "Constant Glow"
		15: "Distort"
		16: "Hologram (Distort + fade)"
	]
	rendermode(choices) : "Render Mode" : 0 =
	[
		0: "Normal"
		1: "Color"
		2: "Texture"
		3: "Glow"
		4: "Solid"
		5: "Additive"
	]
	renderamt(integer) : "FX Amount (1 - 255)"
	rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
	movetype(choices) : "Gravity Setting" : 0 =
	[
		0: "Fall to the ground (default)"
		5: "Hover in the air"
	]
]

@BaseClass = ExclusiveHold
[
	exclusivehold(choices) : "Exclusive Hold" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
]

@BaseClass = CustomRespawnDelay
[
	m_flCustomRespawnTime(string) : "Custom respawn time"
]

@BaseClass size(-16 -16 0, 16 16 32) color(2 64 240) base(Pickup, CustomRespawnDelay) = Weapon
[
	dmg(integer) : "Custom Damage" : 0

	wpn_v_model(studio) : "Custom V_Model" : ""
	wpn_w_model(studio) : "Custom W_Model" : ""
	wpn_p_model(studio) : "Custom P_Model" : ""

	soundlist(string) : "Sound Replacement File"

	CustomSpriteDir(string) : "Custom sprite directory"

	IsNotAmmoItem(choices) : "Is Ammo Item" : 0 =
	[
		0 : "Yes"
		1 : "No"
	]
]

@BaseClass size(-8 -8 0, 8 8 16) color(4 128 240) base(Pickup, CustomRespawnDelay) = Ammo
[
	model(studio) : "Custom Model" : ""
]

@BaseClass size(-8 -8 0, 8 8 16) color(0 0 200) base(Pickup, CustomRespawnDelay) = Item
[
	model(studio) : "Custom Model" : ""
	skin(integer) : "Skin" : 0
	body(integer) : "Body" : 0
	sequencename(string) : "Sequence Name" : "idle"
	sequence(integer) : "Animation Sequence (Number)" : 0
	scale(string) : "Scale Model" : "1"

	minhullsize(string) : "Custom Min Hull Size (X Y Z)" : "0 0 0"
	maxhullsize(string) : "Custom Max Hull Size (X Y Z)" : "0 0 0"

	soundlist(string) : "Sound Replacement File"
]

@BaseClass size(-8 -8 0, 8 8 16) color(0 0 200) base(Pickup) = ItemWithDefaultModel
[
	model(studio) : "Custom Model" : "models/egg.mdl"
	skin(integer) : "Skin" : 0
	body(integer) : "Body" : 0
	sequencename(string) : "Sequence Name" : "idle"
	sequence(integer) : "Animation Sequence (Number)" : 0
	scale(string) : "Scale Model" : "1"

	minhullsize(string) : "Custom Min Hull Size (X Y Z)" : "0 0 0"
	maxhullsize(string) : "Custom Max Hull Size (X Y Z)" : "0 0 0"

	soundlist(string) : "Sound Replacement File"
]

@BaseClass = Global
[
	globalname(string) : "Global Entity Name"
]

@BaseClass base(Target) = Targetx
[
	delay(string) : "Delay Before Trigger" : "0"
	killtarget(target_destination) : "Kill Target"
]

@BaseClass = InventoryRules
[
	item_name_required(string) : "Inventory: Need item(s)" : ""
	item_group_required(string) : "Inventory: Need item(s) from group(s)" : ""
	item_group_required_num(integer) : "Inventory: Item count in group need have (0 = all)" : 0
	item_name_canthave(string) : "Inventory: CAN'T have item" : ""
	item_group_canthave(string) : "Inventory: CAN'T have item from group" : ""
	item_group_canthave_num(integer) : "Inventory: Item count in group CAN'T have (0 = all)" : 0

	pass_ignore_use_triggers(choices) : "On pass: Ignore item's on use triggers?" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	pass_drop_item_name(string) : "On pass: Drop item(s)" : ""
	pass_drop_item_group(string) : "On pass: Drop item(s) from group(s)" : ""
	pass_ignore_drop_triggers(choices) : "On pass: Ignore item's on drop triggers?" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	pass_return_item_name(string) : "On pass: Return item(s)" : ""
	pass_return_item_group(string) : "On pass: Return item(s) from group(s)" : ""
	pass_ignore_return_triggers(choices) : "On pass: Ignore item's on return triggers?" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	pass_destroy_item_name(string) : "On pass: Destroy item(s)" : ""
	pass_destroy_item_group(string) : "On pass: Destroy item(s) from group(s)" : ""
	pass_ignore_destroy_triggers(choices) : "On pass: Ignore item's on destroy triggers?" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	target_on_fail(string) : "Target: Inventory rules failed" : ""
]

@BaseClass = RenderFxChoices
[
	renderfx(choices) : "Render FX" : 0 =
	[
		0: "Normal"
		1: "Slow Pulse"
		2: "Fast Pulse"
		3: "Slow Wide Pulse"
		4: "Fast Wide Pulse"
		9: "Slow Strobe"
		10: "Fast Strobe"
		11: "Faster Strobe"
		12: "Slow Flicker"
		13: "Fast Flicker"
		5: "Slow Fade Away"
		6: "Fast Fade Away"
		7: "Slow Become Solid"
		8: "Fast Become Solid"
		14: "Constant Glow"
		15: "Distort"
		16: "Hologram (Distort + fade)"
		17: "Dead Player (DONT USE!)"
		18: "Explode (Garg Like)"
		19: "Glow Shell"
		20: "ClampMinScale (Sprites)"
	]
]

@BaseClass base(RenderFxChoices, Appearflags) = RenderFields
[
	rendermode(choices) : "Render Mode" : 0 =
	[
		0: "Normal"
		1: "Color"
		2: "Texture"
		3: "Glow"
		4: "Solid"
		5: "Additive"
	]
	renderamt(integer) : "FX Amount (1 - 255)"
	rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]


@BaseClass base(Targetname, Target, Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass []

@BaseClass base(Targetname, Target, Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerDmClass
[
	spawnflags(Flags) =
	[
		// Disable this spawn point when the map starts
		2 : "Start Off" : 0

		// Player will spawn repeling down a rope (like repeling soldiers)
		4 : "Repel Spawn" : 0

		// Only spawn player if his targetname equals to message
		8 : "Filter player targetname" : 0

		// Invert player targetname filter (can use if DOESN'T match) -- needs flag 8!
		16 : "Invert Filter" : 0

		// Fire target when player spawns here, rather than when the spawn point is toggled on/off
		32 : "Trigger on spawn" : 0
	]
	netname(string) : "New Player Targetname"
	// Use a semi-colon ';' to specify multiple targetnames
	message(string) : "Filter Player Targetname"
	master(string) : "Master"
	frags(string) : "Repel Speed"
	triggerstate(choices) : "Trigger State" : 0 =
	[
		0: "Off"
		1: "On"
		2: "Toggle"
	]
]

@BaseClass = NotRevivable
[
	//Whether the monster can be revived or not
	is_not_revivable(choices) : "Is not revivable" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
]

@BaseClass base(Targetname, Target, RenderFields, Angles, AttackObject, NotRevivable) color(0 200 200) = Monster
[
	spawnflags(Flags) =
	[
		1 : "WaitTillSeen" : 0
		2 : "Gag" : 0
		4 : "MonsterClip" : 0
		16: "Prisoner" : 0
		128: "WaitForScript" : 0
		256: "Pre-Disaster" : 0
		512: "Don't Fade Corpse" : 0
		16384: "No Dyn Collision" : 0
	]
	TriggerCondition(Choices) : "Trigger Condition" : 0 =
	[
		0 : "No Trigger"
		1 : "See Player, Mad at Player"
		2 : "Take Damage"
		3 : "50% Health Remaining"
		4 : "Death"
		7 : "Hear World"
		8 : "Hear Player"
		9 : "Hear Combat"
		10: "See Player Unconditional"
		11: "See Player, Not In Combat"
	]
	TriggerTarget(String) : "Trigger Condition Target"
	body(choices) : "Body" : 0 =
	[
		0 : "0"
	]
	skin(choices) : "Skin" : 0 =
	[
		0 : "0"
	]
	is_player_ally(Choices) : "Is Player Ally?" : 0 =
	[
		0 : "No (Default)"
		1 : "Yes"
	]
	displayname(string) : "In-game Name" : ""
	bloodcolor(choices) : "Blood Color" : 0 =
	[
		0 : "Monster Default"
		-1 : "No Blood"
		1 : "Red"
		2 : "Yellow"
	]
	health(integer) : "Custom Health" : 0
	model(studio) : "Custom Model"
	minhullsize(string) : "Custom Min Hull Size (X Y Z)" : "0 0 0"
	maxhullsize(string) : "Custom Max Hull Size (X Y Z)" : "0 0 0"
	soundlist(string) : "Sound Replacement File"
	freeroam(Choices) : "Monster Roaming (nodes)" : 0 =
	[
		0 : "Map Default"
		1 : "Never"
		2 : "Always"
	]

	path_name(string) : "Path Name" //The name of the path_waypoint, path_condition, or path_condition_controller this monster will look to.

	// This will make the monster follow/protect whoever is specified
	guard_ent(string): "Entity to Guard" : ""
]

@BaseClass = TalkMonster
[
	UseSentence(String) : "Use Sentence"
	UnUseSentence(String) : "Un-Use Sentence"

	is_player_ally(Choices) : "Is Player Ally?" : 0 =
	[
		0 : "Yes (Default)"
		1 : "No"
	]
]

@BaseClass base(Targetname, Angles) size(-8 -8 -8, 8 8 8) = GibShooterBase
[
	spawnflags(Flags) =
	[
		1 : "Repeatable"  : 0
	]

	// how many pieces to create
	m_iGibs(integer) : "Number of Gibs" : 3

	// delay (in seconds) between shots. If 0, all gibs shoot at once.
	delay(string) : "Delay between shots" : "0"

	// how fast the gibs are fired
	m_flVelocity(integer) : "Gib Velocity" : 200

	// Course variance
	m_flVariance(string) : "Course Variance" : "0.15"

	// Time in seconds for gibs to live +/- 5%
	m_flGibLife(string) : "Gib Life" : "4"
]

@BaseClass = Light
[
	_light(color255) : "Brightness" : "255 255 128 200"
	style(Choices) : "Appearance" : 0 =
	[
		0 : "Normal"
		10: "Fluorescent flicker"
		2 : "Slow, strong pulse"
		11: "Slow pulse, noblack"
		5 : "Gentle pulse"
		1 : "Flicker A"
		6 : "Flicker B"
		3 : "Candle A"
		7 : "Candle B"
		8 : "Candle C"
		4 : "Fast strobe"
		9 : "Slow strobe"
	]
	pattern(string) : "Custom Appearance"
	spawnflags(Flags) = [ 2 : "Remove on Spawn" : 0 ]
]

@BaseClass base(Targetname, Targetx, Global, AttackObject, RenderFields, ZHLT) = Breakable
[
	//target(target_destination) : "Target on break" //Duplicate, already defined by Target
	health(integer) : "Strength" : 1
	material(choices) : "Material type" : 0 =
	[
		0: "Glass"
		1: "Wood"
		2: "Metal"
		3: "Flesh"
		4: "Cinder Block"
		5: "Ceiling Tile"
		6: "Computer"
		7: "Unbreakable Glass"
		8: "Rocks"
	]
	weapon(choices) : "Instant Break Weapon" : 1 =
	[
		1: "Crowbar"
		19: "Crowbar (Electric Only)"
		20: "Pipe Wrench"
	]
	explosion(choices) : "Gibs' direction and velocity" : 1 =
	[
		0: "Random direction; no velocity"
		1: "Relative to attack/dmg./mat."
	]
	gibmodel(studio) : "Gib Model" : ""
	spawnobject(choices) : "Spawn On Break" : 0 =
	[
		0:  "Nothing"
		1:  "Battery"
		2:  "Healthkit"
		3:  "9mm Handgun"
		4:  "9mm Clip"
		5:  "Machine Gun"
		6:  "Machine Gun Clip"
		7:  "Machine Gun Grenades"
		8:  "Shotgun"
		9:  "Shotgun Shells"
		10: "Crossbow"
		11: "Crossbow Bolts"
		12: "357"
		13: "357 Clip"
		14: "RPG"
		15: "RPG Clip"
		16: "Gauss Clip"
		17: "Hand grenade"
		18: "Tripmine"
		19: "Satchel Charge"
		20: "Snark"
		21: "Hornet Gun"
		22: "Crowbar"
		23: "Pipewrench"
		24: "Sniperrifle"
		25: "Sniperrifle ammo"
		26: "M16 Rifle"
		27: "M249 Squad Automatic Weapon"
		28: "Minigun"
		29: "556 Ammo Box"
		30: "Sporelauncher"
		31: "Spore Clip"
		32: "9mm Box"
		33: "Uzi"
		34: "Uzi akimbo"
		35: "Desert Eagle"
		36: "Barnacle Grapple"
		37: "Medkit (portable)"
		38: "HEV Suit"
		39: "Antidote"
	]
	explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0
	soundlist(string) : "Sound Replacement File"
]

@BaseClass = BaseLockable
[
	locked_sound(choices) : "Locked Sound" : 0 =
	[
		0: "None"
		2: "Access Denied"
		8: "Small zap"
		10: "Buzz"
		11: "Buzz Off"
		12: "Latch Locked"
	]
	unlocked_sound(choices) : "Unlocked Sound" : 0 =
	[
		0: "None"
		1: "Big zap & Warmup"
		3: "Access Granted"
		4: "Quick Combolock"
		5: "Power Deadbolt 1"
		6: "Power Deadbolt 2"
		7: "Plunger"
		8: "Small zap"
		9: "Keycard Sound"
		10: "Buzz"
		13: "Latch Unlocked"
		14: "Lightswitch"
	]
	locked_sentence(choices) : "Locked Sentence" : 0 =
	[
		0: "None"
		1: "Gen. Access Denied"
		2: "Security Lockout"
		3: "Blast Door"
		4: "Fire Door"
		5: "Chemical Door"
		6: "Radiation Door"
		7: "Gen. Containment"
		8: "Maintenance Door"
		9: "Broken Shut Door"
	]
	unlocked_sentence(choices) : "Unlocked Sentence" : 0 =
	[
		0: "None"
		1: "Gen. Access Granted"
		2: "Security Disengaged"
		3: "Blast Door"
		4: "Fire Door"
		5: "Chemical Door"
		6: "Radiation Door"
		7: "Gen. Containment"
		8: "Maintenance area"
	]

	locked_sound_override(sound) : "Locked Sound Override"
	unlocked_sound_override(sound) : "Unlocked Sound Override"
	locked_sentence_override(string) : "Locked Sentence Override"
	unlocked_sentence_override(string) : "Unlocked Sentence Override"
]

@BaseClass = OpenClosable
[
	fireonopen(string) : "Fire on Open"
	netname(string) : "Fire on Close"
]

@BaseClass base(Appearflags, Global, Targetname, Targetx, FilterIn, FilterOut, InventoryRules, AttackObject, RenderFields, Angles, ZHLT, BaseLockable, OpenClosable) = Door
[
	speed(integer) : "Speed" : 100
	master(string) : "Master"
	movesnd(choices) : "Move Sound" : 0 =
	[
		0: "No Sound"
		1: "Servo (Sliding)"
		2: "Pneumatic (Sliding)"
		3: "Pneumatic (Rolling)"
		4: "Vacuum"
		5: "Power Hydraulic"
		6: "Large Rollers"
		7: "Track Door"
		8: "Snappy Metal Door"
		9: "Squeaky 1"
		10: "Squeaky 2"
	]
	movesnd_loop(choices) : "Move Sound Loops?" : 0 =
	[
		0: "No"
		1: "Yes"
	]
	stopsnd(choices) : "Stop Sound" : 0 =
	[
		0: "No Sound"
		1: "Clang with brake"
		2: "Clang reverb"
		3: "Ratchet Stop"
		4: "Chunk"
		5: "Light airbrake"
		6: "Metal Slide Stop"
		7: "Metal Lock Stop"
		8: "Snappy Metal Stop"
	]
	noise1(sound) : "Move Sound Override"
	noise2(sound) : "Stop Sound Override"
	wait(integer) : "delay before close, -1 stay open " : 4
	lip(integer) : "Lip"
	dmg(integer) : "Damage inflicted when blocked" : 0
	message(string) : "Message if triggered"
	health(integer) : "Strength" : 0
	_minlight(string) : "Minimum light level"
	soundlist(string) : "Sound Replacement File"
	m_iOpenFlags(choices) : "Who can open this" : 0 =
	[
		0: "Default (0)"
		1: "Pushables (1)"
		2: "No clients (2)"
		3: "1 + 2"
		4: "Everything else (4)"
		5: "1 + 4"
		6: "2 + 4"
		7: "1 + 2 + 4"
	]
	m_fIgnoreTargetname(choices) : "Ignore Targetname" : 0 =
	[
		0: "No"
		1: "Yes"
	]
	m_iObeyTriggerMode(choices) : "Obey Trigger Mode" : 2 =
	[
		0 : "No"
		1 : "Yes"
		2 : "Yes, even when currently moving"
	]
	spawnflags(flags) =
	[
		1 : "Starts Open" : 0
		4 : "Don't link" : 0
		8: "Passable" : 0
		32: "Toggle" : 0
		256: "USE Only" : 0
		512: "Monsters Can't" : 0
		1024: "No Link-Checking" : 0
	]
	breakable(choices) : "Breakable" : 0 =
	[
		0: "No"
		1: "Yes"
	]
	fireonbreak(target_destination) : "Fire on break"
	material(choices) : "Material type" : 0 =
	[
		0: "Glass"
		1: "Wood"
		2: "Metal"
		3: "Flesh"
		4: "Cinder Block"
		5: "Ceiling Tile"
		6: "Computer"
		7: "Unbreakable Glass"
		8: "Rocks"
	]
	instantbreak(choices) : "Instant Break" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	weapon(choices) : "Instant Break Weapon" : 1 =
	[
		1: "Crowbar"
		19: "Crowbar (Electric Only)"
		20: "Pipe Wrench"
	]
	explosion(choices) : "Gibs' direction and velocity" : 1 =
	[
		0: "Random direction; no velocity"
		1: "Relative to attack/dmg./mat."
	]
	gibmodel(studio) : "Gib Model" : ""
	explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0
	displayname(string) : "HUD Info name"
	onlytrigger(choices) : "Only Trigger" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	breakontrigger(choices) : "Break On Trigger" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	repairable(choices) : "Repairable" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	showhudinfo(choices) : "Show HUD Info" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	immunetoclients(choices) : "Immune To Clients" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	explosivesonly(choices) : "Explosives Only" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
]

@BaseClass base(Targetname, Target, RenderFields, Global, Angles) = BaseTank
[
	spawnflags(flags) =
	[
		1 : "Active" : 0
		16: "Only Direct" : 0
		32: "Controllable" : 0
		512: "Use Relations" : 0
		1024: "Player can't fire" : 0
	]

	// Mainly for use with v.1.0.0.9's team settings (game_team_master)
	master(string) : "(Team) Master"

	yawrate(string) : "Yaw Rate" : "30"
	yawrange(string) : "Yaw Range" : "180"
	yawtolerance(string) : "Yaw Tolerance" : "15"
	pitchrate(string) : "Pitch Rate" : "0"
	pitchrange(string) : "Pitch Range" : "0"
	pitchtolerance(string) : "Pitch Tolerance" : "5"
	barrel(string) : "Barrel Length" : "0"
	barrely(string) : "Barrel Horizontal" : "0"
	barrelz(string) : "Barrel Vertical" : "0"
	spritesmoke(string) : "Smoke Sprite" : ""
	spriteflash(string) : "Flash Sprite" : ""
	spritescale(string) : "Sprite Scale" : "1"
	rotatesound(sound) : "Rotate Sound" : ""
	firerate(string) : "Rate of Fire" : "1"
	bullet_damage(string) : "Damage Per Bullet" : "0"
	persistence(string) : "Firing Persistence" : "1"
	firespread(choices) : "Bullet Accuracy" : 0 =
	[
		0: "Perfect Shot"
		1: "Small cone"
		2: "Medium cone"
		3: "Large cone"
		4: "Extra-large cone"
	]
	minRange(string) : "Minmum target range" : "0"
	maxRange(string) : "Maximum target range" : "0"
	_minlight(string) : "Minimum light level"
	relation_player(choices) : "R Player" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_none(choices) : "R Unknown" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_machine(choices) : "R Machine" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_human_passive(choices) : "R Human Passive" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_human_militar(choices) : "R Human Military" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_alien_militar(choices) : "R Alien Military" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_alien_passive(choices) : "R Alien Passive" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_alien_monster(choices) : "R Alien Monster" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_alien_prey(choices) : "R Alien Prey" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_alien_predator(choices) : "R Alien Predator" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_insect(choices) : "R Insect" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_player_ally(choices) : "R Player Ally" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_player_bioweapon(choices) : "R Player BioWeapon" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_monster_bioweapon(choices) : "R Monster BioWeapon" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
	relation_machine(choices) : "R Machine" : 0 =
	[
		-2: "Ally"
		-1: "Friend"
		0: "No Relation"
		1: "Dislike"
		2: "Hate"
		3: "Nemesis"
	]
]

@BaseClass = PlatSounds
[
	movesnd(choices) : "Move Sound" : 0 =
	[
		0: "No Sound"
		1: "big elev 1"
		2: "big elev 2"
		3: "tech elev 1"
		4: "tech elev 2"
		5: "tech elev 3"
		6: "freight elev 1"
		7: "freight elev 2"
		8: "heavy elev"
		9: "rack elev"
		10: "rail elev"
		11: "squeek elev"
		12: "odd elev 1"
		13: "odd elev 2"
	]
	movesnd_loop(choices) : "Move Sound Loops?" : 0 =
	[
		0: "No"
		1: "Yes"
	]
	stopsnd(choices) : "Stop Sound" : 0 =
	[
		0: "No Sound"
		1: "big elev stop1"
		2: "big elev stop2"
		3: "freight elev stop"
		4: "heavy elev stop"
		5: "rack stop"
		6: "rail stop"
		7: "squeek stop"
		8: "quick stop"
	]
	noise(sound) : "Move Sound Override"
	noise1(sound) : "Stop Sound Override"
	volume(string) : "Sound Volume 0.0 - 1.0" : "0.85"
	soundlist(string) : "Sound Replacement File"
]

@BaseClass base(Appearflags, OpenClosable) = BasePlat
[
	dmg(integer) : "Damage inflicted when blocked" : 0
]

@BaseClass base(Targetname, RenderFields, Global, PlatSounds, BasePlat) = Trackchange
[
	height(integer) : "Travel altitude" : 0
	spawnflags(flags) =
	[
		1: "Auto Activate train" : 0
		2: "Relink track" : 0
		8: "Start at Bottom" : 0
		16: "Rotate Only" : 0
		64: "X Axis" : 0
		128: "Y Axis" : 0
	]
	rotation(integer) : "Spin amount" : 0
	train(target_destination) : "Train to switch"
	toptrack(target_destination) : "Top track"
	bottomtrack(target_destination) : "Bottom track"
	speed(integer) : "Move/Rotate speed" : 0
	noise2(sound) : "Blocked Sound"
]

@BaseClass base(Targetx, Targetname, FilterIn, FilterOut, InventoryRules, ZHLTbmodel, Appearflags) = Trigger
[
	netname(target_destination) : "Target Path"
	master(string) : "Master"
	sounds(choices) : "Sound style" : 0 =
	[
		0 : "No Sound"
	]
	message(string) : "Message (set sound too!)"
	tiny_monsters(Choices) : "Allow tiny monsters (insects/hornets)" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	spawnflags(flags) =
	[
		1: "Monsters" : 0
		2: "No Clients" : 0
		4: "Pushables": 0
		8: "Everything else": 0
		16: "Fire On Enter": 0
		32: "Fire On Exit": 0
	]
]

@BaseClass base(Targetname, Target, Angles) = PortalBase
[
	spawnflags(flags) =
	[
		1: "Solid"			: 1
		2: "Start Disabled"	: 0
		16: "Render only every 2nd frame": 0
	]
	zoom(integer) : "Zoom" : 1
	fps(integer) : "Max FPS" : 0
	mindist(integer) : "Min Render Distance" : 0
	maxdist(integer) : "Max Render Distance" : 0
	textureMode(choices) : "Texture Mode" : 1 =
	[
		0  : "{ Textures"
		1  : "All Textures"
		2  : "Named Texture"
	]
	textureName(string) : "Texture Name"
]

//
// Entities start here. Sorted by Name just like Hammer displays them.
//

@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(164 0 255) = aiscripted_sequence : "AI Scripted Sequence"
[
	m_iszEntity(string) : "Target Monster"
	m_iszPlay(string) : "Action Animation" : ""
	m_flRadius(integer) : "Search Radius" : 512
	m_flRepeat(integer) : "Repeat Rate ms" : 0
	m_fMoveTo(Choices) : "Move to Position" : 0 =
	[
		0 : "No"
		1 : "Walk"
		2 : "Run"
		4 : "Instantaneous"
		5 : "No - Turn to Face"
	]
	moveto_radius(integer) : "Move to Radius" : 0
	m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 =
	[
		0 : "Default AI"
		1 : "Ambush"
	]
	spawnflags(Flags) =
	[
		4 : "Repeatable"		: 0
		8 : "Leave Corpse"	: 0
	]
]

@PointClass iconsprite("sprites/vhe-iconsprites/ambient_generic.spr") base(Targetname) color(220 220 220) = ambient_generic : "Universal Ambient"
[
	message(sound) : "Sound File"
	health(integer) : "Volume (10 = loudest)" : 10
	playmode(choices) : "Play Mode" : 0 =
	[
		0: "Default"
		1: "Play Once"
		2: "Loop"
		5: "Linear / Play Once"
		6: "Linear / Loop"
	]
	preset(choices) : "Dynamic Presets" : 0 =
	[
		0: "None"
		1: "Huge Machine"
		2: "Big Machine"
		3: "Machine"
		4: "Slow Fade in"
		5: "Fade in"
		6: "Quick Fade in"
		7: "Slow Pulse"
		8: "Pulse"
		9: "Quick pulse"
		10: "Slow Oscillator"
		11: "Oscillator"
		12: "Quick Oscillator"
		13: "Grunge pitch"
		14: "Very low pitch"
		15: "Low pitch"
		16: "High pitch"
		17: "Very high pitch"
		18: "Screaming pitch"
		19: "Oscillate spinup/down"
		20: "Pulse spinup/down"
		21: "Random pitch"
		22: "Random pitch fast"
		23: "Incremental Spinup"
		24: "Alien"
		25: "Bizzare"
		26: "Planet X"
		27: "Haunted"
	]
	volstart(integer) : "Start Volume" : 0
	fadein(integer) : "Fade in time (0-100)" : 0
	fadeout(integer) : "Fade out time (0-100)" : 0
	pitch(integer) : "Pitch (> 100 = higher)" : 100
	pitchstart(integer) : "Start Pitch" : 100
	spinup(integer) : "Spin up time (0-100)" : 0
	spindown(integer) : "Spin down time (0-100)" : 0
	lfotype(choices) : "LFO type" : 0 =
	[
		0: "Off"
		1: "Square Wave"
		2: "Triangle Wave"
		3: "Random"
		4: "Saw Tooth Wave"
		5: "Sine Wave"
	]
	lforate(integer) : "LFO rate (0-1000)" : 0
	lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0
	lfomodvol(integer) : "LFO mod vol (0-100)" : 0
	cspinup(integer) : "Incremental spinup count" : 0
	linearmin(choices) : "Linear Min Radius" : 2 =
	[
		0: "0 - 0 units"
		1: "1 - 256 units"
		2: "2 - 512 units"
		3: "3 - 768 units"
		4: "4 - 1,024 units"
		5: "5 - 1,280 units"
		6: "6 - 1,536 units"
		7: "7 - 1,792 units"
		8: "8 - 2,048 units"
		9: "9 - 2,304 units"
		10: "10 - 2,560 units"
		11: "11 - 2,816 units"
		12: "12 - 3,072 units"
		13: "13 - 3,328 units"
		14: "14 - 3,584 units"
		15: "15 - 3,840 units"
		16: "16 - 4,096 units"
	]
	linearmax(choices) : "Linear End Radius" : 5 =
	[
		1: "1 - 256 units"
		2: "2 - 512 units"
		3: "3 - 768 units"
		4: "4 - 1,024 units"
		5: "5 - 1,280 units"
		6: "6 - 1,536 units"
		7: "7 - 1,792 units"
		8: "8 - 2,048 units"
		9: "9 - 2,304 units"
		10: "10 - 2,560 units"
		11: "11 - 2,816 units"
		12: "12 - 3,072 units"
		13: "13 - 3,328 units"
		14: "14 - 3,584 units"
		15: "15 - 3,840 units"
		16: "16 - 4,096 units"
	]
	spawnflags(flags) =
	[
		1 : "Play Everywhere" : 0
		2 : "Small Radius" : 0
		4 : "Medium Radius" : 1
		8 : "Large Radius" : 0
		16 : "Start Silent": 0
		32 : "Unlooped|Cyclic": 0
		64 : "User Only (+origin)" : 0
		2097152 : "(Radius flags": 0
		4194304 : "  ignored for": 0
		8388608 : " Linear mode)": 0
	]
]

@PointClass iconsprite("sprites/vhe-iconsprites/ambient_generic.spr") base(Targetname) color(220 220 220) = ambient_music : "Ambient Music"
[
	message(sound) : "Sound File"
	volume(integer) : "Volume (10 = loudest)" : 10
	spawnflags(flags) =
	[
		1 : "Start Silent" : 1
		2 : "Loop" : 0
		4 : "Activator Only" : 0
	]
]

@PointClass base(Ammo, Targetx) studio("models/w_357ammobox.mdl") = ammo_357 : "357 / desert eagle round box" []

@PointClass base(Ammo, Targetx) studio("models/w_saw_clip.mdl") = ammo_556 : "5.56mm round box" []

@PointClass base(Ammo, Targetx) studio("models/w_m40a1clip.mdl") = ammo_762 : "7.62mm sniper rifle magazine" []

@PointClass base(Ammo, Targetx) studio("models/w_9mmarclip.mdl") = ammo_9mmAR : "9mm assault rifle magazine" []

@PointClass base(Ammo, Targetx) studio("models/w_chainammo.mdl") = ammo_9mmbox : "9mm round box (big)" []

@PointClass base(Ammo, Targetx) studio("models/w_9mmclip.mdl") = ammo_9mmclip : "9mm pistol magazine" []

@PointClass base(Ammo, Targetx) studio("models/w_argrenade.mdl") = ammo_ARgrenades : "M16's M203 grenades" []

@PointClass base(Ammo, Targetx) studio("models/w_shotbox.mdl") = ammo_buckshot : "Shotgun shell box" []

@PointClass base(Ammo, Targetx) studio("models/w_crossbow_clip.mdl") = ammo_crossbow : "Crossbow bolt magazine" []

@PointClass base(Ammo, Targetx) studio("models/w_gaussammo.mdl") = ammo_gaussclip : "Gauss/Gluon gun battery" []

@PointClass base(Ammo, Targetx) studio("models/w_rpgammo.mdl") = ammo_rpgclip : "Rockets" []

@PointClass base(Ammo, Targetx) size(-16 -16 -16, 16 16 16) studio("models/vhe-models/spore_ammo_hammer.mdl") = ammo_spore : "Spore plant"
[
	movetype(choices) : "Gravity Setting" : 5 =
	[
		0: "Fall to the ground (OP4 only)"
		5: "Hover in the air (recommended)"
	]
]

@PointClass base(Ammo, Targetx) studio("models/spore.mdl") = ammo_sporeclip : "Spore" []

@PointClass base(Ammo, Targetx) studio("models/w_uzi_clip.mdl") = ammo_uziclip : "9mm uzi magazine" []

@SolidClass base(Target, ZHLT) = button_target : "Target Button"
[
	spawnflags(flags) =
	[
		1: "Use Activates" : 1
		2: "Start On" : 0
	]
	master(string) : "Master"
	renderfx(choices) : "Render FX" : 0 =
	[
		0: "Normal"
		1: "Slow Pulse"
		2: "Fast Pulse"
		3: "Slow Wide Pulse"
		4: "Fast Wide Pulse"
		9: "Slow Strobe"
		10: "Fast Strobe"
		11: "Faster Strobe"
		12: "Slow Flicker"
		13: "Fast Flicker"
		5: "Slow Fade Away"
		6: "Fast Fade Away"
		7: "Slow Become Solid"
		8: "Fast Become Solid"
		14: "Constant Glow"
		15: "Distort"
		16: "Hologram (Distort + fade)"
	]
	rendermode(choices) : "Render Mode" : 0 =
	[
		0: "Normal"
		1: "Color"
		2: "Texture"
		3: "Glow"
		4: "Solid"
		5: "Additive"
	]
	renderamt(integer) : "FX Amount (1 - 255)"
	rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
	use_type(choices) : "Use Type" : 3 =
	[
		0: "Off"
		1: "On"
		2: "Set"
		3: "Toggle"
	]
]

@PointClass color(165 185 160) = custom_precache : "Custom Precache"
[
	model_1(studio): "Model 1"
	model_2(studio): "Model 2"
	model_3(studio): "Model 3"
	model_4(studio): "Model 4"
	model_5(studio): "Model 5"
	model_6(studio): "Model 6"
	model_7(studio): "Model 7"
	model_8(studio): "Model 8"
	model_9(studio): "Model 9"

	sound_1(sound): "Sound 1"
	sound_2(sound): "Sound 2"
	sound_3(sound): "Sound 3"
	sound_4(sound): "Sound 4"
	sound_5(sound): "Sound 5"
	sound_6(sound): "Sound 6"
	sound_7(sound): "Sound 7"
	sound_8(sound): "Sound 8"
	sound_9(sound): "Sound 9"
]

@PointClass base(Targetname, Angles) size(-16 -16 0, 16 16 72) studio() color(128 128 128) = cycler : "Monster Cycler"
[
	model(studio) : "Model"
	renderfx(choices) : "Render FX" : 0 =
	[
		0: "Normal"
		1: "Slow Pulse"
		2: "Fast Pulse"
		3: "Slow Wide Pulse"
		4: "Fast Wide Pulse"
		9: "Slow Strobe"
		10: "Fast Strobe"
		11: "Faster Strobe"
		12: "Slow Flicker"
		13: "Fast Flicker"
		5: "Slow Fade Away"
		6: "Fast Fade Away"
		7: "Slow Become Solid"
		8: "Fast Become Solid"
		14: "Constant Glow"
		15: "Distort"
		16: "Hologram (Distort + fade)"
	]
	rendermode(choices) : "Render Mode" : 0 =
	[
		0: "Normal"
		1: "Color"
		2: "Texture"
		3: "Glow"
		4: "Solid"
		5: "Additive"
	]
	renderamt(integer) : "FX Amount (1 - 255)"
	rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]

@PointClass base(Targetname, Angles) sprite() color(128 128 128) = cycler_sprite : "Sprite Cycler"
[
	model(sprite) : "Sprite"
	framerate(integer) : "Frames per second" : 10
	renderfx(choices) : "Render FX" : 0 =
	[
		0: "Normal"
		1: "Slow Pulse"
		2: "Fast Pulse"
		3: "Slow Wide Pulse"
		4: "Fast Wide Pulse"
		9: "Slow Strobe"
		10: "Fast Strobe"
		11: "Faster Strobe"
		12: "Slow Flicker"
		13: "Fast Flicker"
		5: "Slow Fade Away"
		6: "Fast Fade Away"
		7: "Slow Become Solid"
		8: "Fast Become Solid"
		14: "Constant Glow"
		15: "Distort"
		16: "Hologram (Distort + fade)"
	]
	rendermode(choices) : "Render Mode" : 0 =
	[
		0: "Normal"
		1: "Color"
		2: "Texture"
		3: "Glow"
		4: "Solid"
		5: "Additive"
	]
	renderamt(integer) : "FX Amount (1 - 255)"
	rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]

@PointClass base(Monster) size(-16 -16 -16, 16 16 16) studio() color(140 120 120)  = cycler_weapon : "Weapon Cycler"[]

@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) sprite() color(70 70 70) = cycler_wreckage : "Wreckage"
[
	framerate(string) : "Framerate" : "10.0"
	model(sprite) : "Sprite Name" : "sprites/fire.spr"
	scale(string) : "Scale" : "1"
	spawnflags(flags) =
	[
		32: "Toggle" : 0
		64: "Start ON" : 0
	]
]

@BaseClass = BaseCustomEntity : "Custom entity base" // Use this baseclass for custom entities, since they all allow for script files to be defined
[
	m_iszScriptFile(string) : "Script file"
]

@BaseClass base(Global, RenderFields, ZHLT) = BaseCharger : "Base Charger"
[
	// dmdelay(integer) : "Deathmatch recharge delay" : 0
	_minlight(string) : "Minimum light level"
	soundlist(string) : "Sound Replacement File"

	CustomJuice(integer) : "Custom Juice Amount" : 0
	CustomRechargeTime(integer) : "Custom Recharge Time" : 0

	TriggerOnEmpty(target_destination) : "Trigger On Empty"
	TriggerOnRecharged(target_destination) : "Trigger on Recharged"

	CustomDeniedSound(sound) : "Custom Denied Sound"
	CustomStartSound(sound) : "Custom Start Sound"
	CustomLoopSound(sound) : "Custom Loop Sound"
]

@BaseClass = BeamStartEnd
[
	LightningStart(target_destination) : "Start Entity"
	LightningEnd(target_destination) : "Ending Entity"
]

@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-12 -12 -12, 12 12 12) color(255 250 230) = env_beam : "Energy Beam Effect"
[
	renderamt(integer) : "Brightness (1 - 255)" : 100
	rendercolor(color255) : "Beam Color (R G B)" : "0 0 0"
	Radius(integer) : "Radius" : 256
	life(string) : "Life (seconds 0 = infinite)" : "1"
	BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20
	NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0
	texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr"
	TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35
	framerate(integer) : "Frames per 10 seconds" : 0
	framestart(integer) : "Starting Frame" : 0
	StrikeTime(string) : "Strike again time (secs)" : "1"
	damage(string) : "Damage / second" : "0"
	spawnflags(flags) =
	[
		1 : "Start On" : 0
		2 : "Toggle" : 0
		4 : "Random Strike" : 0
		8 : "Ring" : 0
		16: "StartSparks" : 0
		32: "EndSparks" : 0
		64: "Decal End" : 0
		128: "Shade Start" : 0
		256: "Shade End" : 0
	]
]

@PointClass base(Targetname, Angles) size(-4 -4 -4, 4 4 4) studio("models/can.mdl") color(128 64 2) = env_beverage : "Beverage Dispenser"
[
	health(integer) : "Capacity" : 10
	skin(choices) : "Beverage Type" : 0 =
	[
		0 : "Coca-Cola"
		1 : "Sprite"
		2 : "Diet Coke"
		3 : "Orange"
		4 : "Surge"
		5 : "Moxie"
		6 : "Random"
	]
	model(string) : "Custom Model" : ""
	weapons(integer) : "Health for Pickup" : 1
]

@PointClass base(Targetname, Angles) size(-8 -8 -8, 8 8 8) color(210 0 0) = env_blood : "Blood Effects"
[
	color(choices) : "Blood Color" : 0 =
	[
		0 : "Red (Human)"
		1 : "Yellow (Alien)"
	]
	amount(string) : "Amount of blood (damage to simulate)" : "100"
	spawnflags(flags) =
	[
		1: "Random Direction" : 0
		2: "Blood Stream" : 0
		4: "On Player" : 0
		8: "Spray decals" : 0
	]
]

@SolidClass base(Targetname, ZHLTbmodel) = env_bubbles : "Bubble Volume"
[
	density(integer) : "Bubble density" : 2
	frequency(integer) : "Bubble frequency" : 2
	current(integer) : "Speed of Current" : 0
	spawnflags(Flags) =
	[
		1 : "Start Off" 	: 0
	]
]

@PointClass base(Targetname) size(-12 -12 -12, 12 12 12) color(255 220 15) = env_explosion : "Explosion"
[
	iMagnitude(Integer) : "Magnitude" : 100
	spawnflags(flags) =
	[
		1: "No Damage" : 0
		2: "Repeatable" : 0
		4: "No Fireball" : 0
		8: "No Smoke" : 0
		16: "No Decal" : 0
		32: "No Sparks" : 0
	]
]

@PointClass base(Targetname) color(100 150 100) = env_fade : "Screen Fade"
[
	spawnflags(flags) =
	[
		1: "Fade From" : 0
		2: "Modulate" : 0
		4: "Activator Only" : 0
	]
	duration(string) : "Duration (seconds)" : "2"
	holdtime(string) : "Hold Fade (seconds)" : "0"
	renderamt(integer) : "Fade Alpha" : 255
	rendercolor(color255) : "Fade Color (R G B)" : "0 0 0"
]

@PointClass base(Targetname) color(196 195 192) = env_fog : "Fog Field"
[
	spawnflags(flags) =
	[
		1: "Start Off" : 0
	]
	rendercolor(color255) : "Fog Color (RGB)" : "0 0 0"
//	iuser1(integer) : "Fog Field Radius" : 8192
	iuser2(integer) : "Start Distance" : 128
	iuser3(integer) : "End Distance" : 1024
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(128 255 32) = env_funnel : "Large Portal Funnel"
[
	sprite(sprite) : "Custom sprite"
	spawnflags(flags) =
	[
		1 : "Reverse" : 0
		2 : "Reusable" : 0
	]
]

@PointClass base(Targetname) color(255 255 128) color(4 32 250) = env_global : "Global State"
[
	globalstate(string) : "Global State to Set"
	triggermode(choices) : "Trigger Mode" : 0 =
	[
		0 : "Off"
		1 : "On"
		2 : "Dead"
		3 : "Toggle"
	]
	initialstate(choices) : "Initial State" : 0 =
	[
		0 : "Off"
		1 : "On"
		2 : "Dead"
	]
	spawnflags(flags) =
	[
		1 : "Set Initial State" : 0
	]
]

@PointClass sprite() base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(60 200 5) = env_glow : "Light Glow/Haze"
[
	model(sprite) : "Sprite Name" : "sprites/glow01.spr"
	scale(integer) : "Scale" : 1
]

@PointClass base(Targetname, RenderFxChoices, Angles) size(-8 -8 -8, 8 8 8) color(255 64 2) = env_laser : "Laser Beam Effect"
[
	LaserTarget(target_destination) : "Target of Laser"
	renderamt(integer) : "Brightness (1 - 255)" : 100
	rendercolor(color255) : "Beam Color (R G B)" : "0 0 0"
	width(integer) : "Width of beam (pixels*0.1 0-255)" : 20
	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"
	spawnflags(flags) =
	[
		1 : "Start On" : 0
		16: "StartSparks" : 0
		32: "EndSparks" : 0
		64: "Decal End" : 0
	]
]

@PointClass base(Targetname, Target) color(255 0 255) = env_message : "HUD Text Message"
[
	message(string) : "Message Name"
	spawnflags(flags) =
	[
		1: "Play Once" : 0
		2: "All Clients" : 0
	]
	messagesound(sound) : "Sound Effect"
	messagevolume(string) : "Volume 0-10" : "10"
	messageattenuation(Choices) : "Sound Radius" : 0 =
	[
		0 : "Small Radius"
		1 : "Medium Radius"
		2 : "Large  Radius"
		3 : "Play Everywhere"
	]
]

@PointClass base(Targetname, Target, RenderFields) color(110 120 0) = env_render : "Render Controls"
[
	spawnflags(flags) =
	[
		1: "No Renderfx" : 0
		2: "No Renderamt" : 0
		4: "No Rendermode" : 0
		8: "No Rendercolor" : 0

		// Automatically change rendermode, do it by searching
		16: "Auto Apply" : 0

	]
	armorvalue(string): "radius (0 disables)" : "0"
]

@PointClass base(Targetname, RenderFields) = env_render_individual : "Per-player render settings for entities"
[
	spawnflags(Flags) =
	[
		1: "No Renderfx" : 0
		2: "No Renderamt" : 0
		4: "No Rendermode" : 0
		8: "No Rendercolor" : 0

		16: "Auto Apply" : 0
		32: "Start On" : 0

		64 : "Affect Activator (ignore netname)" : 0
		128 : "Use Entity to copy from" : 0
	]
	target(string) : "Entity to affect"
	netname(string) : "Player to affect"
	message(string) : "Entity to copy from"
]

@PointClass base(Target, Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/vhe-iconsprites/env_sentence.spr") color(164 128 164) = env_sentence : "Announcement Sentence"
[
	_text(string) : "Sentence"
]

@PointClass base(Targetname) color(188 180 172) = env_shake : "Screen Shake"
[
	spawnflags(flags) =
	[
		1: "Global Shake" : 0
	]
	amplitude(string) : "Amplitude (degrees; 0-16)" : "4.0"
	radius(string) : "Effect radius (if not global)" : "500"
	duration(string) : "Duration (seconds; fades out)" : "1.0"
	frequency(string) : "Frequency (Hz; 0-255)" : "2.5"
]

@PointClass base(GibShooterBase, RenderFields) color(184 90 164) = env_shooter : "Model Shooter"
[
	shootmodel(studio) : "Model or Sprite name" : ""
	shootsounds(choices) : "Material Sound" : -1 =
	[
		-1: "None"
		0: "Glass"
		1: "Wood"
		2: "Metal"
		3: "Flesh"
		4: "Concrete"
	]
	scale(string) : "Gib Scale" : ""
	skin(integer) : "Gib Skin" : 0
]

@PointClass base(Targetname) iconsprite("sprites/vhe-iconsprites/env_sound.spr") color(150 150 150) = env_sound : "DSP Sound"
[
	spawnflags(flags) =
	[
		1: "USE Only" : 0
	]
	radius(integer) : "Radius" : 128
	roomtype(Choices) : "Room Type" : 0 =
	[
		0 : "Normal (off)"
		1 : "Generic"

		2 : "Metal Small"
		3 : "Metal Medium"
		4 : "Metal Large"

		5 : "Tunnel Small"
		6 : "Tunnel Medium"
		7 : "Tunnel Large"

		8 : "Chamber Small"
		9 : "Chamber Medium"
		10: "Chamber Large"

		11: "Bright Small"
		12: "Bright Medium"
		13: "Bright Large"

		14: "Water Small"
		15: "Water Medium"
		16: "Water Large"

		17: "Concrete Small"
		18: "Concrete Medium"
		19: "Concrete Large"

		20: "Big Room"
		21: "Bigger Room"
		22: "Biggest Room"

		23: "Cavern Small"
		24: "Cavern Medium"
		25: "Cavern Large"

		26: "Weirdo - Drugged"
		27: "Weirdo - Dizzy"
		28: "Weirdo - Psychotic"
	]
]

@PointClass base(Targetname, Angles) size(-8 -8 -8, 8 8 8) color(255 220 15) = env_spark : "Spark"
[
	MaxDelay(string) : "Max Delay" : "0"
	spawnflags(flags) =
	[
		32: "Toggle" : 0
		64: "Start ON" : 0
	]
]

@PointClass sprite() base(Targetname, RenderFields, Angles) size(-4 -4 -4, 4 4 4) color(190 200 180) = env_sprite : "Sprite Effect"
[
	framerate(string) : "Framerate" : "10.0"
	model(sprite) : "Sprite Name" : "sprites/glow01.spr"
	scale(string) : "Scale" : "1"
	vp_type(choices) : "Draw Type / Orientation" : 0 =
	[
		0: "Default"
		// These reflect the VP_ types in the sprite but are +1'd, so 0 can mean default
		3: "Parallel"
		1: "Parallel Upright"
		5: "Parallel Orientated"
		2: "Facing Upright"
		4: "Orientated"
	]
	spawnflags(flags) =
	[
		1: "Start on" : 0
		2: "Play Once" : 0
		4: "Once + Remove" : 0
	]
]

@BaseClass base(Targetname, Global, RenderFields, PlatSounds) = BaseTrain
[
	target(target_source) : "First stop target"
	speed(integer) : "Speed (units per second)" : 64
	m_iObeyTriggerMode(choices) : "Obey Trigger Mode" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]
]

@PointClass base(BaseTrain) color(190 200 180) = env_spritetrain : "Sprite Train"
[
	model(sprite) : "Sprite Name" : "sprites/glow01.spr"
	scale(string) : "Sprite Scale"
]

// New entity for weather effects like rain or snow
// THIS IS CURRENTLY NOT IMPLEMENTED. Don't waste your time trying to get it to work.
//@SolidClass base(Targetname, RenderFields, Angles, ZHLTbmodel) = env_weather : "Weather Effect"
//[
//	spawnflags(Flags) =
//	[
//		1 : "Start On" : 1
//	]
//	netname(String) : "Sprite (or Model) name"
//	message(String) : "Splash Sprite (or Model) name"
//	scale(String) : "Sprite Scale" : "1"
//	health(String) : "Splash Sprite Scale" : "1"
//	speed(integer) : "Speed" : 50
//	skin(integer) : "Density" : 30
//	frags(integer) : "Angle Variance" : 10
//	body(integer) : "Speed Variance" : 10
//]

@PointClass base(Targetname, Target, Angles) size(-16 -16 -16, 16 16 56) color(80 220 110) = env_xenmaker : "Xen Portal"
[
	spawnflags(flags) =
	[
		1: "Try Once" : 0
		2: "No Spawn" : 0
	]

	monstertype(string) : "Monster Type" : "monster_headcrab"

	m_flBeamRadius(integer)			: "Beam Radius (max)"	: 255
	m_iBeamAlpha(integer)			: "Beam Alpha"		: 128
	m_iBeamCount(integer)			: "Beam Count"		: 8
	m_vBeamColor(color255)			: "Beam Color"		: "217 226 146"

	m_flLightRadius(integer)		: "Light Radius"	: 160
	m_vLightColor(color255)			: "Light Color"		: "39 209 137"

	m_flStartSpriteFramerate(integer)	: "Sprite1 Framerate"	: 12
	m_flStartSpriteScale(string)		: "Sprite1 Scale" 	: "1.0"
	m_iStartSpriteAlpha(integer)		: "Sprite1 Alpha" 	: 255
	m_vStartSpriteColor(color255)		: "Sprite1 Color" 	: "65 209 61"

	m_flEndSpriteFramerate(integer)		: "Sprite2 Framerate"	: 12
	m_flEndSpriteScale(string)		: "Sprite2 Scale" 	: "1.0"
	m_iEndSpriteAlpha(integer)		: "Sprite2 Alpha" 	: 255
	m_vEndSpriteColor(color255)		: "Sprite2 Color" 	: "159 240 214"
]

@SolidClass base(Breakable) = func_breakable : "Breakable Object"
[
	spawnflags(flags) =
	[
		1 : "Only Trigger"		: 0
		2 : "Touch"				: 0
		4 : "Pressure"			: 0
		8: "Repairable"			: 0
		32: "Show HUD Info"		: 0
		64: "Immune To Clients"	: 0
		256: "Instant Break"	: 0
		512: "Explosives Only"	: 0
	]
	displayname(string) : "HUD Info name"
	_minlight(string) : "Minimum light level"
]

@SolidClass base(Global, Targetname, Targetx, InventoryRules, AttackObject, RenderFields, Angles, ZHLT, BaseLockable) = func_button : "Button"
[
	speed(integer) : "Speed" : 5
	health(integer) : "Health (shootable if > 0)" : 0
	lip(integer) : "Lip"
	master(string) : "Master"
	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"
		10: "Buzz"
		11: "Buzz Off"
		14: "Lightswitch"
	]
	noise(sound) : "Sound Override"
	wait(integer) : "delay before reset (-1 stay)" : 3
	spawnflags(flags) =
	[
		1: "Don't move" : 0
		32: "Toggle" : 0
		64: "Sparks" : 0
		256: "Touch Activates": 0
	]
	_minlight(string) : "Minimum light level"
	use_type(choices) : "Use Type" : 3 =
	[
		0: "Off"
		1: "On"
		2: "Set"
		3: "Toggle"
	]
]

@SolidClass base(Targetname, Angles, ZHLTbmodel) = func_clip : "Clip"
[
	spawnflags(Flags) =
	[
		1 : "Start Off" : 1
		2 : "Directional (Angles)" : 0
		4 : "No Clients" : 0
		8 : "Monsters" : 0
		16 : "Pushables" : 0
		32 : "Everything else" : 0
		64 : "item_inv (thrown)" : 0
	]
	frags(String) : "Direction Tolerance" : "90"
]

@SolidClass base(Global, RenderFields, Targetname, Angles, ZHLT) = func_conveyor : "Conveyor Belt"
[
	spawnflags(flags) =
	[
		1 : "No Push" : 0
		2 : "Not Solid" : 0
	]
	speed(string) : "Conveyor Speed" : "100"
	_minlight(string) : "Minimum light level"
]

@SolidClass base(Door) = func_door : "Basic door" []

@SolidClass base(Door) = func_door_rotating : "Rotating door"
[
	spawnflags(flags) =
	[
		2 : "Reverse Dir" : 0
		16: "One-way" : 0
		64: "X Axis" : 0
		128: "Y Axis" : 0
	]
	distance(integer) : "Distance (deg)" : 90
]

@SolidClass base(Appearflags, RenderFields, ZHLT) = func_friction : "Surface with a change in friction"
[
	modifier(integer) : "Percentage of standard (0 - 100)" : 15
]

@SolidClass = func_group : "Non-entity solid brush group" []

@SolidClass base(Targetname, RenderFields, AttackObject, Global, ZHLT) = func_guntarget : "Moving platform"
[
	spawnflags(Flags) =
	[
		1 : "Start On" : 0
	]

	speed(integer) : "Speed (units per second)" : 100
	target(target_source) : "First stop target"
	message(target_source) : "Fire on damage"
	health(integer) : "Damage to Take" : 0
	_minlight(string) : "Minimum light level"
]

@SolidClass base(BaseCharger) = func_healthcharger: "Wall health recharger"
[
]

@SolidClass base(Targetname, RenderFields, ZHLT) = func_illusionary : "Fake Wall/Light"
[
	style(choices) : "Texlight style" : 0 =
	[
		0 : "Normal"
		-3: "Grouped"
		10: "Fluorescent flicker"
		2 : "Slow, strong pulse"
		11: "Slow pulse, noblack"
		5 : "Gentle pulse"
		1 : "Flicker A"
		6 : "Flicker B"
		3 : "Candle A"
		7 : "Candle B"
		8 : "Candle C"
		4 : "Fast strobe"
		9 : "Slow strobe"
		12: "Underwater"
	]
	skin(choices) : "Contents" : -1 =
	[
		-1: "Empty"
		-7: "Volumetric Light"
	]
	spawnflags(flags) =
	[
		2 : "Use Angles" : 0
	]
	_minlight(string) : "Minimum light level"
]

@SolidClass base(Targetname, ZHLTbmodel) = func_ladder : "Ladder"
[
  spawnflags(flags) =
	[
		1: "Start Off" : 0
	]
]

@SolidClass base(PortalBase) = func_mirror : "Mirror"
[
]

@SolidClass base(PortalBase) = func_monitor : "Monitor"
[
	width(integer) : "Width (Resolution)" : 512
	height(integer) : "Height (Resolution)" : 512
]

@SolidClass base(Targetname, ZHLTbmodel) = func_monsterclip : "Monster clip brush" []

@SolidClass base(Targetname, ZHLTbmodel) = func_mortar_field : "Mortar Field"
[
	m_flSpread(integer) : "Spread Radius" : 64
	m_iCount(integer) : "Repeat Count" : 1
	m_fControl(Choices) : "Targeting" : 0 =
	[
		0 : "Random"
		1 : "Activator"
		2 : "Table"
	]
	m_iszXController(target_destination) : "X Controller"
	m_iszYController(target_destination) : "Y Controller"
]

@SolidClass base(Target, ZHLTbmodel) = func_op4mortarcontroller : "Op4 Mortar Controller"
[
	mortar_axis(Choices) : "Axis" : 0 =
	[
		0 : "Vertical"
		1 : "Horizontal"
	]
]

@SolidClass base(Global, Appearflags, Targetname, RenderFields, Angles, ZHLT) = func_pendulum : "Swings back and forth"
[
	speed(integer) : "Speed" : 100
	distance(integer) : "Distance (deg)" : 90
	damp(integer) : "Damping (0-1000)" : 0
	dmg(integer) : "Damage inflicted when blocked" : 0
	spawnflags(flags) =
	[
		1: "Start ON" : 0
		8: "Passable" : 0
		16: "Auto-return" : 0
		64: "X Axis" : 0
		128: "Y Axis" : 0
	]
	_minlight(integer) : "_minlight"
]

@SolidClass base(Targetname, Global, RenderFields, PlatSounds, BasePlat, ZHLT) = func_plat : "Elevator"
[
	spawnflags(Flags) =
	[
		1: "Toggle" : 0
	]
	height(integer) : "Travel altitude (can be negative)" : 0
	speed(integer) : "Speed" : 50
	_minlight(string) : "Minimum light level"
]

@SolidClass base(Targetname, Global, RenderFields, PlatSounds, BasePlat, Angles, ZHLT) = func_platrot : "Moving Rotating platform"
[
	spawnflags(Flags) =
	[
		1: "Toggle" : 1
		64: "X Axis" : 0
		128: "Y Axis" : 0
	]
	speed(integer) : "Speed of rotation" : 50
	height(integer) : "Travel altitude (can be negative)" : 0
	rotation(integer) : "Spin amount" : 0
	_minlight(string) : "Minimum light level"
]

@SolidClass base(PortalBase) = func_portal : "Portal"
[
	spawnflags(flags) =
	[
		4: "Teleport"		: 0
		8: "No GL ClipPlanes": 0
		32: "Shoot through": 0
	]
]

@SolidClass base(Breakable, RenderFields, ZHLT) = func_pushable : "Pushable object"
[
	spawnflags(flags) =
	[
		8: "Repairable"			: 0
		16: "Monsters Ignore?"	: 0
		32: "Show HUD Info"		: 0
		128: "Breakable"		: 0
		256: "1-Hit Break"		: 0
		512: "Explosives Only"	: 0
		1024: "Liftable"		: 1
	]
	minhullsize(string) : "Custom Min Hull Size (X Y Z)" : "0 0 0"
	maxhullsize(string) : "Custom Max Hull Size (X Y Z)" : "0 0 0"
	friction(integer) : "Friction (0-400)" : 50
	buoyancy(integer) : "Buoyancy" : 20
	displayname(string) : "HUD Info name"
	_minlight(string) : "Minimum light level"
]

@SolidClass base(BaseCharger) = func_recharge: "Battery recharger"
[
]

@SolidClass base(Targetname, Target, Global, InventoryRules, RenderFields, Angles, ZHLT, BaseLockable) = func_rot_button : "RotatingButton"
[
	// changetarget will change the button's target's TARGET field to the button's changetarget.
	changetarget(target_destination) : "ChangeTarget Name"
	master(string) : "Master"
	speed(integer) : "Speed" : 50
	health(integer) : "Health (shootable if > 0)"
	sounds(choices) : "Sounds" : 21 =
	[
		21: "Squeaky"
		22: "Squeaky Pneumatic"
		23: "Ratchet Groan"
		24: "Clean Ratchet"
		25: "Gas Clunk"
	]
	noise(sound) : "Sound Override"
	wait(choices) : "Delay before reset" : 3 =
	[
		-1: "Stays pressed"
	]
	delay(string) : "Delay before trigger" : "0"
	distance(integer) : "Distance (deg)" : 90
	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
	]
	_minlight(integer) : "_minlight"
	use_type(choices) : "Use Type" : 3 =
	[
		0: "Off"
		1: "On"
		2: "Set"
		3: "Toggle"
	]
]

@SolidClass base(Targetname, Global, RenderFields, Angles, ZHLT) = func_rotating : "Rotating Object"
[
	speed(integer)	: "Rotation Speed" : 0
	volume(integer) : "Volume (10 = loudest)" : 10
	fanfriction(integer) : "Friction (0 - 100%)" : 20
	sounds(choices) : "Fan Sounds" : 0 =
	[
		0 : "No Sound"
		1 : "Fast Whine"
		2 : "Slow Rush"
		3 : "Medium Rickety"
		4 : "Fast Beating"
		5 : "Slow Smooth"
	]
	message(sound) : "WAV Name"
	spawnflags(flags) =
	[
		1 : "Start ON" 		: 0
		2 : "Reverse Direction" : 0
		4 : "X Axis" 		: 0
		8 : "Y Axis" 		: 0
		16: "Acc/Dcc"		: 0
		32: "Fan Pain"		: 0
		64: "Not Solid"		: 0
		128: "Small Radius" : 0
		256: "Medium Radius" : 0
		512: "Large Radius" : 1
	]
	m_iObeyTriggerMode(choices) : "Obey Trigger Mode" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]
	_minlight(integer) : "_minlight"
	spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0"
	dmg(integer) : "Damage inflicted when blocked" : 0
]

@SolidClass base(BaseTank, ZHLT) = func_tank : "Brush Gun Turret"
[
	bullet(choices) : "Bullets" : 0 =
	[
		0: "None"
		1: "9mm"
		2: "MP5"
		3: "12mm"
	]
]

@SolidClass base(ZHLTbmodel, InventoryRules) = func_tankcontrols : "Tank controls"
[
	target(target_destination) : "Tank entity name"
]

@SolidClass base(BaseTank, ZHLT) = func_tanklaser : "Brush Laser Turret"
[
	laserentity(target_source) : "env_laser Entity"
]

@SolidClass base(BaseTank, ZHLT) = func_tankrocket : "Brush Rocket Turret" []

@SolidClass base(BaseTank, ZHLT) = func_tankmortar : "Brush Mortar Turret"
[
	iMagnitude(Integer) : "Explosion Magnitude" : 100
]

@SolidClass base(Trackchange, ZHLT) = func_trackautochange : "Automatic track changing platform"
[
	_minlight(string) : "Minimum light level"
]

@SolidClass base(Trackchange, ZHLT) = func_trackchange : "Train track changing platform"
[
	_minlight(string) : "Minimum light level"
]

//"Forward Only" flag added - prevents the train from moving backwards.
//This is an original half-life feature; it existed in the code base but apparently was left out of the FGD by mistake.
//
//"No YAW (Y-rot)" flag added - Similar to the  "No Pitch (X-rot)" flag, enabling this will force the train to skip updates of its facing angle as it moves.
@SolidClass base(Targetname, Angles, Global, RenderFields, AttackObject, ZHLT) = func_tracktrain : "Track Train"
[
	spawnflags(flags) =
	[
		1 : "No Pitch (X-rot)" : 0
		2 : "No User Control" : 0
		4 : "Forward Only" : 0
		8 : "Passable" : 0
		16 : "No YAW (Y-rot)" : 0
	]
	target(target_destination) : "First stop target"
	sounds(choices) : "Sound" : 0 =
	[
		0: "None"
		1: "Rail 1"
		2: "Rail 2"
		3: "Rail 3"
		4: "Rail 4"
		5: "Rail 6"
		6: "Rail 7"
	]
	noise(sound) : "Move Sound Override"
	noise1(sound) : "Brake Sound Override"
	noise2(sound) : "Start Sound Override"
	wheels(integer) : "Distance between the wheels" : 50
	height(integer) : "Height above track" : 4
	startspeed(integer) : "Initial speed" : 0
	speed(integer) : "Speed (units per second)" : 64
	dmg(integer) : "Damage on crush" : 0
	volume(integer) : "Volume (10 = loudest)" : 10
	bank(string) : "Bank angle on turns" : "0"
	_minlight(string) : "Minimum light level"
	soundlist(string) : "Sound Replacement File"
]

@SolidClass base(ZHLTbmodel, InventoryRules)= func_traincontrols : "Train Controls"
[
	target(target_destination) : "Train Name"
]

@SolidClass base(BaseTrain, AttackObject, ZHLT) = func_train : "Moving platform"
[
	avelocity(string) : "Angular Velocity (X Y Z)"
	dmg(integer) : "Damage on crush" : 0
	skin(integer) : "Contents" : 0
	_minlight(string) : "Minimum light level"
	spawnflags(flags) =
	[
		8 : "Not solid" : 0
	]
]

@SolidClass base(Targetname, Angles, Appearflags, RenderFields, Global, ZHLT) = func_wall : "Wall"
[
	_minlight(string) : "Minimum light level"
	style(choices) : "Texlight style" : 0 =
	[
		0 : "Normal"
		-3: "Grouped"
		10: "Fluorescent flicker"
		2 : "Slow, strong pulse"
		11: "Slow pulse, noblack"
		5 : "Gentle pulse"
		1 : "Flicker A"
		6 : "Flicker B"
		3 : "Candle A"
		7 : "Candle B"
		8 : "Candle C"
		4 : "Fast strobe"
		9 : "Slow strobe"
		12: "Underwater"
	]
	spawnflags(flags) =
	[
		2 : "Use Angles" : 0
	]
]

@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry"
[
	spawnflags(flags) =
	[
		1 : "Starts Invisible" : 0
	]
]

@SolidClass base(Door, ZHLT) = func_water : "Liquid"
[
	spawnflags(flags) =
	[
		1 : "Starts Open" : 0
		256: "USE Only" : 0
	]
	skin(choices) : "Contents" : -3 =
	[
		-3: "Water"
		-4: "Slime"
		-5: "Lava"

		-9: "CURRENT_0"
		-10: "CURRENT_90"
		-11: "CURRENT_180"
		-12: "CURRENT_270"
		-13: "CURRENT_UP"
		-14: "CURRENT_DOWN"
		-15: "TRANSLUCENT"

	]
	WaveHeight(string) : "Wave Height" : "3.2"
]

@PointClass base(Targetname, Targetx) color(238 240 238) = game_counter : "Fires when it hits limit"
[
	spawnflags(flags) =
	[
		1: "Remove On fire" : 0
		2: "Reset On fire" : 1
		4: "Fire if over limit": 1
	]
	master(string) : "Master"
	frags(integer) : "Initial Value" : 0
	health(integer) : "Limit Value" : 10
]

@PointClass base(Targetname, Targetx) color(238 240 200) = game_counter_set : "Sets a game_counter"
[
	spawnflags(flags) =
	[
		1: "Remove On fire" : 0
	]
	master(string) : "Master"
	frags(integer) : "New Value" : 10
]

@PointClass base(Targetname) color(80 80 0) = game_end : "End this multiplayer game"
[
	master(string) : "Master"
]

// Counts number of clients on the server and triggers if it matches min or max value
@PointClass color(0 255 96) = game_player_counter : "Game Player Counter"
[
	frags(integer) : "Min Value" : 1
	health(integer) : "Max Value" : 32
	target(target_destination) : "Min Target"
	netname(target_destination) : "Max Target"
	message(String) : "Filter Player Targetname"
]

@PointClass base(Targetname, Targetx) color(200 100 0) = game_player_equip : "Initial player equipment"
[
	spawnflags(flags) =
	[
		1: "USE Only" : 0
		2: "Filter Playername" : 0
		4: "Re-Equip on Use" : 0
		8: "Append Map CFG" : 0
	]
	master(string) : "Team Master"

	equipmode(choices) : "Equip mode" : 0 =
	[
		0: "Give items"
		1: "Modify inventory"
	]

	inventorymode(choices) : "Inventory mode" : 0 =
	[
		0: "Set items"
		1: "Add items"
		2: "Subtract items"
		3: "Remove items"
		4: "Restock items"
		5: "Limit items"
	]
]

@PointClass base(Targetname, Targetx) color(255 2 0) = game_player_hurt : "Hurts player who fires"
[
	dmg(string) : "Damage To Apply" : "65535"
	spawnflags(flags) =
	[
		1: "Remove On fire" : 0
	]
	master(string) : "Master"
]

@PointClass base(Targetname) color(100 100 145) = game_player_team : "Allows player to change teams"
[
	spawnflags(flags) =
	[
		1 : "Remove On fire" : 0
		2 : "Kill Player" : 0
		4 : "Gib Player" : 0
	]
	target(string) : "game_team_master to use"
	master(string) : "Master"
]

@PointClass base(Targetname, Targetx) color(255 205 0) = game_score : "Award/Deduct Points"
[
	spawnflags(flags) =
	[
		1: "Allow Negative" : 0
		2: "Team Points" : 0
	]

	points(integer) : "Points to add (+/-)" : 1
	master(string) : "Master"
]

// Counts number of slots on the server and triggers if it matches value
@PointClass base(Targetx) color(0 255 148) = game_slot_counter : "Game Slot Counter"
[
	frags(integer) : "Value" : 12
]

@PointClass base(Targetname, Targetx) color(100 100 170) = game_team_master : "Team based master/relay"
[
	spawnflags(flags) =
	[
		1: "Remove On fire" : 0
	]
	triggerstate(choices) : "Trigger State" : 0 =
	[
		0: "Off"
		1: "On"
		2: "Toggle"
	]
	teamindex(integer) : "Team Index (-1 = no team)" : -1
	master(string) : "Master"
]

@PointClass base(Targetname, Targetx) color(100 100 110) = game_team_set : "Sets team of team_master"
[
	spawnflags(flags) =
	[
		1: "Remove On fire" : 0
	]
	master(string) : "Master"
]

@PointClass base(Targetname, Targetx) color(192 255 0) = game_text : "HUD Text Message"
[
	spawnflags(flags) =
	[
		1: "All Players" : 0
		2: "No console echo" : 0
	]

	message(string) : "Message Text"
	x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1"
	y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "0.67"
	effect(Choices) : "Text Effect" : 0 =
	[
		0 : "Fade In/Out"
		1 : "Credits"
		2 : "Scan Out"
	]
	color(color255) : "Color 1 (Add 4th number >0 for opaque)" : "100 100 100"
	color2(color255) : "Color 2 (Add 4th number >0 for opaque)" : "240 110 0"
	fadein(string) : "Fade in Time (or character scan time)" : "1.5"
	fadeout(string) : "Fade Out Time" : "0.5"
	holdtime(string) : "Hold Time" : "1.2"
	fxtime(string) : "Scan time (scan effect only)" : "0.25"
	channel(choices) : "Text Channel" : 1 =
	[
		1 : "Channel 1"
		2 : "Channel 2"
		3 : "Channel 3"
		4 : "Channel 4"
	]
	master(string) : "Master"
]

@SolidClass base(Targetname, ZHLTbmodel) = game_zone_player : "Player Zone brush"
[
	spawnflags(Flags) =
	[
		1 : "Ignore Dead Players" : 0
	]
	intarget(target_destination) : "Target for IN players"
	outtarget(target_destination) : "Target for OUT players"
	incount(target_destination) : "Counter for IN players"
	outcount(target_destination) : "Counter for OUT players"
	// master(string) : "Master"
]


@PointClass base(GibShooterBase) color(180 2 0) = gibshooter : "Gib Shooter" []

@PointClass iconsprite("sprites/vhe-iconsprites/global_light_control.spr") base(Target, Targetname) size(-24 -24 -24, 24 24 24) color(96 96 32) = global_light_control : "Global Light Pattern"
[
	pattern(string) : "Custom Appearance"
]

@PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal"
[
	texture(decal)
]

@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node"
[
	spawnflags(Flags) =
	[
		1 : "Run To Node" : 0
		2 : "Wait Indefinitely" : 0
	]
	target(target_destination) : "Next node"
	radius(string) : "Radius" : "0"
	reachdelay(string) : "Wait after approach" : "0"
	killtarget(target_destination) : "KillTarget"
	reachtarget(target_destination) : "Fire on approach"
	reachsequence(string) : "Sequence on approach" : ""
	health(string) : "Health on approach" : ""
	presequence(string) : "Sequence before approach" : ""
]

@PointClass base(Target, Angles) size(-4 -4 -4, 4 4 4) color(128 255 64) = info_intermission : "Intermission Spot" []

// Goal pathing entity
@PointClass base(Targetname, Target) color(230 230 232) = info_monster_goal : "Monster goal entity"
[
	spawnflags(Flags) =
	[
		8  : "Start Off" : 0

		// If any monster reaches a goal, any other monsters with that goal will not need to get there. (If this isn't checked)
		16 : "Multithreaded" : 0

		// Turns off this entity for all or a specific monster when reached
		32 : "Toggle On Reach" : 0

	]
	priority(Choices) : "Priority" : 0 =
	[
		// Will run to goal if not in combat with an enemy.
		0 : "No enemy"

		// Will run to goal if not in combat, or in combat and enemy is hidden.
		1 : "No enemy/Enemy occluded"


		// 2, 3 and 4 will still work if the monster does not have an enemy.
		// Ignores enemies and just tries to make it to the goal point.
		2 : "Ignore enemy"

		// If this goal is closer than the enemy, just run to the goal.
		3 : "Goal closer than enemy"

		// Same as 3, OR if the enemy isn't visible.
		4 : "G.C.T.E./Enemy occluded"

		// Ignore all enemies unless you're able to attack something.
		5 : "Stop only if can attack"
	]

	// How the monster will move to this goal.
	movementtype(Choices) : "Movement Type" : 0 =
	[
		0 : "Walk"
		1 : "Run"
	]

	// The monster must wait this long (and live) before the goal becomes inactive / targets are fired.
	delay(integer)	: "Wait before trigger" : 0

	// When in radius, finished moving to the goal
	radius(integer)	: "Move-Complete Radius" : 0

	// If (in triggerradius & in radius of specific entity) do not attempt to go to other goal entities.
	// In other words, trigger radius ensures a monster goes to a specific entity if outside of it;
	// if inside, it does not count against the entity for going in favor of another.
	// If closer to the goal than this, this goal is ignored.
	triggerradius(integer) : "Distance For Inactivity" : 0

	// If we're farther than this amount, this goal is ignored.
	requiredradius(integer) : "Maximum Required Distance" : 0

	// Amount of health the monster is given when completing a goal (limited to maximum health).
	healthbonus(integer) : "Health Bonus" : 0

	// Play an animation before triggering stuff.
	sequence(string) : "Action Animation" : "0"

	// Becomes monster's enemy when completing the path.
	enemy(string) : "Target Enemy"
]

@BaseClass = NodeBase
[
	hinttype(Choices) : "Hint type" : 0 =
	[
		0 : "None"
		4 : "World machinery"
		8 : "World blinking light"
		10 : "World human blood"
		11 : "World alien blood"
	]

	activity(Choices) : "Hint activity" : 0 =
	[
		-1 : "None"
		0 : "Reset"
		1 : "Idle"
		2 : "Guard"
		3 : "Walk"
		4 : "Run"
		5 : "Fly"
		6 : "Swim"
		7 : "Hop"
		8 : "Leap"
		9 : "Fall"
		10 : "Land"
		11 : "Strafe left"
		12 : "Strafe right"
		13 : "Roll left"
		14 : "Roll right"
		15 : "Turn left"
		16 : "Turn Right"
		17 : "Crouch"
		18 : "Crouch idle"
		19 : "Stand up from crouch"
		20 : "Use"
		21 : "Signal 1"
		22 : "Signal 2"
		23 : "Signal 3"
		24 : "Twitch"
		25 : "Cower"
		26 : "Small flinch"
		27 : "Big flinch"
		28 : "Range attack 1"
		29 : "Range attack 2"
		30 : "Melee attack 1"
		31 : "Melee attack 2"
		32 : "Reload"
		33 : "Arm"
		34 : "Disarm"
		35 : "Eat"
		36 : "Die simple"
		37 : "Die backward"
		38 : "Die forward"
		39 : "Die violent"
		40 : "Barnacle hit"
		41 : "Barnacle pull"
		42 : "Barnacle chomp"
		43 : "Barnacle chew"
		44 : "Sleep"
		45 : "Inspect floor"
		46 : "Inspect wall"
		47 : "Idle angry"
		48 : "Walk hurt"
		49 : "Run hurt"
		50 : "Hover"
		51 : "Glide"
		52 : "Fly left"
		53 : "Fly right"
		54 : "Detect scent"
		55 : "Sniff"
		56 : "Bite"
		57 : "Threat display"
		58 : "Fear display"
		59 : "Excited"
		60 : "Special attack 1"
		61 : "Special attack 2"
		62 : "Combat idle"
		63 : "Walk scared"
		64 : "Run scared"
		65 : "Victory dance"
		66 : "Die head shot"
		67 : "Die chest shot"
		68 : "Die gut shot"
		69 : "Die back shot"
		70 : "Flinch head"
		71 : "Flinch chest"
		72 : "Flinch stomach"
		73 : "Flinch left arm"
		74 : "Flinch right arm"
		75 : "Flinch left leg"
		76 : "Flinch right leg"
	]
]

@PointClass base(NodeBase) size(-24 -24 -4, 24 24 4) color(225 227 0) = info_node : "ai node" []

@PointClass base(NodeBase) size(-32 -32 0, 32 32 64) color(225 227 0) = info_node_air : "ai air node" []

@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(128 255 146) = info_null : "info_null (spotlight target)" []

@PointClass base(PlayerClass) studio("models/player.mdl") = info_player_coop : "Player co-operative start" []

@PointClass base(PlayerDmClass) studio("models/player.mdl") = info_player_deathmatch : "Player deathmatch start" []

@PointClass base(PlayerDmClass) studio("models/player.mdl") = info_player_dm2 : "Hidden deathmatch starting point (not visible in maplist)" []

@PointClass base(PlayerClass) studio("models/player.mdl") = info_player_start : "Single Player start position" []

@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" []

@PointClass size(-16 -16 0, 16 16 72) base(PlayerClass)  color(255 128 240) = info_teleport_destination : "Teleport destination"
[
	spawnflags(Flags) =
	[
		32 : "Trigger on arrival" : 0
	]
	teleport_cooldown(string) : "Teleport Cooldown Delay" : "1"
]

@PointClass size(-16 -16 -16, 16 16 16) color(255 235 128) = info_texlights : "Texture Light Definitions" []

@PointClass size(-16 -16 0, 16 16 24) base(Targetx, Item) studio("models/w_oxygen.mdl") = item_airtank : "Oxygen tank" []

@PointClass size(-4 -4 0, 4 4 16) base(Targetx, Item) studio("models/w_antidote.mdl") = item_antidote : "Poison antidote" []

@PointClass size(-11 -11 0, 11 11 36) base(Targetx, Item) studio("models/barney_vest.mdl") = item_armorvest : "Armor vest" []

@PointClass size(-4 -4 0, 4 4 16) base(Targetx, Item) studio("models/w_battery.mdl") = item_battery : "HEV battery"
[
	health(integer) : "Charge Supplied" : 0
	healthcap(integer) : "Charge Cap" : 0
]

@PointClass base(ItemWithDefaultModel, Targetx) studio() = item_generic : "Generic scenery item" []

@PointClass size(-8 -8 0, 8 8 48) base(Item) studio("models/DY/health_charger_body.mdl") = item_healthcharger : "Health charger (wall)"
[
	capacity(integer) : "Charger Capacity" : 0
	model_juice(string) : "Model for Capacity Indicator" : ""
]

@PointClass size(-12 -12 0, 12 12 8) base(Targetx, Item) studio("models/w_medkit.mdl") = item_healthkit : "Health kit"
[
	health(integer) : "Health Supplied" : 0
	healthcap(integer) : "Health Cap" : 0
]

@PointClass size(-8 -8 0, 8 8 20) base(Targetx, Item) studio("models/barney_helmet.mdl") = item_helmet : "Helmet" []

@PointClass size(-8 -8 0, 8 8 16) base(Item) = item_inventory : "Inventory item"
[
	item_name(string) : "Item name" : ""
	item_group(string) : "Item group name" : ""
	display_name(string) : "Display name (HUD)" : ""
	description(string) : "Description (HUD)" : ""
	item_icon(string) : "Item icon (HUD)" : ""
	collect_limit(integer) : "Collection limit (0 = infinite)" : 0
	weight(string) : "Item weight (0-100)" : "1.0"

	filter_targetnames(string) : "Collect: Entity target names" : ""
//	filter_classnames(string) : "Collect: Entity class names" : ""
//	filter_teams(string) : "Collect: Teams" : ""
//	filter_player_classes(string) : "Collect: Player classes" : ""
//	filter_npc_classifications(choices) : "Collect: NPC classifications" : 0 =
//	[
//		0 : "No filter"
//		-1 : "None"
//		1 : "Machine"
//		2 : "Player"
//		3 : "Human Passive"
//		4 : "Human Military"
//		5 : "Alien Military"
//		6 : "Alien Passive"
//		7 : "Alien Monster"
//		8 : "Alien Prey"
//		9 : "Alien Predator"
//		10 : "Insect"
//		11 : "Player Ally"
//		12 : "Player Hornet/Snark"
//		13 : "Alien Hornet/Snark"
//		14 : "X-Race"
//	]
	item_name_required(string) : "Collect: Need item(s)" : ""
	item_group_required(string) : "Collect: Need item(s) from group(s)" : ""
	item_group_required_num(integer) : "Collect: Item count in group need have (0 = all)" : 0
	item_name_moved(string) : "Collect: Item(s) moved" : ""
	item_name_canthave(string) : "Collect: CAN'T have item" : ""
	item_group_canthave(string) : "Collect: CAN'T have item from group" : ""
	item_group_canthave_num(integer) : "Collect: Item count in group CAN'T have (0 = all)" : 0
	item_name_not_moved(string) : "Collect: Item(s) NOT moved" : ""

	carried_hidden(choices) : "Carried: Hide item (3rd person)" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]
	carried_skin(integer) : "Carried: Skin" : 0
	carried_body(integer) : "Carried: Body" : 0
	carried_sequencename(string) : "Carried: Sequence Name" : "carried"
	carried_sequence(integer) : "Carried: Animation Sequence (Number)" : 1

	return_timelimit(string) : "Return: Wait (-1 = never)" : "60.0"
	return_delay_respawn(choices) : "Return: Delay respawn" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	holder_timelimit(string) : "Holder: Hold time limit (0 = never)" : "0"
	holder_time_wearout(string) : "Holder: Wearing out trigger time (0 = none)" : "0"
	holder_can_drop(choices) : "Holder: Allowed to drop manually" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]
	holder_keep_on_death(choices) : "Holder: Keep item on death" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	holder_keep_on_respawn(choices) : "Holder: Keep item on respawn" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	target_on_collect(string)		: "Target: On collect (self)"			: ""
	target_on_collect_team(string)		: "Target: On collect (team)"			: ""
	target_on_collect_other(string)		: "Target: On collect (others)"			: ""
	target_cant_collect(string)		: "Target: On can't collect (self)"		: ""
	target_cant_collect_team(string)	: "Target: On can't collect (team)"		: ""
	target_cant_collect_other(string)	: "Target: On can't collect (others)"		: ""
	target_on_drop(string)			: "Target: On drop (self)"			: ""
	target_on_drop_team(string)		: "Target: On drop (team)"			: ""
	target_on_drop_other(string)		: "Target: On drop (others)"			: ""
	target_cant_drop(string)		: "Target: On can't drop (self)"		: ""
	target_cant_drop_team(string)		: "Target: On can't drop (team)"		: ""
	target_cant_drop_other(string)		: "Target: On can't drop (others)"		: ""
	target_on_use(string)			: "Target: On use by trigger (self)"		: ""
	target_on_use_team(string)		: "Target: On use by trigger (team)"		: ""
	target_on_use_other(string)		: "Target: On use by trigger (others)"		: ""
	target_on_wearing_out(string)		: "Target: On wearing out (self)"		: ""
	target_on_wearing_out_team(string)	: "Target: On wearing out (team)"		: ""
	target_on_wearing_out_other(string)	: "Target: On wearing out (others)"		: ""
	target_on_return(string)		: "Target: On return (self)"			: ""
	target_on_return_team(string)		: "Target: On return (team)"			: ""
	target_on_return_other(string)		: "Target: On return (other)"			: ""
	target_on_materialise(string)		: "Target: On materialise after return"		: ""
	target_on_destroy(string)		: "Target: On destroy"				: ""

	effects_permanent(choices) : "Effects: Permanent? (Until respawn)" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	effect_glow(color255) : "Effects: Glow shell color (R G B)" : "0 0 0"
	effect_block_weapons(choices) : "Effects: Block weapons" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	effect_invulnerable(choices) : "Effects: Invulnerable" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	effect_invisible(choices) : "Effects: Invisible" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	effect_nonsolid(choices) : "Effects: Non-solid" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	effect_respiration(string) : "Effects: +/- time before drown" : "0.0"
	effect_friction(string) : "Effects: Friction modifier (%)" : "100.0"
	effect_gravity(string) : "Effects: Gravity modifier (%)" : "100.0"
	effect_speed(string) : "Effects: Speed modifier (%)" : "100.0"
	effect_damage(string) : "Effects: Damage modifier (%)" : "100.0"
]

@PointClass size(-14 -14 0, 14 14 36) base(Targetx, Item) studio("models/w_longjump.mdl") = item_longjump : "Longjump module" []

@PointClass size(-8 -8 0, 8 8 48) base(Item) studio("models/DY/hev.mdl") = item_recharge : "HEV charger (wall)"
[
	capacity(integer) : "Charger Capacity" : 0
	model_juice(string) : "Model for Capacity Indicator" : ""
]

@PointClass size(-12 -12 0, 12 12 1) base(Targetx, Item) studio("models/w_security.mdl") = item_security : "Security card" []

@PointClass size(-15 -15 0, 15 15 64) base(Targetx, Item) studio("models/w_suit.mdl") = item_suit : "HEV Suit"
[
	spawnflags(Flags) =
	[
		1 : "Short Logon" : 0
	]
]

@PointClass iconsprite("sprites/vhe-iconsprites/light.spr") base(Target, Targetname, Light, ZHLTpoint) = light : "Invisible lightsource"
[
	spawnflags(Flags) =
	[
		1 : "Initially dark" : 0
		2 : "Remove Entity" : 0
	]
]

@PointClass base(Targetname, Angles, ZHLTpoint) iconsprite("sprites/vhe-iconsprites/light_environment.spr") = light_environment : "Environment"
[
	pitch(integer) : "Pitch" : 0
	_light(color255) : "Brightness" : "255 255 128 200"
]

@PointClass iconsprite("sprites/vhe-iconsprites/light_spot.spr") base(Targetname, Target, Angles, ZHLTpoint) = light_spot : "Spotlight"
[
	_cone(integer) : "Inner (bright) angle" : 30
	_cone2(integer) : "Outer (fading) angle" : 45
	pitch(integer) : "Pitch" : -90
	_light(color255) : "Brightness" : "255 255 128 200"
	_sky(Choices) : "Is Sky" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	spawnflags(Flags) = [ 1 : "Initially dark" : 0 ]
	style(Choices) : "Appearance" : 0 =
	[
		0 : "Normal"
		10: "Fluorescent flicker"
		2 : "Slow, strong pulse"
		11: "Slow pulse, noblack"
		5 : "Gentle pulse"
		1 : "Flicker A"
		6 : "Flicker B"
		3 : "Candle A"
		7 : "Candle B"
		8 : "Candle C"
		4 : "Fast strobe"
		9 : "Slow strobe"
	]
	pattern(string) : "Custom Appearance"
]

@SolidClass base(Door, ZHLT) = momentary_door : "Momentary/Continuous door"
[
	spawnflags(flags) =
	[
		1 : "Starts Open" : 0
	]
]

@SolidClass base(Targetname, Target, Angles, RenderFields, ZHLT) = momentary_rot_button : "Direct wheel control"
[
	speed(integer) : "Speed" : 50
	master(string) : "Master"
	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"
	]
	noise(sound) : "Sound Override"
	distance(integer) : "Distance (deg)" : 90
	returnspeed(integer) : "Auto-return speed" : 0
	spawnflags(flags) =
	[
		1: "Door Hack" : 0
		2: "Not useable" : 0
		16: "Auto Return" : 0
		64: "X Axis" : 0
		128: "Y Axis" : 0
	]
	_minlight(integer) : "_minlight"
	use_type(choices) : "Use Type" : 2 =
	[
		0: "Off"
		1: "On"
		2: "Set"
		3: "Toggle"
	]
]



@PointClass base(Monster) size(-40 -40 0, 40 40 64) studio("models/baby_voltigore.mdl") = monster_alien_babyvoltigore : "Baby Voltigore"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
]


@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/controller.mdl") = monster_alien_controller : "Controller"  []

@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/agrunt.mdl") = monster_alien_grunt : "Alien Grunt"
[
	weapons(Choices) : "Weapons" : 0 =
	[
		1 : "Hivehand Only"
		3 : "Hivehand + Snarks"
		8 : "Melee-Only"
		10 : "Melee-Only + Snarks"
	]

	netname(string) : "Squad Name"

	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/islave.mdl") = monster_alien_slave : "Vortigaunt"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
		64 : "IgnorePlayer" : 0
	]
]

@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/Tor.mdl") = monster_alien_tor : "Alien Tor"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
]

@PointClass base(Monster) size(-80 -80 0, 80 80 90) studio("models/voltigore.mdl") = monster_alien_voltigore : "Voltigore"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
]

@PointClass base(Monster) size(-360 -360 -172, 360 360 8) studio("models/apache.mdl") = monster_apache : "Apache"
[
	spawnflags(Flags) =
	[
		8 : "NoWreckage"	: 0
		64 : "Start Inactive" : 0
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/massn.mdl") = monster_assassin_repel : "Male Assassin (Repel)"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	weapons(Choices) : "Weapons" : 3 =
	[
		1 : "MP5"
		3 : "MP5 + HG"
		5 : "M16 + GL"
		8 : "Sniper Rifle"
		10 : "Sniper Rifle + HG"
		32 : "No Weapons"
		256 : "Sniper - No drop"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 47 =
	[
		47 : "repel_repel"
	]

]

@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/baby_headcrab.mdl") = monster_babycrab : "Baby Headcrab" []

@PointClass base(Monster) size(-32 -32 0, 32 32 128) studio("models/babygarg.mdl") = monster_babygarg : "Baby Gargantua" []



@PointClass base(Monster) size(-16 -16 -36, 16 16 0) studio("models/barnacle.mdl") = monster_barnacle : "Barnacle Monster" []

@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney : "Barney"
[
	sequence(Choices) : "Animation Sequence (editor)" : 0 =
	[
		0 : "idle1"
		19 : "locked_door"
		21 : "barn_Wave"
		22 : "beat_grunt"
		23 : "beat_gruntidle"
		24 : "flashlight"
		38 : "stuffed_in_vent"
		40 : "cprbarney"
		41 : "cprbarneyrevive"
		42 : "barney_dragvent"
		43 : "dying_barney"
		44 : "dying_barneyidle"
		45 : "dying_friend"
		46 : "dying_friendidle"
		47 : "c1a3_bidle"
		48 : "c1a3_ventb"
		49 : "c1a3_emergeidle"
		50 : "c1a3_emerge"
		51 : "haulbarney"
		52 : "intropush"
		53 : "fence"
		54 : "sit1"
		55 : "almostidle"
		56 : "almost"
		57 : "laseridle"
		58 : "laser_top"
		59 : "laser_bottom"
		60 : "barneyfallidle"
		61 : "barneyfall"
		62 : "c3a2_draw"
		63 : "unlatch"
		64 : "retina"
		65 : "relaxstand"
		66 : "assassinated"
		67 : "trackswitch"
		68 : "pepsiswing"
		69 : "pepsipush"
		70 : "buttonpush"
	]
]

@PointClass base(RenderFields, Appearflags, Angles) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney_dead : "Dead Barney"
[
	pose(Choices) : "Pose" : 0 =
	[
		0 : "On back"
		1 : "On side"
		2 : "On stomach"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 35 =
	[
		35 : "lying_on_back"
		36 : "lying_on_side"
		37 : "lying_on_stomach"
	]
	model(studio) : "Custom Model"
]

@PointClass base(Monster) size(-95 -95 0, 95 95 190) studio("models/big_mom.mdl") = monster_bigmomma : "Big Mamma"
[
	netname(string) : "First node" : ""

	spawnflags(Flags) =
	[
		1024: "No Babycrabs" : 0
	]
]

@PointClass base(Monster) size(-480 -480 -112, 480 480 24) studio("models/blkop_osprey.mdl") = monster_blkop_osprey : "Black Ops Osprey"
[
	spawnflags(Flags) =
	[
		64 : "Start Inactive" : 0
	]
]

@PointClass base(Monster) size(-360 -360 -172, 360 360 8) studio("models/blkop_apache.mdl") = monster_blkop_apache : "Black Ops Apache"
[
	spawnflags(Flags) =
	[
		8 : "NoWreckage"	: 0
		64 : "Start Inactive" : 0
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/floater.mdl") = monster_bloater : "Bloater" []

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/bgman.mdl") = monster_bodyguard : "Body Guard"
[
	weapons(Choices) : "Weapons" : 0 =
	[
		0 : "Random"
		1 : "Pistol"
		2 : "Desert Eagle"
		3 : "Shotgun"
		4 : "Akimbo Uzis"
		5 : "MP5"
		6 : "Sniper Rifle"
		7 : "Minigun"
	]
]

@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/bullsquid.mdl") = monster_bullchicken : "BullChicken" []

@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/chubby.mdl") = monster_chumtoad : "Chumtoad" []

@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/cleansuit_scientist.mdl") = monster_cleansuit_scientist : "Cleansuit Scientist"
[
	body(Choices) : "Body" : -1 =
	[
		-1 : "Random"
		0 : "Glasses"
		1 : "Einstein"
		2 : "Luther"
		3 : "Slick"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 13 =
	[
		13 : "idle1"
		27 : "eye_wipe"
		28 : "pull_needle"
		29 : "return_needle"
		30 : "give_shot"
		41 : "germandeath"
		48 : "console"
		49 : "dryhands"
		50 : "tieshoe"
		51 : "whiteboard"
		52 : "studycart"
		53 : "lean"
		54 : "pondering"
		55 : "pondering2"
		56 : "pondering3"
		57 : "buysoda"
		61 : "push_button"
		62 : "converse1"
		63 : "converse2"
		64 : "retina"
		65 : "talkleft"
		66 : "talkright"
		67 : "deskidle"
		68 : "coffee"
		69 : "franticbutton"
		71 : "scientist_throwna"
		72 : "scientist_thrownb"
		73 : "scientist_beatwindow"
		75 : "scientist_zombiefear"
		77 : "teleport_fidget"
		79 : "sitlookleft"
		80 : "sitlookright"
		81 : "sitscared"
		82 : "sitting2"
		83 : "sitting3"
		84 : "cprscientist"
		85 : "cprscientistrevive"
		86 : "cowering_in_corner"
		87 : "sstruggleidle"
		88 : "sstruggle"
		89 : "headcrabbed"
		90 : "c1a0_catwalkidle"
		91 : "c1a0_catwalk"
		92 : "ceiling_dangle"
		93 : "ventpull1"
		94 : "ventpull2"
		95 : "ventpullidle1"
		96 : "ventpullidle2"
		97 : "sitidle"
		98 : "sitstand"
		99 : "keypad"
		101 : "lookwindow"
		102 : "wave"
		103 : "pulldoor"
		104 : "beatdoor"
		105 : "fallingloop"
		106 : "crawlwindow"
		107 : "divewindow"
		108 : "locked_door"
		109 : "push_button2"
		110 : "unlock_door"
		112 : "handrailidle"
		113 : "handrail"
		114 : "hanging_idle"
		115 : "fall"
		116 : "scientist_get_pulled"
		117 : "hanging_idle2"
		118 : "fall_elevator"
		119 : "scientist_idlewall"
		120 : "ickyjump_sci"
		121 : "haulscientist"
		122 : "c1a4_wounded_idle"
		123 : "c1a4_dying_speech"
		124 : "tentacle_grab"
		125 : "helicack"
		126 : "windive"
		127 : "scicrashidle"
		128 : "scicrash"
		129 : "onguard"
		130 : "seeya"
		131 : "rocketcrawl"
		132 : "portal"
		133 : "gluonshow"
		135 : "kneel"
	]
]

@PointClass base(Monster) size(-3 -3 0, 3 3 3) studio("models/roach.mdl") = monster_cockroach : "Cockroach" []

@PointClass base(Monster) size(-16 -16 0, 16 16 16) studio("models/aflock.mdl") = monster_flyer_flock : "Flock of Flyers"
[
	iFlockSize(Integer) : "Flock Size" : 8
	flFlockRadius(Integer) : "Flock Radius" : 128
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio() = monster_furniture : "Monster Furniture" [
	sequence(string) : "Animation Sequence (Number)" : "0"
]

@PointClass base(Monster) size(-32 -32 0, 32 32 128) studio("models/garg.mdl") = monster_gargantua : "Gargantua" []

@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) studio() = monster_generic : "Generic Script Monster"
[
	sequence(string) : "Animation Sequence (Number)" : "0"
	spawnflags(Flags) =
	[
		4 : "Not solid"	: 0
		8 : "Head Controller" : 0
	]

	disableai(choices) : "Disable AI" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/gman.mdl") = monster_gman : "G-Man" []

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/gonome.mdl") = monster_gonome : "Gonome" []

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt_opfor.mdl") = monster_grunt_ally_repel : "Human Grunt Ally (Repel)"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	weapons(Choices) : "Weapons" : 3 =
	[
		1 : "MP5"
		3 : "MP5 + HG"
		5 : "M16 + GL"
		8 : "Shotgun"
		10 : "Shotgun + HG"
		16 : "Saw"
	]
	head(Choices) : "Heads" : -1 =
	[
		-1 : "Default"
		0 : "Gas Mask"
		1 : "Beret"
		2 : "Ops Mask"
		3 : "Bandana White"
		4 : "Bandana Black"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 51 =
	[
		51 : "repel_repel"
	]
]




@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_grunt_repel : "Human Grunt (Repel)"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]

	weapons(Choices) : "Weapons" : 1 =
	[
		1 : "MP5"
		3 : "MP5 + HG"
		5 : "M16 + GL"
		8 : "Shotgun"
		10 : "Shotgun + HG"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 50 =
	[
		50 : "repel_repel"
	]
]

@PointClass base(RenderFields, Appearflags, Angles) = monster_handgrenade : "Live Handgrenade"
[
	health(integer) : "Delay before explosion" : 0
	new_model(studio) : "Custom Model" : ""
]

@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/headcrab.mdl") = monster_headcrab : "Head Crab" []

@PointClass base(Appearflags, RenderFields, Angles) size(-16 -16 0, 16 16 72) studio("models/player.mdl") = monster_hevsuit_dead : "Dead HEV Suit"
[
	pose(Choices) : "Pose" : 0 =
	[
		0 : "On back"
		1 : "Seated"
		2 : "On stomach"
		3 : "On Table"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 177 =
	[
		177 : "deadback"
		178 : "deadsitting"
		179 : "deadstomach"
		180 : "deadtable"
	]
	model(studio) : "Custom Model"
]

@PointClass base(Appearflags, RenderFields, Angles) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_hgrunt_dead : "Dead Human Grunt"
[
	pose(Choices) : "Pose" : 0 =
	[
		0 : "On stomach"
		1 : "On side"
		2 : "Seated"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 46 =
	[
		46 : "On stomach"
		47 : "On side"
		48 : "Seated"
	]
	body(Choices) : "Body" : 0 =
	[
		0 : "Grunt with Gun"
		1 : "Commander with Gun"
		2 : "Grunt no Gun"
		3 : "Commander no Gun"
	]
	model(studio) : "Custom Model"
]

@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/houndeye.mdl") = monster_houndeye : "Houndeye"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hassassin.mdl") = monster_human_assassin : "Human Assassin" []

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_human_grunt : "Human Grunt (camo)"
[
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	netname(string) : "Squad Name"
	weapons(Choices) : "Weapons" : 1 =
	[
		1  : "MP5"
		3  : "MP5 + HG"
		5  : "M16 + GL"
		8  : "Shotgun"
		10 : "Shotgun + HG"
		64 : "Rocket Launcher"
		66 : "Rocket Launcher + HG"
		128 : "Sniper Rifle"
		130 : "Sniper Rifle + HG"
	]
]

@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/hgruntf.mdl") = monster_human_grunt_ally : "Human Grunt Ally (camo)"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	weapons(Choices) : "Weapons" : 3 =
	[
		0 : "Default"
		1 : "MP5"
		3 : "MP5 + HG"
		5 : "M16 + GL"
		8 : "Shotgun"
		10 : "Shotgun + HG"
		16 : "Saw"
		32 : "None"
	]
	head(Choices) : "Heads" : -1 =
	[
		-1 : "Default"
		0 : "Gas Mask"
		1 : "Beret"
		2 : "Ops Mask"
		3 : "Bandana White"
		4 : "Bandana Black"
		5 : "MP"
		6 : "Major"
		7 : "Beret (Black)"
	]
]

@PointClass base(Targetname, Appearflags, RenderFields, Angles) size(-16 -16 0, 16 16 72) studio("models/hgruntf.mdl") = monster_human_grunt_ally_dead : "Dead Human Grunt Ally"
[
	pose(Choices) : "Pose" : 0 =
	[
		0 : "On stomach"
		1 : "On side"
		2 : "Seated"
		3 : "Dead On Back"
		4 : "Dead On Stomach"
		5 : "Head Crabbed"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 44 =
	[
		44 : "On stomach"
		45 : "On side"
		46 : "Seated"
	]
	weapons(Choices) : "Weapons" : 1 =
	[
		0 : "None"
		1 : "M16"
		8 : "Shotgun"
		16 : "Saw"
	]
	head(Choices) : "Heads" : 0 =
	[
		0 : "Gas Mask"
		1 : "Beret"
		2 : "Ops Mask"
		3 : "Bandana White"
		4 : "Bandana Black"
		5 : "MP"
	]
	model(studio) : "Custom Model"
]

@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/hgrunt_medicf.mdl") = monster_human_medic_ally : "Medic"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	head(Choices) : "Heads" : -1 =
	[
		-1 : "Random"
		0 : "White"
		1 : "Black"
	]
	weapons(Choices) : "Weapons" : 2 =
	[
		0 : "None"
		1 : "Desert Eagle"
		2 : "9mm Handgun"
		4 : "Hypodermic Needle"
	]
]

@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/hgrunt_torchf.mdl") = monster_human_torch_ally : "Torch"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	weapons(Choices) : "Weapons" : 1 =
	[
		1 : "Desert Eagle"
		2 : "Blow Torch"
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hwgrunt.mdl") = monster_hwgrunt : "Heavy Weapons Grunt"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]

	weapons(Choices) : "Secondary Weapon" : 1 =
	[
		0 : "Random Pistol"
		1 : "Glock"
		2 : "Desert Eagle"
		3 : "357 Python"
	]

	disable_minigun_drop(Choices) : "Disable Minigun Drop" : 1 =
	[
		0 : "No (default)"
		1 : "Yes"
	]

]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hwgrunt.mdl") = monster_hwgrunt_repel : "Heavy Weapons Grunt (Repel)"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	sequence(Choices) : "Animation Sequence (editor)" : 14 =
	[
		14 : "repel_repel"
	]
	weapons(Choices) : "Drop Minigun" : 0 =
	[
		0 : "Yes (on death)"
		256 : "No"
	]
]

@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/icky.mdl") = monster_ichthyosaur : "Ichthyosaur" []

@PointClass base(Monster) size(-24 -24 0, 24 24 112) studio("models/kingpin.mdl") = monster_kingpin : "Kingpin" []

@PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/leech.mdl") = monster_leech : "Leech" []

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/massn.mdl") = monster_male_assassin : "Male Assassin"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	head(Choices) : "Heads" : 0 =
	[
		-1 : "Random"
		0 : "Ski Mask White"
		1 : "Ski Mask Black"
		2 : "Night Goggles"
	]
	weapons(Choices) : "Weapons" : 3 =
	[
		1 : "MP5"
		3 : "MP5 + HG"
		5 : "M16 + GL"
		8 : "Sniper Rifle"
		10 : "Sniper Rifle + HG"
		32 : "No Weapons"
		256 : "Sniper - No drop"
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt_medicf.mdl") = monster_medic_ally_repel : "Human Medic Ally (Repel)"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	head(Choices) : "Heads" : -1 =
	[
		-1 : "Random"
		0 : "White"
		1 : "Black"
	]
	weapons(Choices) : "Weapons" : 2 =
	[
		0 : "None"
		1 : "Desert Eagle"
		2 : "9mm Handgun"
		4 : "Hypodermic Needle"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 41 =
	[
		41 : "repel_repel"
	]
]

@PointClass base(Monster) size(-16 -16 -32, 16 16 32) studio("models/miniturret.mdl") = monster_miniturret : "Mini Auto Turret"
[
	orientation(Choices) : "Orientation" : 0 =
	[
		0 : "Floor Mount"
		1 : "Ceiling Mount"
	]
	spawnflags(Flags) =
	[
		32 : "Autostart" : 0
		64 : "Start Inactive" : 0
	]
	maxsleep(string) : "Search Time (before deactivate)" : "15"
	turnrate(integer) : "Turn Rate" : 30
	attackrange(integer) : "Max Attack Range" : 1200
]

@PointClass base(Monster) size(-192 -192 0, 192 192 384) studio("models/nihilanth.mdl") = monster_nihilanth : "Nihilanth"  []

@PointClass base(Monster) size(-480 -480 -112, 480 480 24) studio("models/osprey.mdl") = monster_osprey : "Osprey"
[
	spawnflags(Flags) =
	[
		64 : "Start Inactive" : 0
	]

	// If Random grunttype is set, osprey will look for NORMAL grunts.
	// Mapper can override number of grunts if desired, instead.

	grunttype(Choices) : "Grunt Type" : 0 =
	[
		0 : "Human Grunts (default)"
		1 : "Opposing Force Grunts"

		// Human Grunts and Opposing Force grunts will drop
		2 : "Random"

		// HWGrunt will have a small chance of appearing if set
		3 : "Random + HWGrunt"

		// HWGrunt and Sniper will have a small chance of appearing if set
		4 : "Random + HWGrunt/Sniper"
	]

	num(integer) : "(Override) Number of Grunts" : 0
]

@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/otis.mdl") = monster_otis : "Otis"
[
	bodystate(Choices) : "bodystate" : -1 =
	[
		-1 : "Random"
		0 : "Gun Holstered"
		1 : "Gun Drawn"
		3 : "Donut"
	]
	head(Choices) : "head" : -1 =
	[
		-1 : "Random"
		0 : "Bald Head"
		1 : "Head with hair"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 0 =
		[
			0 : "idle1"
			19 : "locked_door"
			21 : "barn_Wave"
			22 : "beat_grunt"
			23 : "beat_gruntidle"
			24 : "flashlight"
			41 : "cprbarney"
			42 : "cprbarneyrevive"
			43 : "barney_dragvent"
			44 : "dying_barney"
			45 : "dying_barneyidle"
			46 : "dying_friend"
			47 : "dying_friendidle"
			48 : "c1a3_bidle"
			49 : "intropush"
			50 : "fence"
			51 : "wave"
			52 : "unlatch"
			53 : "retina"
			54 : "relaxstand"
			55 : "trackswitch"
			56 : "pepsiswing"
			57 : "pepsipush"
			58 : "buttonpush"
			59 : "cowering"
			60 : "candygrab"
	]
]

@PointClass base(RenderFields, Appearflags, Angles) size(-16 -16 0, 16 16 72) studio("models/otis.mdl") = monster_otis_dead : "Dead Otis"
[
	pose(Choices) : "Pose" : 0 =
	[
		0 : "On back"
		1 : "On side"
		2 : "On stomach"
		3 : "Stuffed in Vent"
		4 : "Dead Sitting"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 35 =
	[
		35 : "lying_on_back"
		36 : "lying_on_side"
		37 : "lying_on_stomach"
		38 : "stuffed_in_vent"
		39 : "dead_sitting"
	]
	model(studio) : "Custom Model"
]

@PointClass base(Monster) size(-24 -24 0, 24 24 32) studio("models/pit_drone.mdl") = monster_pitdrone : "Pit Drone"
[
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	netname(string) : "Squad Name"
	initammo(string) : "Initial Ammo" : "6"
]

@PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/bigrat.mdl") = monster_rat : "Rat" []

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/rgrunt.mdl") = monster_robogrunt : "Robot Grunt"
[
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	netname(string) : "Squad Name"
	weapons(Choices) : "Weapons" : 1 =
	[
		1 : "MP5"
		3 : "MP5 + HG"
		5 : "M16 + GL"
		8 : "Shotgun"
		10 : "Shotgun + HG"
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/rgrunt.mdl") = monster_robogrunt_repel : "Robot Grunt"
[
	weapons(Choices) : "Weapons" : 1 =
	[
		1 : "MP5"
		3 : "MP5 + HG"
		5 : "M16 + GL"
		8 : "Shotgun"
		10 : "Shotgun + HG"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 48 =
	[
		48 : "repel_repel"
	]
]

@PointClass base(Weapon, Targetx, RenderFields) studio("models/w_satchel.mdl") = monster_satchel : "Live Satchel Charge" []

@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist : "Scared Scientist"
[
	body(Choices) : "Body" : -1 =
	[
		-1 : "Random"
		0 : "Glasses"
		1 : "Einstein"
		2 : "Luther"
		3 : "Slick"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 13 =
	[
		13 : "idle1"
		27 : "eye_wipe"
		28 : "pull_needle"
		29 : "return_needle"
		30 : "give_shot"
		37 : "lying_on_back"
		38 : "lying_on_stomach"
		39 : "dead_sitting"
		40 : "dead_table1"
		41 : "dead_table2"
		42 : "dead_table3"
		47 : "console"
		48 : "checktie"
		49 : "dryhands"
		50 : "tieshoe"
		51 : "whiteboard"
		52 : "studycart"
		53 : "lean"
		54 : "pondering"
		55 : "pondering2"
		56 : "pondering3"
		57 : "buysoda"
		61 : "push_button"
		62 : "converse1"
		63 : "converse2"
		64 : "retina"
		65 : "talkleft"
		66 : "talkright"
		67 : "deskidle"
		68 : "coffee"
		69 : "franticbutton"
		71 : "sitlookleft"
		72 : "sitlookright"
		73 : "sitscared"
		74 : "sitting2"
		75 : "sitting3"
		76 : "cprscientist"
		77 : "cprscientistrevive"
		78 : "cowering_in_corner"
		79 : "sstruggleidle"
		80 : "sstruggle"
		81 : "headcrabbed"
		82 : "c1a0_catwalkidle"
		83 : "c1a0_catwalk"
		84 : "ceiling_dangle"
		85 : "ventpull1"
		86 : "ventpull2"
		87 : "ventpullidle1"
		88 : "ventpullidle2"
		89 : "sitidle"
		90 : "sitstand"
		91 : "keypad"
		93 : "lookwindow"
		94 : "wave"
		95 : "pulldoor"
		96 : "beatdoor"
		97 : "fallingloop"
		98 : "crawlwindow"
		99 : "divewindow"
		100 : "locked_door"
		101 : "push_button2"
		102 : "unlock_door"
		104 : "handrailidle"
		105 : "handrail"
		106 : "hanging_idle"
		107 : "fall"
		108 : "scientist_get_pulled"
		109 : "hanging_idle2"
		110 : "fall_elevator"
		111 : "scientist_idlewall"
		112 : "ickyjump_sci"
		113 : "haulscientist"
		114 : "c1a4_wounded_idle"
		115 : "c1a4_dying_speech"
		116 : "tentacle_grab"
		117 : "helicack"
		118 : "windive"
		119 : "scicrashidle"
		120 : "scicrash"
		121 : "onguard"
		122 : "seeya"
		123 : "rocketcrawl"
		124 : "portal"
		125 : "gluonshow"
		127 : "kneel"
	]
]

@PointClass base(Appearflags, RenderFields, Angles) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist_dead : "Dead Scientist"
[
	body(Choices) : "Body" : -1 =
	[
		-1 : "Random"
		0 : "Glasses"
		1 : "Einstein"
		2 : "Luther"
		3 : "Slick"
	]
	pose(Choices) : "Pose" : 0 =
	[
		0 : "On back"
		1 : "On Stomach"
		2 : "Sitting"
		3 : "Hanging"
		4 : "Table1"
		5 : "Table2"
		6 : "Table3"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 37 =
	[
		37 : "lying_on_back"
		38 : "lying_on_stomach"
		39 : "dead_sitting"
		40 : "dead_table1"
		41 : "dead_table2"
		42 : "dead_table3"
	]
	model(studio) : "Custom Model"
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/sentry.mdl") = monster_sentry : "Sentry Turret Gun"
[
	spawnflags(Flags) =
	[
		32 : "Autostart" : 0
		64 : "Start Inactive" : 0
	]
	attackrange(integer) : "Max Attack Range" : 1200
]


@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/w_shock.mdl") = monster_shockroach : "Shock Roach" []

@PointClass base(Monster) size(-24 -24 0, 24 24 32) studio("models/strooper.mdl") = monster_shocktrooper : "Shock Trooper"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
		1024: "No Shockroach" : 0
	]
]

@PointClass base(Monster, TalkMonster) size(-14 -14 22, 14 14 72) studio("models/scientist.mdl") = monster_sitting_scientist : "Sitting Scientist"
[
	body(Choices) : "Body" : -1 =
	[
		-1 : "Random"
		0 : "Glasses"
		1 : "Einstein"
		2 : "Luther"
		3 : "Slick"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 73 =
	[
		71 : "sitlookleft"
		72 : "sitlookright"
		73 : "sitscared"
		74 : "sitting2"
		75 : "sitting3"
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/w_squeak.mdl") = monster_snark : "Armed Snark" []

@PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/w_sqknest.mdl") = monster_sqknest : "Snark Nest" []

@PointClass base(Monster) size(-24 -24 0, 24 24 24) studio("models/stukabat.mdl") = monster_stukabat : "Stukabat"  []

@PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/tentacle2.mdl") = monster_tentacle : "Tentacle Arm"
[
	sweeparc(integer) : "Sweep Arc" : 130
	sound(Choices) : "Tap Sound" : -1 =
	[
		-1 : "None"
		0 : "Silo"
		1 : "Dirt"
		2 : "Water"
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt_torchf.mdl") = monster_torch_ally_repel : "Human Torch Ally (Repel)"
[
	netname(string) : "Squad Name"
	spawnflags(Flags) =
	[
		32 : "SquadLeader" : 0
	]
	weapons(Choices) : "Weapons" : 1 =
	[
		1 : "Desert Eagle"
		2 : "Blow Torch"
	]
	sequence(Choices) : "Animation Sequence (editor)" : 39 =
	[
		39 : "repel_repel"
	]
]

@PointClass base(Monster) studio("models/vhe-models/w_tripmine_hammer.mdl") = monster_tripmine : "Active Tripmine"
[
	spawnflags(Flags) =
	[
		1 : "Instant On" : 1
	]
]

@PointClass base(Monster) size(-32 -32 -32, 32 32 32) studio("models/turret.mdl") = monster_turret : "Auto Turret"
[
	orientation(Choices) : "Orientation" : 0 =
	[
		0 : "Floor Mount"
		1 : "Ceiling Mount"
	]
	spawnflags(Flags) =
	[
		32 : "Autostart" : 0
		64 : "Start Inactive" : 0
	]
	maxsleep(string) : "Search Time (before deactivate)" : "15"
	turnrate(integer) : "Turn Rate" : 30
	attackrange(integer) : "Max Attack Range" : 1200
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/zombie.mdl") = monster_zombie : "Scientist Zombie"
[
	sequence(Choices) : "Animation Sequence (editor)" : 0 =
	[
		0  : "idle1"
		19 : "getup"
		20 : "pause"
		21 : "busting_through_wall"
		22 : "kick_punch_wall"
		23 : "bust_window"
		24 : "soda"
		25 : "slideidle"
		26 : "slidewall"
		27 : "ventclimbidle"
		28 : "ventclimb"
		29 : "deadidle"
		30 : "deadwall"
		31 : "freakdie"
		32 : "freak"
		33 : "eatbodytable"
		34 : "eatbody"
		35 : "eatbodystand"
		36 : "ripdoor"
		37 : "zombie_pull_scientist"
		38 : "zombie_eating"
		39 : "eat_to_stand"
		40 : "vent_zidle"
		41 : "vent_c1a3"
		42 : "haulzombie"
		43 : "c2a3_snack_getup"
		44 : "zombie_fight"
		45 : "crush"
		48 : "crushed"
		46 : "spazhard"
		47 : "spaz"
		49 : "compthrow_idle"
		50 : "compthrow"
		51 : "iceslip"
		52 : "get_run_over"
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/zombie_barney.mdl") = monster_zombie_barney : "Barney Zombie" []

@PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/zombie_soldier.mdl") = monster_zombie_soldier : "Soldier Zombie" []

@PointClass base(Targetname, Angles) size(-16 -16 0, 16 16 72) color(245 128 96) = monstermaker : "Monster Maker"
[
	target(string) : "Target On Release"
	monstertype(string) : "Monster Type"
	netname(string) : "Childrens' Name"
	spawnflags(Flags) =
	[
		1 : "Start ON" 	: 0
		//2 : "PVS On/Off" : 0
		4 : "Cyclic" : 0
		8 : "MonsterClip" : 0
		1024 : "No Respawn (Collectible)" : 0
	]

	// How many monsters the monstermaker can create (-1 = unlimited)
	monstercount(integer) : "Monster count " : -1

	respawn_as_playerally(choices) : "Make Player Allys" :  0 =
	[
		0 : "Default (0)"
		1 : "Opposite (1)"
	]

	// If delay is -1, new monster will be made when last monster dies,
	// else, delay is the delay in seconds between spawns.
	delay(string) : "Frequency" : "5"

	// Maximum number of live children allowed at one time. (New ones will not be made until one dies) -1 means no limit.
	m_imaxlivechildren(integer) : "Max live children" : 5

	health(integer) : "Custom Health" : 0
	path_name(string) : "Path Name" //The name of the path_waypoint, path_condition, or path_condition_controller this monster will look to.

]

@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager"
[
	spawnflags(Flags) =
	[
		1 : "multithreaded" : 0
	]
]

@PointClass base(Targetname, Target) color(168 255 168) = multisource : "Multisource"
[
	globalstate(string) : "Global State Master"
]

@PointClass base(Targetname, AttackObject) studio("models/mortar.mdl") = op4mortar : "Op4 Mortar"
[
	spawnflags(Flags) =
	[
		1  : "Active" : 0
		16 : "Line of Sight" : 1
		32 : "Can Control" : 1
	]

	mortar_velocity(integer) : "Velocity" : 800
	h_min(integer) : "Horiz MIN" : -90
	h_max(integer) : "Horiz MAX" : 90
	mindist(integer) : "Min Target Dist" : 256
	maxdist(integer) : "Max Target Dist" : 2048
	firedelay(integer) : "Delay between shots (seconds)" : 5

	is_player_ally(Choices) : "Is Player Ally" : 0 =
	[
		0 : "No (Default)"
		1 : "Yes"
	]
]

@PointClass base(Targetname, Angles) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop"
[
	spawnflags(Flags) =
	[
		1: "Wait for retrigger" : 0
		2: "Teleport to this" : 0
		4: "Fire once" : 0
		8: "Random targets" : 0
	]
	target(target_destination) : "Next stop target"
	message(target_destination) : "Fire On Arrive"
	wait(integer) : "Wait here (secs)" : 0
	speed(integer) : "New Train Speed" : 0
	yaw_speed(integer) : "New Train rot. Speed" : 0
]



//Processes and selects a path_condition for the NPC. Allows for multiple path_conditions to be used for a single NPC.
@PointClass base(Targetname) color(145 255 145) = path_condition_controller : "NPC Path Condition Controller"
[
	spawnflags(Flags) =
	[
		1 : "Start Off" : 0 // If checked, this controller starts in-active and can not be used until triggered.
	]

	pathcondition_list(string) 	: "Path_condition List" 	//Comma separated list of path_condition names (Required).

	selecttype(Choices) 		: "Selection Mode" 		: 0 =
	[
		0 : "First Found (Default)" // The first path_condition found (highest priority and active) will be picked.
		1 : "Random" 				// Any path_condition entities that [share the same priority level] and are [active] will be evaluated together and randomly chosen.
		2 : "Nearest to NPC" 		// The nearest path_condition found (to the NPC) will be picked. Distance based on path_waypoint to the NPC.
	]
]


//Processes and selects a path_waypoint for the NPC or path_condition_controller.
@PointClass base(Targetname) color(225 148 32) = path_condition : "NPC Path Condition"
[
	spawnflags(Flags) =
	[
		1 : "Start Off" : 0	 // If checked, this path_condition starts in-active and can not be used until triggered with USE_ON or USE_TOGGLE.
	]

	delay_interval(string)			: "Delay Interval"		: "0.1"	//Default time between checks. Minimum is 0.1.

	conditions_reference(string)	: "Conditions (Definition Name)"

	mindistance(integer) 			: "Min Distance" 		: 0 	// 0 = infinite. If not within specified range, path_condition isn't evaluated.
	maxdistance(integer) 			: "Max Distance" 		: 0 	// 0 = infinite. If not within specified range, path_condition isn't evaluated.

	starttrigger(string) 			: "Trigger on Stop Condition" 	//Thing to trigger upon start

	priority(integer) 				: "Priority Level" 		: 0 	// 0 would be the default priority, followed by 1, 2, 3, etc. Higher numbers take precedence over lower numbers.
	selecttype(Choices) 			: "Priority Override" 	: 0 =
	[
		0 : "None (Default)"
		1 : "Ignore Following"
		2 : "Ignore Following and Guarding"
		3 : "Ignore Following, Guarding, and Scripts"
	]

	pre_location(Choices) 			: "Pre-Waypoint Destination" : 0 =
	[
		0 : "None (Default)"		// Don't use a pre-waypoint destination, go to the first path_waypoint.
		1 : "Use This Origin" 		// Use path_condition's origin.
		2 : "Enemy"
		3 : "Dead Enemy"
		4 : "Sound"
		5 : "Scent"
		6 : "Near Hiding Spot"		//Compute a nearby hiding spot, run to it.
		7 : "Far Hiding Spot"		//Compute a distant hiding spot, run to it.
		8 : "Named Entity" 			// Origin of a specific entity
		9 : "Entity by Key:Value"
	]

	pre_location_values(string) 	: "Pre-Waypoint Parameters"
	//	1 : "Use This Origin" 				No options.
	//	2 : "Enemy"							No options.
	//	3 : "Dead Enemy" 	 				No options.
	//	4 : "Sound" 						Type sound-filter. E.g. (SOUND_DANGER)
	//	5 : "Scent"							Type scent-filter. E.g. (SCENT_FOOD OR SCENT_CARCASS)
	//	6 : "Near Hiding Spot"				Type minimum distance.
	//	7 : "Far Hiding Spot"				Type maximum distance.
	//	8 : "Named Entity" 					Type entity name.
	//	9 : "Entity by Key:Value"			Type in format: "keyname:keyvalue", optional: Use ( parentheses ), ==, >, >=, <, <=, AND, OR operators.

	//When this path_condition is picked, a waypoint must be picked to start the NPC off on. Select how the waypoint is picked.
	selecttype(Choices) 			: "Waypoint Selection" : 0 =
	[
		0 : "Start Waypoint" 				// NOTE: The nearest waypoint will be selected if a starting waypoint is not specified when this option is selected.
		1 : "Nearest Waypoint to NPC" 		//The nearest group found (to the NPC) will be picked.
		2 : "Random Waypoint"
	]

	path_start(string) 				: "Start Waypoint"							//Leave blank for none.
	waypoint_list(string)			: "Path_Waypoint List" 						//Required if not using Starting Waypoint for selection.
	key_filter(string)				: "NPC Keyvalue Filter"						//Type in format: "$keyname > 1 AND $keyname == 1", optional: Use ( parentheses ), ==, >, >=, <, <=, AND, OR operators.
	npc_trigger_target(string)   	: "NPC Trigger Target"  					//NPC will trigger this entity when on this path
	npc_trigger_interval(integer)	: "NPC Trigger Interval" 					//NPC will trigger every N seconds
	m_szASConditionsName(string)	: "Angelscript condition name"				//Name of the Angelscript condition that was registered by a map script
]




@PointClass base(Targetname) color(125 255 255) = path_waypoint : "NPC Path Waypoint"
[
	target(target_destination) 					: "Next Path_waypoint"
	alternate_target(target_destination) 		: "Alternate Next Path_waypoint" 	//Alternate Waypoint to use if we're toggled to use our alternate.

	movementtype(Choices) 						: "Move to Position" : 0 =			// How the monster will move to this waypoint.
	[
		0 : "Walk"
		1 : "Run"
		2 : "Teleport"
		3 : "Turn to Face"
		4 : "Don't Move"
	]

	radius(integer) 							: "Move within Radius" 		: 0 	// When in radius, the NPC has finished moving to the waypoint.	Only works for Walk / Run.

	useangles(choices)							: "Face Waypoint Direction" : 0 =   //Yes = Upon arrival, the NPC's YAW will change gradually to match the path_waypoint's YAW
	[
		0 : "No (default)"
		1 : "Yes"
	]

	trigger_on_arrival(target_destination) 		: "Trigger on Arrival" 				// Target to fire before starting the arrival animation.
	arrival_animation(string)					: "Arrival Animation"				// Animation to play on arrival.
	trigger_after_arrival(target_destination)	: "Trigger after Arrival Animation"	// Target to fire upon completing the arrival animation. If no arrival animation, fired after Trigger on Reach is fired.

	wait_activity(Choices) 						: "Wait Activity" 			: 0 =
	[
		0 : "Play Wait Animation (default)"
		1 : "Look around"
		2 : "Investigate Area"
		3 : "Use AI" 							//Let the NPC's AI take over while waiting.
	]

	wait_animation(string)						: "Wait Animation"					// Animation to play when waiting at this waypoint. (Looped) If animation is blank, the monster will stand in place. If wait time is zero, this is not used.
	wait_time(integer)							: "Wait Time" 				: 0 	// After the position is reached, the monster must wait this long before moving to the next waypoint, and before any targets are fired.
	wait_master(string)							: "Wait Master"  					// Master entity to analyze - the multisource which, when activated, lets the path_waypoint know it can let the NPC continue.

	waituntilfull(choices)						: "Wait Here Until Full" 	: 0 = 	// Force NPC to wait until this waypoint is full before proceeding to the next waypoint. If Maximum Occupants is 0, a level error message will occur.
	[
		0 : "No (default)"
		1 : "Yes"
	]

	departure_animation(string)					: "Departure Animation"				// Animation to play before leaving waypoint. Target On Pass is fired after animation completes if animation is present.
	trigger_on_departure(target_destination) 	: "Trigger on Departure" 			// Target to fire when the NPC finishes the Departure Animation. If no Departure Animation, fired immediately after waiting.

	//--------------------------------------------------------------------------------------------------
	// START OVERFLOW
	//--------------------------------------------------------------------------------------------------
	occupant_radius_check(integer)				: "Occupant Radius" 	: 0   		// If an NPC is within the radius of this path_waypoint, it takes up an occupant slot.
	occupant_limit(integer)						: "Maximum # Occupants" 	: 0 	// This point only accepts X number of NPCs at a time.
	// If this waypoint is full, monsters will go to the following waypoint specified instead.
	// If the provided overflow point is removed or not available, the NPC will remain at the previous waypoint or position until room is available.
	overflow_waypoint(string)					: "Overflow Waypoint"
	//--------------------------------------------------------------------------------------------------
	// END OVERFLOW
	//--------------------------------------------------------------------------------------------------


	// Forces the NPC to finish this particular path_waypoint even if a higher priority path is found, provided that the stop conditions are not met.
	// NOTE: This disables path_condition / path_condition_controller evaluation during the extent of the trip and departure.
	force_complete(Choices) 					: "Force Waypoint Completion" : 0 =
	[
		0 : "No (default)"
		1 : "Yes"
	]

	 //If this path_waypoint releases the NPC because of a stop condition, (e.g. a new enemy appears) something can be triggered.
	stop_trigger(string) 						: "Trigger on Stop Condition"
	restart_delay(integer) 						: "Delay before Return"		: 0 //If the NPC has stopped moving because of a stop condition (E.g. hearing a gunshot), the NPC will wait this long before continuing back to this path_waypoint.
]








@PointClass base(Targetname, Angles) size(16 16 16)  color(255 148 0) = path_track : "Train Track Path"
[
	spawnflags(Flags) =
	[
		1: "Disabled" : 0
		2: "Fire once" : 0
		4: "Branch Reverse" : 0
		8: "Disable train" : 0
	]
	target(target_destination) : "Next stop target"
	message(target_destination) : "Fire On Pass"
	altpath(target_destination) : "Branch Path"
	netname(target_destination) : "Fire on dead end"
	newspeed(integer) : "New Train Speed" : -1
	maxspeed(integer) : "New Maximum Speed" : -1
	speed(integer) : "New Train Speed (Legacy)" : 0
]

@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"
	messagetime(string) : "Show Message delay" : "0"
	message(string) : "Message To Display" : ""
	loadtime(string) : "Reload delay" : "0"
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(96 32 128) = player_weaponstrip : "Strips player's weapons"
[
	spawnflags(Flags) =
	[
		1 : "Strip suit, too" : 0
	]
	m_iAffected(choices) : "Players to strip" : 0 =
	[
		0 : "Activator only (default)"
		1 : "All players"
		2 : "All players except activator"
	]
]

@SolidClass base(Targetname, ZHLTbmodel) = player_respawn_zone : "Player Zone Respawn brush"
[
	zonetype(choices) : "Zone Type" : 0 =
	[
		0: "Respawn all outside"
		1: "Respawn all inside"
	]
]

@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 200) = scripted_sentence : "Scripted Sentence"
[
	spawnflags(Flags) =
	[
		1 : "Fire Once" 	: 1
		2 : "Followers Only"	: 0
		4 : "Interrupt Speech"	: 1
		8 : "Concurrent"	: 0
	]
	sentence(string) : "Sentence Name" : ""
	entity(string) : "Speaker Type"
	duration(string) : "Sentence Time" : "3"
	radius(integer) : "Search Radius" : 512
	refire(string) : "Delay Before Refire" : "3"
	listener(string) : "Listener Type"
	volume(string) : "Volume 0-10" : "10"
	attenuation(Choices) : "Sound Radius" : 0 =
	[
		0 : "Small Radius"
		1 : "Medium Radius"
		2 : "Large  Radius"
		3 : "Play Everywhere"
	]
]

@PointClass base(Targetname, Targetx, Angles) size(-16 -16 0, 16 16 72) color(164 128 255) = scripted_sequence : "Scripted Sequence"
[
	m_iszEntity(string) : "Target Monster"
	m_iszPlay(string) : "Action Animation" : ""
	m_iszIdle(string) : "Idle Animation" : ""
	m_flRadius(integer) : "Search Radius" : 512
	m_flRepeat(integer) : "Repeat Rate ms" : 0
	m_fMoveTo(choices) : "Move to Position" : 0 =
	[
		0 : "No"
		1 : "Walk"
		2 : "Run"
		4 : "Instantaneous"
		5 : "No - Turn to Face"
	]
	moveto_radius(integer) : "Move to Radius" : 0
	spawnflags(Flags) =
	[
		4 : "Repeatable"	: 0
		8 : "Leave Corpse"	: 0
		32: "No Interruptions"	: 0
		64: "Override AI"	: 0
		128: "No Script Movement" : 0
		256: "No Reset Entity" : 0
	]
]

@PointClass iconsprite("sprites/vhe-iconsprites/speaker.spr") base(Targetname) color(225 200 210) = speaker : "Announcement Speaker"
[
	preset(choices) : "Announcement Presets" : 0 =
	[
		0: "None"
		1: "C1A0 Announcer"
		2: "C1A1 Announcer"
		3: "C1A2 Announcer"
		4: "C1A3 Announcer"
		5: "C1A4 Announcer"
		6: "C2A1 Announcer"
		7: "C2A2 Announcer"
		//8: "C2A3 Announcer"
		9: "C2A4 Announcer"
		//10: "C2A5 Announcer"
		11: "C3A1 Announcer"
		12: "C3A2 Announcer"
	]
	message(string) : "Sentence Group Name"
	health(integer) : "Volume (10 = loudest)" : 5
	spawnflags(flags) =
	[
		1: "Start Silent" : 0
	]
]

@PointClass base(Targetname, Angles, RenderFields, AttackObject, NotRevivable) size(-16 -16 0, 16 16 72) color(245 128 96) = squadmaker : "Squad Maker"
[
	spawnflags(Flags) =
	[
		1 : "Start ON" 	: 0
		//2 : "PVS On/Off" : 0
		4 : "Cyclic" : 0
		8 : "MonsterClip" : 0
		16 : "Prisoner" : 0
		32 : "Auto Size BBox" : 0
		64 : "Cyclic Backlog" : 0
		128 : "WaitForScript" : 0
		1024 : "No Respawn (Collectible)" : 0
	]

	target(string) : "Target On Release"
	monstertype(string) : "Monster Type"
	netname(string) : "Childrens' Name"

	// How many monsters the monstermaker can create (-1 = unlimited)
	monstercount(integer) : "Monster count " : -1

	// If delay is -1, new monster will be made when last monster dies.
	// Else, delay is how often (seconds) a new monster will be spawned.
	delay(string) : "Delay between spawns" : "5"

	// Maximum number of live children allowed at one time. (New ones will not be made until one dies)
	// -1 no limit
	m_imaxlivechildren(integer) : "Max live children" : 5

	spawn_mode(Choices) : "Blocked Spawn Handling" : 0 =
	[
		0 : "Legacy, no special handling"
		1 : "Block, spawn as soon as clear"
		2 : "Force spawn, never block"
	]

	dmg(integer) : "Amount of Telefrag Damage" : 0

	trigger_target(String) : "TriggerTarget"
	trigger_condition(Choices) : "Trigger Condition" : 0 =
	[
		0 : "No Trigger"
		1 : "See Player, Mad at Player"
		2 : "Take Damage"
		3 : "50% Health Remaining"
		4 : "Death"
		7 : "Hear World"
		8 : "Hear Player"
		9 : "Hear Combat"
		10: "See Player Unconditional"
		11: "See Player, Not In Combat"
	]
	new_body(integer) : "Body (-1 off)" : -1

	respawn_as_playerally(choices) : "Is Player Ally" :  0 =
	[
		0 : "Default (0)"
		1 : "Opposite (1)"
	]

	change_rendermode(Choices) : "Override Render Mode" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	xenmaker(String) : "Xenmaker Template Name"

	notsolid(Choices) : "Not Solid" : -1 =
	[
		-1 : "Default"
		0 : "No"
		1 : "Yes"
	]

	gag(Choices) : "Gag" : -1 =
	[
		-1 : "Default"
		0 : "No"
		1 : "Yes"
	]

	weapons(Choices) : "Weapons (Grunt/Massn/etc)" : 0 =
	[
		0 : "Default / No setting"
		1 : "MP5"
		3 : "MP5 + HG"
		5 : "M16 + GL"
		8 : "Shotgun / Sniper Rifle"
		10 : "Shotgun / Sniper Rifle + HG"
		16 : "SAW (human_grunt_ally only!)"
		32 : "No Weapons (male_assassin only!)"
		64 : "Rocket Launcher"
		66 : "Rocket Launcher + HG"
		256 : "Don't drop weapon (HWG etc)"
	]

	squadname(String) : "Squad Name" : ""
	is_squad_leader(Choices) : "Squad Leader" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	displayname(string) : "In-game Name" : ""
	bloodcolor(choices) : "Blood Color" : 0 =
	[
		0 : "Monster Default"
		-1 : "No Blood"
		1 : "Red"
		2 : "Yellow"
	]
	health(integer) : "Custom Health" : 0
	new_model(studio) : "Custom Model" : ""
	minhullsize(string) : "Custom Min Hull Size (X Y Z)" : "0 0 0"
	maxhullsize(string) : "Custom Max Hull Size (X Y Z)" : "0 0 0"

	soundlist(string) : "Sound Replacement File"
	freeroam(Choices) : "Monster Roaming (nodes)" : 0 =
	[
		0 : "Map Default"
		1 : "Never"
		2 : "Always"
	]

	path_name(string) 		: "Path Name" 		// The name of the path_waypoint, path_condition, or path_condition_controller this monster will look to.

	// This will make the monster follow/protect whoever is specified
	guard_ent(string): "Entity to Guard" : ""

	wpn_v_model(String) : "V_model (Weapons Only)" : ""
	wpn_w_model(String) : "W_model (Weapons Only)" : ""
	wpn_p_model(String) : "P_model (Weapons Only)" : ""

	function_name(string) : "Angelscript function name" //Angelscript function to call on creation of a monster. Format: void FunctionName(MonsterEntity@ pSquadmaker, Entity@ pMonster)
]

@PointClass base(Targetname) color(255 240 128) = target_cdaudio : "CD Audio Target"
[
	health(choices) : "Track #" : -1 =
	[
		-1 : "Stop"
		1 : "Track 1"
		2 : "Track 2"
		3 : "Track 3"
		4 : "Track 4"
		5 : "Track 5"
		6 : "Track 6"
		7 : "Track 7"
		8 : "Track 8"
		9 : "Track 9"
		10 : "Track 10"
		11 : "Track 11"
		12 : "Track 12"
		13 : "Track 13"
		14 : "Track 14"
		15 : "Track 15"
		16 : "Track 16"
		17 : "Track 17"
		18 : "Track 18"
		19 : "Track 19"
		20 : "Track 20"
		21 : "Track 21"
		22 : "Track 22"
		23 : "Track 23"
		24 : "Track 24"
		25 : "Track 25"
		26 : "Track 26"
		27 : "Track 27"
		28 : "Track 28"
		29 : "Track 29"
		30 : "Track 30"
	]
//	radius(string) : "Player Radius"
]

@PointClass base(Targetx) color(250 10 165) = trigger_auto : "AutoTrigger"
[
	spawnflags(Flags) =
	[
		1 : "Remove On fire" : 1
	]
	globalstate(string) : "Global State to Read"
	triggerstate(choices) : "Trigger State" : 0 =
	[
		0 : "Off"
		1 : "On"
		2 : "Toggle"
	]
]

@SolidClass base(Targetname, ZHLTbmodel) = trigger_autosave : "AutoSave Trigger"
[
	master(string) : "Master"
]

@PointClass base(Targetx, Targetname, Angles) studio("models/vhe-models/trigger_camera.mdl") color(200 255 255) = trigger_camera : "Trigger Camera"
[
	wait(integer) : "Hold time" : 10
	moveto(string) : "Path Corner"
	spawnflags(flags) =
	[
		1: "Start At Player" : 1
		2: "Follow Player" : 1
		4: "Freeze Player" : 0
		8: "All Players" : 0
		16: "Force View" : 0
		32: "No Instant Turn" : 0
		64: "Instant Move" : 0
		128: "Mouse Cursor" : 0
		256: "Player Invulnerable" : 0
		512: "Ignore Hold Time" : 0
	]
	speed(string) : "Initial Speed" : "0"
	acceleration(string) : "Acceleration units/sec^2" : "500"
	deceleration(string) : "Stop Deceleration units/sec^2" : "500"
	turnspeed(string) : "Camera Rotation Speed" : "40"
	mouse_action_0_0(choices) : "Left Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
		7 : "Spawn"
		8 : "Teleport"
		9 : "Teleport Away"
		10 : "Create Explosion"
		11 : "Drag"
		255 : "Exit Camera (Non-forced only)"
	]
	mouse_param_0_0(string) : "Left Click Param"
	mouse_action_1_0(choices) : "Right Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
		7 : "Spawn"
		8 : "Teleport"
		9 : "Teleport Away"
		10 : "Create Explosion"
		11 : "Drag"
		255 : "Exit Camera (Non-forced only)"
	]
	mouse_param_1_0(string) : "Right Click Param"
	mouse_action_2_0(choices) : "Third Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
		7 : "Spawn"
		8 : "Teleport"
		9 : "Teleport Away"
		10 : "Create Explosion"
		11 : "Drag"
		255 : "Exit Camera (Non-forced only)"
	]
	mouse_param_2_0(string) : "Third Click Param"
	mouse_action_0_1(choices) : "Left Double Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
		7 : "Spawn"
		8 : "Teleport"
		9 : "Teleport Away"
		10 : "Create Explosion"
		11 : "Drag"
		255 : "Exit Camera (Non-forced only)"
	]
	mouse_param_0_1(string) : "Left Click Param"
	mouse_action_1_1(choices) : "Right Double Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
		7 : "Spawn"
		8 : "Teleport"
		9 : "Teleport Away"
		10 : "Create Explosion"
		11 : "Drag"
		255 : "Exit Camera (Non-forced only)"
	]
	mouse_param_1_1(string) : "Right Click Param"
	mouse_action_2_1(choices) : "Third Double Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
		7 : "Spawn"
		8 : "Teleport"
		9 : "Teleport Away"
		10 : "Create Explosion"
		11 : "Drag"
		255 : "Exit Camera (Non-forced only)"
	]
	mouse_param_2_1(string) : "Third Double Click Param"

	// Signature for AS callback method is: bool YourMouseEventCallbackName(CBaseEntity@ pCamera, CBaseEntity@ pPlayer, CBaseEntity@ pEntity, int mouseEvent, int mouseEventParam, float screenX, float screenY, Vector mousePosition, Vector clickDirection, Vector clickPlaneNormal, float scale)
	// pCamera - the camera entity calling this method
	// pPlayer - the player who created the mouse event
	// pEntity - the entity "hit" by the cursor (if any)
	// mouseEvent - one of:
	//	 MOUSE_RELEASED = 0;
	//	 MOUSE_PRESSED = 1;
	//	 MOUSE_DOUBLE_PRESSED = 2;
	//	 MOUSE_DRAGGED = 3;
	//	 MOUSE_POS_CHANGED = 4;
	//	 MOUSE_WHEEL_SCROLLED = 5;
	// mouseEventParam - depends on the event:
	//	 if event is MOUSE_WHEEL_SCROLLED, mouseEventParam is the scrollDelta (usually: 1, 2, 3 or -1, -2, -3)
	//	 if event is any other, mouseEventParam is one of:
	//		 MOUSE_BUTTON_LEFT = 0;
	//		 MOUSE_BUTTON_RIGHT = 1;
	//		 MOUSE_BUTTON_MIDDLE = 2;
	// screenX - x coordinate of the mouse cursor on screen (from -1 to 1)
	// screenY - y coordinate of the mouse cursor on screen (from -1 to 1)
	// mousePosition - the position of the mouse cursor in world coordinates
	// clickDirection - the direction from the camera origin to the cursor "hit" point, basically: (camera->origin - mousePosition).Normalize()
	// clickPlaneNormal - the normal vector of the surface that was hit by the mouse cursor
	// scale - if clicked through a portal with scale, this is the final scale (useful for scaling explosions or other visual/physical effects caused by the mouse event), usually this will be 1.0
	m_iszASMouseEventCallbackName(string) : "AS Mouse Event Callback Name"

	// Signature for AS callback method is: void YourKeyInputCallbackName(CBaseEntity@ pCamera, CBasePlayer@ pPlayer, bool down, KeyCode keycode)
	// pCamera - the camera entity calling this method
	// pPlayer - the player who created the key input
	// down - true if key is pressed, false if key is released
	// keycode - identifier of a keyboard key (see https://github.com/ValveSoftware/halflife/blob/master/utils/vgui/include/VGUI_KeyCode.h)
	m_iszASKeyInputCallbackName(string) : "AS Key Input Callback Name"

	// Sets a player's target name when they use the camera, unsets it, when they stop using it
	m_iszOverridePlayerTargetname(string) : "Set Player Targetname"

	// Targets to trigger when a player starts or stops using a camera
	m_iszTargetWhenPlayerStartsUsing(string) : "Target when player starts using"
	m_iszTargetWhenPlayerStopsUsing(string) : "Target when player stops using"

	// Target to fire when the camera is turned off (either through trigger or because time ran out)
	m_iszTurnedOffTarget(string) : "Target when turned off"

	max_player_count(integer) : "Max Players" : 1
	max_player_target(string) : "Target: Player tried to use, but Max Players reached"

	hud_health(choices) : "HUD: Health and Battery" : 0 =
	[
		0 : "Show Health and Battery"
		1 : "Hide Health and Battery"
	]
	hud_flashlight(choices) : "HUD: Flashlight" : 0 =
	[
		0 : "Show Flashlight"
		1 : "Hide Flashlight"
	]
	hud_weapons(choices) : "HUD: Weapons" : 0 =
	[
		0 : "Show Weapons"
		1 : "Hide Weapons"
	]
	cursor_sprite(sprite) : "Custom Cursor (Sprite)"
]

@SolidClass base(Targetname, ZHLTbmodel) = trigger_cameratarget : "Camera Target"
[
	spawnflags(flags) =
	[
		1: "Invisible" : 0
		2: "Start Off" : 0
	]

	mouse_action_0_0(choices) : "Left Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
	]
	mouse_param_0_0(string) : "Left Click Param"
	mouse_target_0_0(string) : "Left Click Target"

	mouse_action_1_0(choices) : "Right Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
	]
	mouse_param_1_0(string) : "Right Click Param"
	mouse_target_1_0(string) : "Right Click Target"

	mouse_action_2_0(choices) : "Third Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
	]
	mouse_param_2_0(string) : "Third Click Param"
	mouse_target_2_0(string) : "Third Click Target"

	mouse_action_0_1(choices) : "Left Double Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
	]
	mouse_param_0_1(string) : "Left Double Click Param"
	mouse_target_0_1(string) : "Left Double Click Target"

	mouse_action_1_1(choices) : "Right Double Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
	]
	mouse_param_1_1(string) : "Right Double Click Param"
	mouse_target_1_1(string) : "Right Double Click Target"

	mouse_action_2_1(choices) : "Third Double Click Action" : 0 =
	[
		0 : "No Action"
		1 : "Trigger Off"
		2 : "Trigger On"
		3 : "Trigger Toggle"
		4 : "Remove"
		5 : "Hurt"
		6 : "Heal"
	]
	mouse_param_2_1(string) : "Third Double Click Param"
	mouse_target_2_1(string) : "Third Double Click Target"
]

@SolidClass base(Targetname, ZHLTbmodel) = trigger_cdaudio : "Trigger CD Audio"
[
	health(choices) : "Track #" : -1 =
	[
		-1 : "Stop"
		1 : "Track 1"
		2 : "Track 2"
		3 : "Track 3"
		4 : "Track 4"
		5 : "Track 5"
		6 : "Track 6"
		7 : "Track 7"
		8 : "Track 8"
		9 : "Track 9"
		10 : "Track 10"
		11 : "Track 11"
		12 : "Track 12"
		13 : "Track 13"
		14 : "Track 14"
		15 : "Track 15"
		16 : "Track 16"
		17 : "Track 17"
		18 : "Track 18"
		19 : "Track 19"
		20 : "Track 20"
		21 : "Track 21"
		22 : "Track 22"
		23 : "Track 23"
		24 : "Track 24"
		25 : "Track 25"
		26 : "Track 26"
		27 : "Track 27"
		28 : "Track 28"
		29 : "Track 29"
		30 : "Track 30"
	]
]

@PointClass base(Targetname, Target, AttackObject) color(128 96 2) = trigger_change_class : "Trigger Change Class" []

@SolidClass base(Targetname, InventoryRules, ZHLTbmodel) = trigger_changelevel : "Trigger Change level"
[
	spawnflags(flags) =
	[
		1: "No Intermission" : 0
		2: "USE Only" : 0
		4: "No CVAR override" : 0
	]
	map(string) : "New map name"
	landmark(string) : "Landmark name"
	keep_inventory(choices) : "Players take inventory to new map" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]
	changetarget(target_destination) : "Change Target"
	changedelay(string) : "Delay before change target" : "0"

	percent_of_players(string) : "Percentage of players needed" : "0"
]

@PointClass base(Targetname) color(100 100 200) = trigger_changemaxammo : "Trigger Change Max Ammo"
[
	target(target_destination) : "Trigger after fire"
	spawnflags(flags) =
	[
		1 : "All players" : 0
		2 : "Remove excess ammo" : 0
		4 : "Set ammo to new max" : 0
	]

	message(choices) : "Ammo name" : "9mm" =
	[
		"9mm" : "9mm Rounds"
		"bolts" : "Crossbow Bolts"
		"357" : ".357 Rounds"
		"uranium" : "Uranium Ammo"
		"Hand Grenade" : "Hand Grenades"
		"Hornets" : "Hornets"
		"556" : "5.56 Rounds"
		"ARgrenades" : "AR Grenades"
		"health" : "Health (Medkit Ammo)"
		"rockets" : "Rockets"
		"Satchel Charge" : "Satchel Charges"
		"shock charges" : "Shock Rifle Ammo"
		"buckshot" : "Shotgun Ammo"
		"m40a1" : "Sniper Rifle Ammo"
		"sporeclip" : "Spore Launcher Ammo"
		"Snarks" : "Snarks"
		"Trip Mine" : "Trip Mines"
	]

	m_iMaxAmmo(integer) : "Value to use" : 100
	m_Mode(choices) : "Change Max Ammo Mode" : 0 =
	[
		0 : "Set"
		1 : "Reset"
		2 : "Add"
		3 : "Subtract"
	]
]

@PointClass base(Targetname, Target) color(140 0 130) = trigger_changemodel : "Trigger Change Model"
[
	model(studio) : "New Model Name" : ""
	skin(integer) : "Skin" : 0
]

@PointClass base(Targetname, Targetx) color(60 155 30) = trigger_changetarget : "Trigger Change Target"
[
	m_iszNewTarget(string) : "New Target"
]

// Change any entity keyvalue during runtime, allows set, basic arithmetic operations and bitwise logical operations (useful for flags)
@PointClass base(Targetname) color(90 215 60) = trigger_changevalue : "Trigger Change Value"
[
	spawnflags(Flags) =
	[

		// For Vectors:
		1 : "Don't use X" : 0
		2 : "Don't use Y" : 0
		4 : "Don't use Z" : 0

		32 : "Invert target value" : 0
		64 : "Invert source value" : 0

	]
	target(target_destination) : "Destination entity"
	m_iszValueName(string) : "Destination key"
	m_iszNewValue(string) : "Source value"
	m_iszValueType(choices) : "Action" :  0 =
	[
		0 : "Replace (= source)"
		1 : "Add (= old + source)"
		2 : "Mul (= old * source)"
		3 : "Sub (= old - source)"
		4 : "Div (= old / source)"
		16 : "Pow (= old ^ source)"
		12 : "Mod (= old % source)"
		5 : "AND (= old & source)"
		6 : "OR (= old | source)"
		13 : "XOR (= old ^ source)"
		7 : "NAND (= !(old & source))"
		8 : "NOR (= !(old | source))"
		14 : "NXOR (= !(old ^ source))"
		11 : "Append (String concatenation)"
		17 : "Sin (= sin(source))"
		18 : "Cos (= cos(source))"
		19 : "Tan (= tan(source))"
		23 : "Cot (= cot(source))"
		20 : "Arcsin (= arcsin(source))"
		21 : "Arccos (= arccos(source))"
		22 : "Arctan (= arctan(source))"
		24 : "Arccot (= arccot(source))"
	]
	m_trigonometricBehaviour(choices) : "Trigonometric funcs. I/O" : 0 =
	[
		0 : "Degrees in (out for arc.)"
		1 : "Radian measure in (out for arc.)"
	]
	m_iAppendSpaces(integer) : "Append spaces (for strings)" : 0
	message(target_destination) : "Trigger after action"
]

// Copy value of one entity to another value of another entity
@PointClass base(Targetname) color(60 90 215) = trigger_copyvalue : "Trigger Copy Value"
[
	spawnflags(Flags) =
	[
		// For vectors
		1 : "Don't use X" : 0
		2 : "Don't use Y" : 0
		4 : "Don't use Z" : 0

		8 : "Constant" : 0

		// Only when "Constant" is on
		16 : "Start On" : 0

		32 : "Invert target value" : 0
		64 : "Invert source value" : 0
		128 : "Multiple destinations" : 0
	]
	netname(target_destination) : "Source entity"
	m_iszSrcValueName(string) : "Source key"
	target(target_destination) : "Destination entity"
	m_iszDstValueName(string) : "Destination key"
	m_iszValueType(choices) : "Action" :  0 =
	[
		0 : "Replace (= source)"
		1 : "Add (= old + source)"
		2 : "Mul (= old * source)"
		3 : "Sub (= old - source)"
		4 : "Div (= old / source)"
		16 : "Pow (= old ^ source)"
		12 : "Mod (= old % source)"
		5 : "AND (= old & source)"
		6 : "OR (= old | source)"
		13 : "XOR (= old ^ source)"
		7 : "NAND (= !(old & source))"
		8 : "NOR (= !(old | source))"
		14 : "NXOR (= !(old ^ source))"
		9 : "Direction to Angles"
		10 : "Angles to Direction"
		11 : "Append (String concatenation)"
		17 : "Sin (= sin(source))"
		18 : "Cos (= cos(source))"
		19 : "Tan (= tan(source))"
		23 : "Cot (= cot(source))"
		20 : "Arcsin (= arcsin(source))"
		21 : "Arccos (= arccos(source))"
		22 : "Arctan (= arctan(source))"
		24 : "Arccot (= arccot(source))"
	]
	m_iFloatConversion(choices) : "Float-to-string/-int conversion" : 0 =
	[
		0  : "6 decimal places (Default)"
		1  : "5 d. p., rounded to 5 d. p."
		4  : "4 d. p., rounded to 4 d. p."
		7  : "3 d. p., rounded to 3 d. p."
		10 : "2 d. p., rounded to 2 d. p."
		13 : "1 d. p., rounded to 1 d. p."
		16 : "Integer, rounded"
		17 : "Integer, rounded up"
		18 : "Integer, rounded down"
	]
	m_trigonometricBehaviour(choices) : "Trigonometric funcs. I/O" : 0 =
	[
		0 : "Degrees in (out for arc.)"
		1 : "Radian measure in (out for arc.)"
	]
	m_iAppendSpaces(integer) : "Append spaces (for strings)" : 0
	message(target_destination) : "Trigger after action"
	dmg(string) : "Copy-interval (seconds)" : "0.0"
]

// Checks values of entities and triggers if true or false
@PointClass base(Targetname) color(120 180 10) = trigger_condition : "Trigger Condition"
[
	spawnflags(Flags) =
	[
		1 : "Start Off" : 0

		// For vectors
		2 : "Don't use X (R)" : 0
		4 : "Don't use Y (G)" : 0
		8 : "Don't use Z (B)" : 0
		16 : "Don't use W (A)" : 0

		// Check once when fired - do not toggle
		32 : "Cyclic; no toggle" : 0

		// Forward original activator instead of overwriting it with the trigger_condition's entity id.
		// Not done by default, as time that passes till condition is true and trigger_condition fires,
		// activator may no longer exist and unwanted behaviour may be exhibited if it is used anyway.
		// Hence, you have to explicitly set the forwarding of the activator with this flag in order to
		// use it in entities targeted by trigger_condition. Caller is always forwarded.
		64 : "Keep '!activator'" : 0

		128 : "Ignore initial result" : 0
	]
	target(target_destination) : "Monitored entity"
	m_iszValueName(string) : "Monitored key"
	m_iszSourceName(target_destination) : "Compare-entity"
	m_iszSourceKey(string) : "Compare-key"
	m_iszCheckValue(string) : "Compare-value (alternative)"
	m_iCheckType(choices) : "Comparator; mon. val. -> comp.-val." :  0 =
	[
		// Ent keyvalue equals mappers value
		0 : "== (Equal)"

		// Ent keyvalue does not equal mappers value
		1 : "!= (Not equal)"

		// Ent keyvalue is smaller than mappers value
		2 : "< (Less)"

		// Ent keyvalue is greater than mappers value
		3 : "> (Greater)"

		// Ent keyvalue is less than or equal to mappers value
		4 : "<= (Less or equal)"

		// Ent keyvalue is greater than or equal to mappers value
		5 : ">= (Greater or equal)"

		// (Ent keyvalue & mappers value) does not equal 0 (Flag check)
		6 : "& (Logical AND)"
	]

	netname(string) : "Target for 'true'-case"
	message(string) : "Target for 'false'-case"

	m_iCheckBehaviour(choices) : "Constant mode trigger behaviour" : 0 =
	[
		0 : "Fire true/false alternatingly"
		1 : "Only wait after false"
		2 : "Only wait after true"
		3 : "Always fire for both"
	]

	// 0.0 means to check every frame
	m_fCheckInterval(string) : "Check-interval (seconds)" : "0.1"
]

@SolidClass base(Trigger, Targetname, ZHLTbmodel) color(238 240 238) = trigger_counter : "Trigger Counter"
[
	spawnflags(flags) =
	[
		1 : "No Message" : 0
	]
	master(string) : "Master"
	count(integer) : "Count before activation" : 2
]

@PointClass base(Targetname, Targetx) color(255 2 0) = trigger_createentity : "Create Entity"
[
	m_iszCrtEntChildClass(string) : "Child Classname"
	m_iszCrtEntChildName(string) : "Child Targetname"
	//m_iszTriggerAfter(target_destination) : "Trigger after spawn"
]

@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) color(100 100 128) = trigger_cyclicobserver : "Controls observer cyclic mode"
[
	m_Mode(choices) : "Mode to use" : 0 =
	[
		0: "Off"
		1: "On"
		2: "Toggle"
	]
]

@SolidClass base(Targetname, ZHLTbmodel) color(64 48 32) = trigger_endsection : "EndSection Trigger"
[
	section(string) : "Section"
	spawnflags(flags) =
	[
		1: "USE Only" : 0
	]
]

@PointClass base(Targetname) size(-12 -12 -12, 12 12 12) color(255 255 0) = trigger_entity_iterator : "Entity Iterator"
[
	name_filter(target_destination) : "Filter Entities by Name"
	classname_filter(string) : "Filter Entities by Classname"
	status_filter(choices) : "Filter Entities by Status" : 0 =
	[
		0 : "No Filter (default)"
		1 : "Only Living Entities"
		2 : "Only Dead Entities"
	]
	delay_between_triggers(string) : "Delay between Entities (secs)" : "0.0"
	target(target_destination) : "Entity's Trigger Target"
	triggerstate(choices) : "Entity's Trigger State" : 0 =
	[
		0 : "Off"
		1 : "On"
		2 : "Toggle"
	]
	run_mode(choices) : "Run Mode" : 0 =
	[
		0 : "Run Once"
		1 : "Run Once; Multi-threaded"
		2 : "Toggle On/Off"
	]
	trigger_after_run(target_destination) : "Trigger at end of each Run"
	maximum_runs(integer) : "Maximum Runs (0 for unlimited)" : 0
	delay_between_runs(string) : "Delay before Restarting (secs)" : "0.5"
]

@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity"
[
	gravity(integer) : "Gravity (0-1)" : 1
]

@SolidClass base(Targetname, Target, InventoryRules, ZHLTbmodel) = trigger_hurt : "Trigger Hurt"
[
	spawnflags(flags) =
	[
		1: "Target Once" : 0
		2: "Start Off" : 0
		8: "No clients" : 0
		16: "FireClientOnly" : 0
		32: "TouchClientOnly" : 0
		64: "Affect non-moving NPC's": 0
	]
	master(string) : "Master"
	dmg(integer) : "Damage" : 10
	delay(string) : "Delay before trigger" : "0"
	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"
	]
]

@PointClass base(Targetname, Target) = trigger_hurt_remote : "Trigger Hurt (non-touch)"
[
	spawnflags(Flags) =
	[
		1 : "Instant Kill" : 0
		2 : "Constant" : 0
		4 : "Start On" : 0
		8 : "Do Armor" : 0
	]
	targetclass(string) : "Target Class" : ""
	dmg(integer) : "Damage" : 10
	armordmg(integer) : "Armor Damage" : 0
	delay(string) : "Delay (Only when Constant)" : "1"
	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"
	]
]

@PointClass base(Targetname) = trigger_load : "Custom Load Data"
[
	m_iszLevelName(string) : "Alternate Level Save File"
	netname(string) : "Label to read from"
	target(string) : "Destination Entity"
	message(string) : "Destination Keyvalue"
	m_iszTrigger(String) : "Trigger after loading"
]

@PointClass base(Targetname, Angles) = trigger_lookat : "Forces one Ent to look at another Ent"
[
	spawnflags(Flags) =
	[
		1 : "Start On" : 0
		2 : "Set Once" : 0
	]
	target(string) : "Target"
	message(string) : "Entity to look at"
]

@SolidClass base(Angles, ZHLTbmodel) = trigger_monsterjump : "Trigger monster jump"
[
	master(string) : "Master"
	speed(integer) : "Jump Speed" : 40
	height(integer) : "Jump Height" : 128
]

@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple"
[
	wait(integer) : "Delay before reset" : 10
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(0 0 200) = trigger_numericdisplay : "Numeric Display"
[
	spawnflags(flags) =
	[
		1 : "Start On" : 0
		2 : "Cyclic" : 0
		4 : "Ignore leading zeroes" : 0
		8 : "Zero as leading" : 0
	]

	target(target_destination) : "Entity to track"
	netname(string) : "Key to read"
	message(string) : "Base digit name"	//Digit names are base_digit_name%u, where %u is 1-10
	frags(string) : "Update delay" : "0.1" //Delay, in seconds, between digit updates
]

@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" []

@SolidClass base(Trigger, Angles) = trigger_push : "Trigger push"
[
	spawnflags(flags) =
	[
		1: "Once Only" : 0
		2: "Start Off" : 0
		8: "No Clients" : 0
		16: "No Monsters" : 0
		64: "Force push" : 0
	]
	speed(integer) : "Speed of push" : 40
]

@BaseClass base(Targetname) = BaseRandom
[
	target_count(integer) : "Target Count" : 4
	target1(target_destination) : "Target 1"
	target2(target_destination) : "Target 2"
	target3(target_destination) : "Target 3"
	target4(target_destination) : "Target 4"
	target5(target_destination) : "Target 5"
	target6(target_destination) : "Target 6"
	target7(target_destination) : "Target 7"
	target8(target_destination) : "Target 8"
	target9(target_destination) : "Target 9"
	target10(target_destination) : "Target 10"
	target11(target_destination) : "Target 11"
	target12(target_destination) : "Target 12"
	target13(target_destination) : "Target 13"
	target14(target_destination) : "Target 14"
	target15(target_destination) : "Target 15"
	target16(target_destination) : "Target 16"
]

@PointClass base(BaseRandom) color(255 230 150) = trigger_random : "Trigger Random"
[
	spawnflags(Flags) =
	[
		1 : "Start On (Timed only)" : 0
		2 : "Trigger Once (Timed only)" : 0
		4 : "Reusable (Unique only)" : 0
		8 : "Timed" : 0
		16 : "Unique" : 0
	]

	min_delay(string) : "Minimum Delay (0 = off)" : "3.0"
	max_delay(string) : "Maximum Delay (0 = off)" : "7.0"
]

//Obsolete: use trigger_random with Timed flag
@PointClass base(trigger_random) color(135 205 255) = trigger_random_time : "Trigger Random Time"
[
]

//Obsolete: use trigger_ranom with Random flag
// Unique Trigger Random. Randomly selects an unused trigger.
@PointClass base(BaseRandom) color(225 170 70) = trigger_random_unique : "Trigger Random Unique"
[
	spawnflags(Flags) =
	[
		1 : "Re-usable" : 0
	]
]

@PointClass base(Targetname, Targetx) color(165 30 165) = trigger_relay : "Trigger Relay"
[
	spawnflags(flags) =
	[
		1: "Remove On fire" : 0

		// Forward original activator instead of overwriting it with the trigger_relay's entity id.
		// Not done by default, as time that passes till relay is true and trigger_relay fires,
		// activator may no longer exist and unwanted behaviour may be exhibited if it is used anyway.
		// Hence, you have to explicitly set the forwarding of the activator with this flag in order to
		// use it in entities targeted by trigger_relay.
		64 : "Keep '!activator'" : 0
	]
	triggerstate(choices) : "Trigger State" : 0 =
	[
		0: "Off"
		1: "On"
		2: "Toggle"
	]

	m_flDelayBeforeReset(string) : "Delay Before Reset" : "0"
]

// Giving mappers the ability to set the triggering player's targetname
@PointClass base(Targetname) color(192 255 128) = trigger_renameplayer : "Trigger Player Target"
[
	spawnflags(Flags) =
	[
		// If set, trigger_playertarget won't remove itself after being used.
		1 : "Reusable" : 0
	]
	netname(String) : "New Player Targetname"
]

// Respawn all players without affecting the current player status, like health and weapons
@PointClass base(Targetname, Target) size(-16 -16 -16, 16 16 16) color(255 64 2) = trigger_respawn : "Trigger Respawn"
[
	spawnflags(Flags) =
	[
		// Respawn target entity instead of all players.
		1 : "Respawn Target" : 0
		2 : "Respawn dead players" : 0
		4 : "Don't move living players" : 0
	]
]

@PointClass base(Targetname) = trigger_save : "Custom Save Data"
[
	netname(string) : "Label to store in"
	target(string) : "Source Entity"
	message(string) : "Source Keyvalue"
	m_iszTrigger(String) : "Trigger after saving"
]

@PointClass base(Targetname, Targetx) = trigger_script : "Loads a script and executes a script function on trigger"
[
	m_iszScriptFile(string) : "Script to load"
	m_iszScriptFunctionName(string) : "Function to execute on trigger"
	m_flThinkDelta(string) : "Time between thinks"
	m_iMode(choices) : "Mode" : 1 =
	[
		1 : "Trigger"
		2 : "Think"
	]

	spawnflags(flags) =
	[
		1 : "Start on" : 0
	]
]

@PointClass base(Targetname) color(40 200 150) = trigger_setcvar : "Sets a CVAR"
[
	//spawnflags(Flags) =
	//[
	//	1 : "Set silently" : 0 // Unimplemented!
	//]
	m_iszCVarToChange(choices) : "CVAR (only these are allowed)" : "mp_allowmonsterinfo" =
	[
		"mp_allowmonsterinfo":			"mp_allowmonsterinfo"
		"mp_banana":					"mp_banana"
		"mp_barnacle_paralyze":			"mp_barnacle_paralyze"
		"mp_disablegaussjump":			"mp_disablegaussjump"
		"mp_disable_autoclimb":			"mp_disable_autoclimb"
		"mp_disable_pcbalancing":		"mp_disable_pcbalancing"
		"mp_disable_player_rappel":		"mp_disable_player_rappel"
		"mp_dropweapons":				"mp_dropweapons"
		"mp_falldamage":				"mp_falldamage"
		"mp_flashlight":				"mp_flashlight"
		"mp_forcerespawn":				"mp_forcerespawn"
		"mp_fraglimit":					"mp_fraglimit"
		"mp_grapple_mode":				"mp_grapple_mode"
		"mp_monsterpoints":				"mp_monsterpoints"
		"mp_noblastgibs":				"mp_noblastgibs"
		"mp_nomedkit":					"mp_nomedkit"
		"mp_no_akimbo_uzis":			"mp_no_akimbo_uzis"
		"mp_npckill":					"mp_npckill"
		"mp_pcbalancing_factorlist":	"mp_pcbalancing_factorlist"
		"mp_respawndelay":				"mp_respawndelay"
		"mp_timelimit":					"mp_timelimit"
		"mp_weaponstay":				"mp_weaponstay"
		"mp_weapon_respawndelay":		"mp_weapon_respawndelay"
		"mp_ammo_respawndelay":			"mp_ammo_respawndelay"
		"mp_item_respawndelay":			"mp_item_respawndelay"
		"npc_dropweapons":				"npc_dropweapons"
		"skill":						"skill"
		"sk_":							"sk_* (see skill.cfg)"
		"sv_ai_enemy_detection_mode":	"sv_ai_enemy_detection_mode"
		"sv_accelerate":				"sv_accelerate"
		"sv_airaccelerate":				"sv_airaccelerate"
		"sv_friction":					"sv_friction"
		"sv_gravity":					"sv_gravity"
		"sv_maxspeed":					"sv_maxspeed"
		"sv_wateraccelerate":			"sv_wateraccelerate"
		"sv_waterfriction":				"sv_waterfriction"
	]
	message(string) : "New Value"
	netname(target_destination) : "Trigger after set"
	SetType(choices) : "Which CVARs to set" : 0 =
	[
		0 : "All"
		1 : "Engine"
		2 : "Angelscript"
	]
]

// Set the origin of an entity dynamically
@PointClass base(Targetname, Target) color(64 255 96) size(-8 -8 -8, 8 8 8) = trigger_setorigin : "Trigger Set Origin"
[
	spawnflags(flags) =
	[
		// Will constantly update position if set.
		1: "Constant" : 0

		// Trigger_setorigin entity will be removed after firing.
		4: "Set Once" : 0

		// Save the offset between the Target entity and the Copy pointer, apply offset when updating the Target entity's position
		// Requires "Constant" flag
		8: "Lock Offsets" : 0

		16: "Copy X Angle" : 0
		32: "Copy Y Angle" : 0
		64: "Copy Z Angle" : 0

		128: "Copy X Axis" : 1
		256: "Copy Y Axis" : 1
		512: "Copy Z Axis" : 1

		// If you're using the Constant flag, check this box to NOT move the origin of the entity or set the angles initially.
		// If you're not using the Constant flag, make sure this isn't enabled or trigger_setorigin won't do anything.
		//
		// This allows the "Constant" + "offset difference" combination to work as intended from the entity's original location.
		//
		// You would leave this off if you needed to move the entity to an initial position before having it follow another entity.
		// (If this isn't set, trigger_setorigin will move the entity to it's copypointer's origin before doing the offset difference calculation)
		1024: "Skip Initial Set" : 0
	]

	//The entity we wish to copy coordinates/angles from
	copypointer(string) : "Copy Pointer"

	//Manual Offset to copied coordinates
	offset(string) : "Position Offset (X Y Z)" : "0 0 0"

	//Applied once on first use
	//After first use - Applied if "constant" flag is checked, and for each "Copy [x, y, z] Angle" checked.
	angleoffset(string) : "Angle Offset (X Y Z)" : "0 0 0"


	invert_x(choices) : "Invert X Angle" :  0 =
	[
		0 : "No"
		1 : "Yes"
	]
	invert_y(choices) : "Invert Y Angle" :  0 =
	[
		0 : "No"
		1 : "Yes"
	]
	invert_z(choices) : "Invert Z Angle" :  0 =
	[
		0 : "No"
		1 : "Yes"
	]
]

@SolidClass base(Trigger) = trigger_teleport : "Trigger Teleport"
[
	spawnflags(flags) =
	[
		64: "Random Destination" : 0
		128: "Relative Teleport" : 0
		256: "Keep Angles" : 0
		512: "Keep velocity" : 0
		1024: "Rotate (Dest Angles)" : 0

		// Hammer will not save a spawn flag beyond 2048... (and 2048 is engine reserved)
		// 4096: "Start Inactive" : 0
		// 8192: "Ignore Delays" : 0
		// Their respective properties below will add the flag when the entity is created instead
	]
	teleport_cooldown(string) : "Teleport Cooldown Delay" : "1"
	teleport_ignore_delay(choices) : "Ignore Delays" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
	teleport_start_inactive(choices) : "Start Inactive" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]

	teleport_if_blocked(choices) : "Teleport If Blocked" : 0 =
	[
		0 : "Yes"
		1 : "No"
	]
]

@PointClass base(Targetname, Target) color(255 220 28) = trigger_track_goal : "Trigger Track Goal"
[
	spawnflags(Flags) =
	[
		// Only functions if train is not moving.
		1 : "Stopped Only" : 0
		2 : "Don't move if no path available" : 0
	]

	// Where the train wants to stop at.
	path_name(string) : "Path Name"
	m_iszSoundNoPath(sound) : "Sound to play if no path is available"
]

@SolidClass base(Targetname, ZHLTbmodel) = trigger_transition : "Trigger: Select Transition Area" []

// Gives mapper ability to start custom votes
@PointClass base(Targetname) color(32 138 255) = trigger_vote : "Trigger Vote"
[
	message(String) : "Vote Message"
	frags(integer) : "Time To Vote (Seconds)" : 90
	health(integer) : "Percentage needed" : 50
	target(String) : "Yes Target"
	netname(String) : "No Target"
	noise(String) : "No Vote Target"
	m_iszYesString(string) : "Yes string (optional)"
	m_iszNoString(string) : "No string (optional)"
]

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_357.mdl") = weapon_357 : "357 Handgun" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_9mmAR.mdl") = weapon_9mmAR : "9mm Assault Rifle" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_9mmhandgun.mdl") = weapon_9mmhandgun : "9mm Handgun" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_crossbow.mdl") = weapon_crossbow : "Crossbow"
[
	sequence(choices) : "Placement" : 0 =
	[
		0 : "Normal (flat)"
		1 : "Realistic (tilted)"
	]
]

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_crowbar.mdl") = weapon_crowbar : "Crowbar" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_displacer.mdl") = weapon_displacer : "Displacer"
[
	spawnflags(flags) =
	[
		64: "Random Destination" : 0
		128: "Rotate (Dest Angles)" : 0
		256: "Keep Angles" : 0
		512: "Keep velocity" : 0
		4096 : "Ignore delay" : 0
	]

	m_TertiaryMode(choices) : "Tertiary fire mode" : 0 =
	[
		0 : "Default (weaponmode_displacer)"
		1 : "Disable"
		2 : "Enable"
	]

	m_flPortalSpeed(string) : "Portal Speed"
	m_flPortalRadius(string) : "Portal Radius"
	m_iszTeleportDestination(target_destination) : "Teleport destination"

	m_flPrimaryAmmoNeeded(string) : "Ammo needed/used to fire primary"
	m_flSecondaryAmmoNeeded(string) : "Ammo needed/used to fire secondary"
	m_flTertiaryAmmoNeeded(string) : "Ammo needed/used to fire tertiary"
]

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_desert_eagle.mdl") = weapon_eagle : "Desert Eagle" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_egon.mdl") = weapon_egon : "Egon Gun" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_gauss.mdl") = weapon_gauss : "Gauss Gun" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_bgrap.mdl") = weapon_grapple : "Barnacle Grapple" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_grenade.mdl") = weapon_handgrenade : "Hand Grenade" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_hgun.mdl") = weapon_hornetgun : "Hornet Gun" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_m16.mdl") = weapon_m16 : "M16" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_saw.mdl") = weapon_m249 : "M249 SAW" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_medkit.mdl") = weapon_medkit : "Medkit" []

@PointClass base(Weapon, Targetx) studio("models/w_minigun.mdl") = weapon_minigun : "Minigun" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_pipe_wrench.mdl") = weapon_pipewrench : "Wrench" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_rpg.mdl") = weapon_rpg : "RPG" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_satchel.mdl") = weapon_satchel : "Satchel Charge" []

@PointClass base(Weapon, Targetx) studio("models/w_shock_rifle.mdl") = weapon_shockrifle : "Shock Rifle" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_shotgun.mdl") = weapon_shotgun : "Shotgun" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_sqknest.mdl") = weapon_snark : "Squeak Grenade" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_m40a1.mdl") = weapon_sniperrifle : "Sniper Rifle" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_spore_launcher.mdl") = weapon_sporelauncher : "Spore Launcher" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/vhe-models/w_tripmine_hammer.mdl") = weapon_tripmine : "Tripmine" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_uzi.mdl") = weapon_uzi : "Single UZI (2 UZIs for Akimbo)" []

@PointClass base(Weapon, Targetx, ExclusiveHold) studio("models/w_2uzis.mdl") = weapon_uziakimbo : "Akimbo UZIs" []

@PointClass base(Item, CustomRespawnDelay) studio("models/w_weaponbox.mdl") = weaponbox : "Weapon/Ammo Container"
[
	bullet9mm(integer) : "Packed 9mm rounds"
	bullet357(integer) : "Packed 357 rounds"
	buckshot(integer) : "Packed shotgun shells"
	bolts(integer) : "Packed crossbow bolts"
	bullet556(integer) : "Packed 5.56mm rounds"
	ARgrenades(integer) : "Packed assault rifle grenades"
	rockets(integer) : "Packed rockets"
	uranium(integer) : "Packed gauss charges"
	handgrenade(integer) : "Packed hand grenades"
	satchelcharge(integer) : "Packed satchels"
	tripmine(integer) : "Packed trip mines"
	Snarks(integer) : "Packed snarks"
	m40a1(integer) : "Packed 7.62mm rounds"
	sporeclip(integer) : "Packed spores"
]

@PointClass base(Weapon, Targetx) color(128 128 0) = world_items : "World Items"
[
	type(choices) : "Type" : 42 =
	[
		42 : "Antidote"
		43 : "Security Card"
		44 : "Battery"
		45 : "Suit"
	]
]

@PointClass base(Targetname, RenderFields, Angles) size(-8 -8 0, 8 8 32 ) studio("models/hair.mdl") = xen_hair : "Xen Hair"
[
	spawnflags(Flags) =
	[
		1 : "Sync Movement" : 0
		2 : "Drop To Ground" : 0
		4 : "Face Randomly" : 0
	]
]

@PointClass base(Targetname, Target, RenderFields, Angles, AttackObject) size(-48 -48 0, 48 48 32 ) studio("models/light.mdl") = xen_plantlight : "Xen Plant Light"
[
	spawnflags(Flags) =
	[
		2 : "Drop To Ground" : 0
		4 : "Face Randomly" : 0
	]
]

@PointClass base(Targetname, RenderFields, Angles) size(-90 -90 0, 90 90 220 ) studio("models/fungus(large).mdl") = xen_spore_large : "Xen Spore (large)"
[
	spawnflags(Flags) =
	[
		2 : "Drop To Ground" : 0
		4 : "Face Randomly" : 0
		8 : "Non Solid" : 0
	]
]

@PointClass base(Targetname, RenderFields, Angles) size(-40 -40 0, 40 40 120 ) studio("models/fungus.mdl") = xen_spore_medium : "Xen Spore (medium)"
[
	spawnflags(Flags) =
	[
		2 : "Drop To Ground" : 0
		4 : "Face Randomly" : 0
		8 : "Non Solid" : 0
	]
]

@PointClass base(Targetname, RenderFields, Angles) size(-16 -16 0, 16 16 64 ) studio("models/fungus(small).mdl") = xen_spore_small : "Xen Spore (small)"
[
	spawnflags(Flags) =
	[
		2 : "Drop To Ground" : 0
		4 : "Face Randomly" : 0
		8 : "Non Solid" : 0
	]
]

@PointClass base(Targetname, RenderFields, Angles) size(-24 -24 0, 24 24 188 ) studio("models/tree.mdl") = xen_tree : "Xen Tree"
[
	spawnflags(Flags) =
	[
		2 : "Drop To Ground" : 0
		4 : "Face Randomly" : 0
		8 : "Non Solid" : 0
	]
]