// Quoth v2.1 unified .def created by goldenboy
// updated by preach 24/07/2016
//Rotate_object comments by czg
//Quoth comments by Kell/Necros






/*QUAKED air_bubbles (0 .5 .8) (-8 -8 -8) (8 8 8)
Air bubbles

Often used to mark exits or secrets underwater.
*/




/*QUAKED ambient_light_buzz (.3 .1 .6) (-10 -10 -8) (10 10 8)
Buzzing light sound
*/

/*QUAKED ambient_drip (.3 .1 .6) (-10 -10 -8) (10 10 8)
Dripping sound
*/

/*QUAKED ambient_drone (.3 .1 .6) (-10 -10 -8) (10 10 8)
Slipgate machinery droning
sounds 1/2?
*/

/*QUAKED ambient_comp_hum (.3 .1 .6) (-10 -10 -8) (10 10 8)
Bleeping computer consoles
sounds 1/2/3?
*/

/*QUAKED ambient_flouro_buzz (.3 .1 .6) (-10 -10 -8) (10 10 8)
Fluorescent light sound
*/

/*QUAKED ambient_suck_wind (.3 .1 .6) (-10 -10 -8) (10 10 8)
Constant windtunnel/air vent blowing sound
sounds 1 for fan?
*/

/*QUAKED ambient_swamp1 (.3 .1 .6) (-10 -10 -8) (10 10 8)
Frogs and crickets
*/

/*QUAKED ambient_swamp2 (.3 .1 .6) (-10 -10 -8) (10 10 8)
More frogs and crickets
*/

/*QUAKED ambient_thunder (.3 .1 .6) (-10 -10 -8) (10 10 8)
Peal of thunder

Does not loop.
*/

/*QUAKED ambient_generalpurpose (.3 .1 .6) (-10 -10 -8) (10 10 8)
General purpose ambient sound playing entity (Quoth)

Cannot be triggered.

"volume"	default 1 = full volume
"noise"		sound file to play
"speed"		attenuation factor
		-1 - no attenuation
		1 - normal
		2 - idle
		3 - static
*/


/*QUAKED ambient_triggered (.3 .1 .6) (-10 -10 -8) (10 10 8)
General purpose ambient sound which starts off and is triggered (Quoth)

You must pre-register the noise file by also specifying it in one of the worldspawn keys noise1...noise4

"noise"		sound file to play
"targetname"	trigger to start the sound
*/


/*QUAKED corpse_flayed1 (.8 .4 0) (-12 -12 -72) (12 12 4) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - hanging upside down from a rope, still wearing camoflauge pants
*/

/*QUAKED corpse_flayed2 (.8 .4 0) (-12 -12 -72) (12 12 4) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - hanging upside down from a rope
*/

/*QUAKED corpse_flayed3 (.8 .4 0) (-12 -12 -72) (12 12 4) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - hanging upside down from a rope, mutilated, headless
*/

/*QUAKED corpse_flayed4 (.8 .4 0) (-12 -12 -72) (12 12 4) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - hanging upside down from a rope, legs crossed
*/

/*QUAKED corpse_lynched1 (.8 .4 0) (-12 -12 -72) (12 12 4) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - hanging by the neck from a rope, still wearing camoflauge pants
*/

/*QUAKED corpse_lynched2 (.8 .4 0) (-12 -12 -72) (12 12 4) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - hanging by the neck from a rope
*/

/*QUAKED corpse_lynched3 (.8 .4 0) (-12 -12 -72) (12 12 4) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - hanging by the neck from a rope, legless
*/

/*QUAKED corpse_crucified1 (.8 .4 0) (-12 -12 -44) (12 12 4) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - nailed by the wrists, no legs
*/

/*QUAKED corpse_crucified2 (.8 .4 0) (-12 -12 -44) (12 12 4) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - nailed by the wrists, legless, headless
*/

/*QUAKED corpse_impaled_back1 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - splayed backwards, impaled through the gut, still wearing camoflauge pants
*/

/*QUAKED corpse_impaled_back2 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - splayed backwards, impaled through the gut
*/

/*QUAKED corpse_impaled_back3 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - splayed backwards, impaled through the gut, limbless
*/

/*QUAKED corpse_impaled_front1 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - slumped forwards, impaled through the gut, still wearing camoflauge pants
*/

/*QUAKED corpse_impaled_front2 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - slumped forwards, impaled through the gut
*/

/*QUAKED corpse_impaled_front3 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - slumped forwards, impaled through the gut
*/

/*QUAKED corpse_impaled_horizontal1 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - upright, impaled through the gut, still wearing camoflauge pants
*/

/*QUAKED corpse_impaled_horizontal2 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - upright, impaled through the gut
*/

/*QUAKED corpse_impaled_horizontal3 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - upright, impaled through the gut, leg eaten, head bitten
*/

/*QUAKED corpse_impaled_horizontal4 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - upright, impaled through the gut, mutilated, headless
*/

/*QUAKED corpse_impaled_vertical1 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - upright, impaled from arse to mouth, still wearing camoflauge pants
*/

/*QUAKED corpse_impaled_vertical2 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - upright, impaled from arse to mouth
*/

/*QUAKED corpse_impaled_vertical3 (.8 .4 0) (-12 -12 -32) (12 12 32) x x x x x x x x NOEASY NOMEDIUM NOHARD
Corpse mapobject - upright, impaled from arse to mouth, mutilated, headless
*/




/*QUAKED info_effect_pulse (1 .5 0) (-8 -8 -8) (8 8 8) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Light pulse effect (Quoth)

"targetname"	optionally point a trigger here
"angle"		direction of the pulse
"mangle		direction in (x y z) form
"wait"		delay between pulses
"delay"		delay for first pulse
"speed"		speed of the pulse
*/




/*QUAKED event_lightning (0 1 1) (-16 -16 -16) (16 16 16)
Lightning setup used to kill Chthon
*/




/*QUAKED func_button (0 .5 .8) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "sounds"
 (
  (0,"steam metal")
  (1,"wooden clunk")
  (2,"metallic click")
  (3,"in-out")
 );
}
A button

When touched, will move in the direction of its angle, trigger its targets, wait some time and return to its position.

"angle"		determines the opening direction
"target"	all entities with a matching targetname will be activated
"killtarget"	kills matching targets when fired
"speed"		default is 40
"delay"		waits # seconds before firing
"wait"		default is 1 (-1 = never return)
"lip"		override the default 4 pixel lip remaining at end of move
"health"	if set, the button must be killed instead of touched
"message"	centerprints message to activator
"deathtype"	custom death message
"sounds"	sound played
*/

/*QUAKED func_door (0 .5 .8) ? START_OPEN x DOOR_DONT_LINK GOLD_KEY SILVER_KEY TOGGLE x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "sounds"
 (
  (0,"no sound")
  (1,"stone")
  (2,"base")
  (3,"stone chain")
  (4,"screechy metal")
 );
}
If two doors touch, they are assumed to be connected and operate as a unit.
Key doors are always wait -1.

"start_open"		door moves to its destination and operates in reverse
 the entity will be lighted in closed postion, but spawned in the open position
"x" 			this flag has been removed
"door_dont_link"	even if doors touch they won't be treated as a unit.
"gold_key"		gold key door (check worldspawn!)
"silver_key"		silver key door (worldspawn!)
"toggle"		wait in both the start and end states for a trigger event
"message"		printed when the door is touched if it is a trigger door and it hasn't been fired yet
"angle"			the opening direction
"targetname"		if set, no touch field will be spawned and a remote button or trigger field activates the door.
"target"		all matching entities will be activated
"killtarget"		all matching entities will be removed when fired
"health"		door must be shot open
"speed"			movement speed (100 default)
"wait"			wait before returning (3 is default, -1 = never return)
"delay"			waits # seconds before firing matching targets
"lip"			lip remaining at end of move 2 is default
"dmg"			damage to inflict when blocked 2 is default
"sounds"		sound played
"deathtype"		custom death message
*/



/*QUAKED func_door_button (0 .5 .8) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "sounds"
 (
  (0,"steam metal")
  (1,"wooden clunk")
  (2,"metallic click")
  (3,"in-out")
 );
}
A variant of func_button which can be bound to follow a target a door's movement

"angle"		determines the opening direction
"bind"		specifies the targetname of the door to bind to
"target"	all entities with a matching targetname will be activated
"killtarget"	kills matching targets when fired
"speed"		default is 40
"delay"		waits # seconds before firing
"wait"		default is 1 (-1 = never return)
"lip"		override the default 4 pixel lip remaining at end of move
"health"	if set, the button must be killed instead of touched
"message"	centerprints message to activator
"deathtype"	custom death message
"sounds"	sound played
*/


/*QUAKED func_rotate_door (0 .5 .8) (-8 -8 -8) (8 8 8) STAYOPEN 
{
choice "sounds"
 (
  (1,"medieval")
  (2,"metal")
  (3,"base")
 );
}
Point entity needed to create a rotating door. (Quoth/Hipnotic)

Place this on the center/axis of rotation, target a rotate_object and set "rotate" and "angles."

Example: "rotate" (0 1 -1) and "angles" (0 90 -180)  would make the door rotate 90 degrees clockwise on the Y axis, and 180 degrees counterclockwise on the Z axis.

"stayopen"	reopen after closing
"target"	the corresponding rotate_object
"rotate"	a value of the form (x y z)
"angles"	a value of the form (x y z)
"dmg"		damage when blocked, default 2
"speed"		time it takes to rotate
"sounds"	sound to be played
*/

/*QUAKED func_door_secret (0 .5 .8) ? OPEN_ONCE 1ST_LEFT 1ST_DOWN NO_SHOOT ALWAYS_SHOOT x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "sounds"
 (
  (1,"medieval")
  (2,"metal")
  (3,"base")
 );
}
Basic secret door. Slides back, then to the side. Angle determines direction.
If a secret door has a targetname, it will only be opened by it's button or trigger, not by damage.

"open_once"	stays open when triggered
"1st_left"	1st move is left of arrow
"1st_down"	1st move is down from arrow
"no_shoot"	only opened by trigger
"always_shoot"	even if targeted, keep shootable
"target"	all matching targets will be used
"killtarget"	all matching entities will be removed
"wait"		# of seconds before coming back
"delay"		waits # seconds before firing its targets
"t_width"	override Width to move back (or height if going down)
"t_length"	override Length to move sideways
"dmg"		damage to inflict when blocked (2 default)
"message"	prints message when touched
"sounds"	sound played, default 3
"deathtype"	custom death message if player gets squished
*/

/*QUAKED func_train (0 .5 .8) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "sounds"
 (
  (0,"no sound")
  (1,"ratchet metal")
 );
}
A moving  platform or model. Can be targeted to await activation.

"target"	the initial path_corner
"speed"		moving speed, default is 100
"dmg"		damage, default is 2
"sounds"	sound played
"deathtype"	custom death message if player gets squished
*/

/*QUAKED func_rotate_train (0 .5 .8) (-8 -8 -8) (8 8 8) 
{
choice "sounds"
 (
  (0,"no sound")
  (1,"ratchet metal")
 );
}
Rotating func_train (Quoth/Hipnotic)

Point entity needed to create a rotating  train.

Place this on the center/axis of rotation, target a rotate_object and set "path" to the starting position.

"target"	the corresponding rotate_object
"path"		the initial path_rotate 
"speed"		movement speed, default 100 
"dmg"		damage if blocked, default 0 
"sounds"	sound to be played 
"noise"		stopping sound
"noise1"	moving on sound 
"deathtype"	custom death message
*/
 
/*QUAKED func_particlefield (0 .5 .8) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Creates a brief particle flash roughly the size of the defining brush each time it is triggered.


"event"		group of func_particlefield entities in animation sequence
"cnt"		numerical position in the animation sequence for the group
"wait"		delay between each particle flash, only for entity in group with cnt 0
"color"		palette index for the particles
"count"		particle density

*/


/*QUAKED func_plat (0 .5 .8) ? PLAT_LOW_TRIGGER x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "sounds"
 (
  (1,"base fast")
  (2,"chain slow")
 );
}
Vertically moving platform (lift.) Can be targeted to await activation.

Plats are always drawn in the extended position, so they will light correctly.

"plat_low_trigger"	plat will only be triggered when in lowered position
"speed"			moving speed, default is 150
"height"		determines the amount the plat moves, instead of being implicitly determined by the model's height.
"sounds"		sound played, default 2
"deathtype"		custom death message
*/

/*QUAKED func_wall (0 .5 .8) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
This is just a solid wall if not inhibitted. Changes its texture(s) to alternate ones (e.g. basebtn), if targetted.
*/

/*QUAKED func_togglewall (0 .5 .8) ? START_OFF FORCEFIELD
Invisible wall/forcefield that can be toggled on and off (Quoth)

Spawnflag 2 makes it spawn particles like a forcefield.

"start_off"	Wall doesn't block until triggered.
"noise"		Sound to play when wall is turned off.
"noise1"	Sound to play when wall is blocking.
"dmg"		Damage caused when touched.
"style"	Density of particles (20)
"speed"	Speed/spread of the particles
"color"	12 is white
"targetname"	toggles on or off
*/

/*QUAKED func_movewall (0 .5 .8) ? VISIBLE TOUCH NONBLOCKING
Dirty hack to emulate collision detection on rotating objects (Quoth/Hipnotic)

Small, normally invisible brushes to provide collision detection. Move in a circular orbit around the rotating object, lagging behind slightly.

"targetname"	a func_rotate_* points here
"visible"	what it says
"touch"		cause damage when touched
"nonblocking"	makes the brush non-solid
"dmg"		damage when blocked
*/

/*QUAKED func_illusionary (0 .5 .8) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
A simple entity that looks solid but lets you walk through it. Does not block light.
*/

/*QUAKED func_breakable (.5 .5 .5) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "preset"
 (
  (0,"Rock ( default )")
  (1,"Wood")
  (2,"Flesh")
  (3,"Machine")
  (4,"Glass *")
  (5,"Brick ( 8 units ) *")
  (6,"Brick ( 16 units ) *")
  (7,"Brick ( 32 units ) *")
  (8,"Metal *")
  (9,"Circuitboards *")
 );
}
Breakable/shootable walls etc. (Quoth)

Defaults to 1 health

"targetname"	blow up when triggered
"health"	blow up when shot
"noise"	custom break sound
"modelpath"	custom model to throw
"count"	number of rubble pieces (0)
"rsize"	rubble size (1/2/3)
*/

/*QUAKED func_episodegate (0 .5 .8) ? E1 E2 E3 E4
This bmodel will appear if the episode has already been completed, so players can't reenter it.
*/

/*QUAKED func_bossgate (0 .5 .8) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
This bmodel appears unless players have all of the episode sigils. 
Used to close the floor in start.map (stairs to Shub).
*/

/*QUAKED info_multispawn (0 .5 .8) (-32 -32 -24) (32 32 64) big/ambush megahealth x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Horde spawning entity (Quoth)

Spawns enemies (or items) from the same spot (its origin). 
Automatically waits for enough room before spawning.
Set the spawnflags and angles like any other entity.

"spawnclassname"	the entity name, eg. monster_demon1
"spawnfunction"		same as spawnclassname
"count"			How many monsters to spawn.  Default 3
"wait"			delay in seconds between spawns
*/


/*QUAKED info_groupspawn (0 .5 .8) (-32 -32 -24) (32 32 64) big/ambush megahealth x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Group spawning entity (Quoth)

Spawns enemies (or items) in a grid pattern
Rows fill from south to north with a gap of "lip" and a maximum length of "t_width"
A new row starts "lip" units to the west if the previous row is full but more monsters remain to be spawned
Set the spawnflags and angles like any other entity.

"spawnclassname"	the entity name, eg. monster_demon1
"spawnfunction"		same as spawnclassname
"count"			How many monsters to spawn.  Default 3
"lip"			spacing between monsters
"t_width"		maximum length of a row of monsters measured north to south
*/



/*QUAKED info_gug_seismometer (.5 .5 .5) (-8 -8 -8) (8 8 8)
trigger_relay which is triggered by a Gug earthquake attack in the vicinity of the entity


"health"	how strong (near) the quake needs to be before the trigger fires
"delay"		delay before firing
"target"	targets to fire
"killtarget"	targets to remove when fired
*/


/*QUAKED info_logic_inopen (.5 .5 .5) (-8 -8 -8) (8 8 8)
trigger_relay which only fires if the entity is not currently inside a solid object

May be useful for constructing logic gates when paired with a func_togglewall

"delay"		delay before firing
"target"	targets to fire
"killtarget"	targets to remove when fired
*/


/*QUAKED info_logic_insolid (.5 .5 .5) (-8 -8 -8) (8 8 8)
trigger_relay which only fires if the entity is currently inside a solid object

May be useful for constructing logic gates when paired with a func_togglewall


"delay"		delay before firing
"target"	targets to fire
"killtarget"	targets to remove when fired
*/


/*QUAKED info_logic_random (.5 .5 .5) (-8 -8 -8) (8 8 8) BRANCH x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
trigger_relay which only fires if a random number is below the "chance" value on the entity

When the BRANCH flag is set, the entity instead randomly decides which set of targets to fire 

Fields marked (Set A) will be activated if the random number is below "chance", otherwise (Set B)


"chance"	probability of firing (range 0-1)
"delay"		delay before firing
"target"	targets to fire (Set A)
"target2"	targets to fire (Set A)
"killtarget"	targets to remove when fired (Set A)
"target3"	targets to fire (Set B)
"target4"	targets to fire (Set B)
"killtarget2"	targets to remove when fired (Set B)
*/


/*QUAKED info_rubble (.5 .5 .5) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "preset"
 (
  (0,"Rock ( default )")
  (1,"Wood")
  (2,"Flesh")
  (3,"Machine")
  (4,"Glass *")
  (5,"Brick ( 8 units ) *")
  (6,"Brick ( 16 units ) *")
  (7,"Brick ( 32 units ) *")
  (8,"Metal *")
  (9,"Circuitboards *")
 );
}
Point entity which can be triggered to spawn rubble

"targetname"	blow up when triggered
"noise"	custom break sound
"modelpath"	custom model to throw
"count"	number of rubble pieces (0)
"rsize"	rubble size (1/2/3)
*/



/*QUAKED info_trap (.5 .5 .5) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "preset"
 (
  (0,"none")
  (1,"Player Rockets")
  (2,"Player Grenades")
  (3,"Player Plasma")
  (4,"Player Nails")
  (5,"Player Super Nails")
 );
}
Custom trap shooter

"targetname"	if set, trigger to toggle
"target"	fire towards this
"wait"	 time between shots
"delay"	 time before first shot
"speed"	projectile speed
"modelpath"	projectile model
"tracking"	set to 1 for vore tracking, 2 for death lord tracking
"style"		set to 1 for explosion on impact, 2 for bounce on impact
"duration"	fuse length for bouncing projectile
"noise"	firing sound
"noise1"	impact sound
"noise2"	bounce sound
"mindamage"	Defaults to 1. This is the least amount of damage the projectile will cause
"maxdamage" If set, damage will be between ‘mindamage’ and ‘maxdamage’. Maxdamage is at least mindamage
"dmg"	Makes this projectile explode. Higher values increase radius and damage. (Player rockets are 120 for reference)
"multiplier"	mulitplies damage to func_breakable
"flashlight"	make projectile glow
"deathtype"		obituary for projectile kill
*/


/*QUAKED func_rotate_entity (0 .5 .8) (-8 -8 -8) (8 8 8) TOGGLE START_ON 
Point entity needed to create a rotating entity. (Quoth/Hipnotic)

Place this on the center/axis of rotation, target a rotate_object and set the "rotate" key.

Example: "rotate" (0 90 0) would make it rotate clockwise around the y axis at 90 degrees/second.

"toggle"	makes the rotation toggleable
"start_on"	start out spinning
"rotate"	a value of the format (x, y, z)
"targetname"	optionally point a trigger here
"target"	the corresponding rotate_object
"speed"		spin-up and spin-down time
"deathtype"	custom death message
*/

/*QUAKED func_group (.9 .9 .9) ?
This is not an entity as such. It is strictly an editor utility to group world brushes and patches together for convenience (selecting, moving, copying, etc). You cannot group entities with this.
Note that for Quake1 mapping, leaving any func_groups in the maps will produce compiling errors.
-------- NOTES --------
The TAB key can be used to flip through the component pieces of a selected func_group entity, isolating individual components.
*/




/*QUAKED info_player_start (1 0 0) (-16 -16 -32) (16 16 32)
{ model(":progs/player.mdl"); }
The normal starting point for a level. Only one is allowed, and every map should contain one.

"angle"		viewing angle when spawning
*/

/*QUAKED info_player_coop (1 0 1) (-16 -16 -32) (16 16 32)
{ model(":progs/player.mdl"); }
Potential spawning position(s) for coop games.

"angle"		viewing angle when spawning
*/

/*QUAKED info_player_deathmatch (1 0 1) (-16 -16 -32) (16 16 32)
{ model(":progs/player.mdl"); }
Potential spawning position(s) for deathmatch games.

"angle"		viewing angle when spawning
*/

/*QUAKED info_player_start2 (1 0 0) (-16 -16 -32) (16 16 32)
{ model(":progs/player.mdl"); }
Only used on start map for the return point from an episode.

"angle"		viewing angle when spawning
*/

/*QUAKED info_null (0 .5 0) (-4 -4 -4) (4 4 4)
Invisible entity. Used as a positional target for spotlights, etc. Removes itself.
*/

/*QUAKED info_notnull (0 .5 0) (-4 -4 -4) (4 4 4)
Used as a positional target for lightning.
*/

/*QUAKED info_rotate (0 .5 0) (-4 -4 -4) (4 4 4) 
Used to mark the center/axis of rotation of a rotating object. (Quoth/Hipnotic)

"targetname"	A rotate_object points here.
*/

/*QUAKED info_command (0 .5 0) (-4 -4 -4) (4 4 4) 
Used to execute a console command on the client side. (Quoth)

"message"	command to execute
"targetname"	trigger this.
*/

/*QUAKED info_command_server (0 .5 0) (-4 -4 -4) (4 4 4) 
Used to execute a console command on the server side. 

For correct behaviour in co-op commands which affect the server must use this entity instead of info_command

"message"	command to execute
"targetname"	trigger this.
*/

/*QUAKED info_command_spawn (0 .5 0) (-4 -4 -4) (4 4 4) 
Used to execute a console command as soon as the level starts

"message"	command to execute
*/

/*QUAKED info_teleport_destination (.5 .5 .5) (-16 -16 -32) (16 16 32)
Used as the destination point for a teleporter.

"angle"		view angle after teleporting
*/

/*QUAKED info_bomb (0 .5 .8) (-10 -10 -10) (10 10 10) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Boom! (Quoth)

"targetname"	 to be targetted via triggers and such
*/

/*QUAKED info_screenshake (0 .5 .8) (-10 -10 -10) (10 10 10) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Shakes the screen (Quoth)

Intensity is dependant on the length of the shake. Shaking decreases with time.

"ltime"		length of the shake
"multiplier"	amount the screen shakes, default 1
"lip"		screen update frequency, default 0.01
*/

/*QUAKED info_mapgate (0 .5 .8) (-10 -10 -10) (10 10 10) REVERSE x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Fires if the map isn't played yet (Quoth)

"reverse"	reverse the effect -- fires when the map is played
"mapindex"	a unique bit value for this one map.  (You set the mapindex in the trigger_changelevel of the map)
*/

/*QUAKED info_endgate (0 .5 .8) (-10 -10 -10) (10 10 10) REVERSE x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Fires if all the maps have been played (Quoth)

You MUST specify how many maps are in the sequence for this to work.

"reverse"	reverse the effect -- fires when not all the maps have been played
"mapindex"	how many maps are in the sequence before it can fire (or stop firing)
*/

/*QUAKED info_intermission (1 .5 .5) (-16 -16 -16) (16 16 16)
This is the camera point for the intermission.
Use mangle instead of angle, so you can set pitch or roll as well as yaw:  'pitch roll yaw'
If there is more than one info_intermission in the map, Quake will randomly pick one.
If no info_intermission entity is in the map, Quake uses the player start.

"mangle"	set 'pitch roll yaw'
*/




/*QUAKED item_cells (0 .5 .8) (0 0 0) (32 32 32) BIG x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Pack of cells.

"big"		Big version
*/

/*QUAKED item_rockets (0 .5 .8) (0 0 0) (32 32 32) BIG x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Pack of rockets.

"big"		Big version
*/

/*QUAKED item_shells (0 .5 .8) (0 0 0) (32 32 32) BIG x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Pack of shotgun shells.

"big"		Big version
*/

/*QUAKED item_spikes (0 .5 .8) (0 0 0) (32 32 32) BIG x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Pack of nails.

"big"		Big version
*/

/*QUAKED item_health (.3 .3 1) (0 0 0) (32 32 32) ROTTEN MEGAHEALTH x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
The big health pack (25 points.)

"rotten"	The small health pack (15 points.) 
"megahealth"	The megahealth.
*/

/*QUAKED item_armorInv (0 .5 .8) (-12 -12 -24) (12 12 24) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/armor.mdl"); }
The red armor.
*/

/*QUAKED item_armor2 (0 .5 .8) (-12 -12 -24) (12 12 24) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/armor.mdl"); }
The yellow armor.
*/

/*QUAKED item_armor1 (0 .5 .8) (-12 -12 -24) (12 12 24) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/armor.mdl"); }
The green armor.
*/

/*QUAKED item_artifact_envirosuit (0 .5 .8) (-12 -12 -24) (12 12 24) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/suit.mdl"); }
The environmental suit.
*/

/*QUAKED item_artifact_super_damage (0 .5 .8) (-24 -4 -24) (24 4 24) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/quaddama.mdl"); }
The quad damage.
*/

/*QUAKED item_artifact_invulnerability (0 .5 .8) (-24 -4 -24) (24 4 24) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/invulner.mdl"); }
The pent.
*/

/*QUAKED item_artifact_invisibility (0 .5 .8) (-12 -12 -12) (12 12 12) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/invisibl.mdl"); }
The ring of shadows.
*/

/*QUAKED item_artifact_trinity (0 .5 .8) (-24 -4 -24) (24 4 24) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/trinity.mdl"); }
The trinity (Quoth)
*/

/*QUAKED item_artifact_cross (0 .5 .8) (-24 -4 -24) (24 4 24) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/cross.mdl"); }
The cross of deflection (Quoth)
*/

/*QUAKED item_key1 (0 .5 .8) (-16 -16 -24) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/keymed.mdl"); }
The silver key. Remember to set "worldtype" in worldspawn..
*/

/*QUAKED item_key2 (0 .5 .8) (-16 -16 -24) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/keymed.mdl"); }
The gold key. Remember to set "worldtype" in worldspawn.
*/

/*QUAKED item_sigil (0 .5 .8) (-16 -16 -24) (16 16 32) E1 E2 E3 E4
{ 
   model(":progs/end1.mdl"); 
   default("spawnflags","1");
}
One of the 4 runes. You MUST set one of the spawnflags.
*/

/*QUAKED item_flashlight (0 .5 .8) (-16 -16 -24) (16 16 32)  x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ 
   model(":progs/flashlight.mdl"); 
}
Flashlight (Quoth)
*/



/*QUAKED _light_style
{
choice "style"
 (
  (0,"normal")
  (1,"flicker (first variety)")
  (2,"slow strong pulse")
  (3,"candle (first variety)")
  (4,"fast strobe")
  (5,"gentle pulse 1")
  (6,"flicker (second variety)")
  (7,"candle (second variety)")
  (8,"candle (third variety)")
  (9,"slow strobe (fourth variety)")
  (10,"fluorescent flicker")
  (11,"slow pulse not fade to black")
 );
}
*/

/*QUAKED light (0 1 0) (-8 -8 -8) (8 8 8) START_OFF
{
base("_light_style");
}
Non-displayed light. If targeted, it will toggle between on or off.

"start_off"	remains off until triggered
"light"		sets brightness, 300 is default
"style"		Default is 0. Styles 32-62 are assigned by the light program for switchable lights.
"target"	Point this at an info_null to make this a spotlight.
"angle"		"angle" of the spotlight's cone.
*/

/*QUAKED light_flame_large_yellow (0 1 0) (-10 -10 -12) (12 12 18)
{
base("_light_style");
model(":progs/flame2.mdl");
}
Large yellow flames.

"light"		sets brightness
"style"		0 is default
*/

/*QUAKED light_flame_small_yellow (0 1 0) (-8 -8 -8) (8 8 8) START_OFF
{
base("_light_style");
model(":progs/flame2.mdl");
}
Small yellow flames.

"start_off"	remains off until triggered
"light"		sets brightness
"style"		0 is default
*/

/*QUAKED light_flame_small_white (0 1 0) (-10 -10 -40) (10 10 40) START_OFF
{
base("_light_style");
model(":progs/flame2.mdl");
}
Small white flames.

"start_off"	remains off until triggered
"light"		sets brightness
"style"		0 is default
*/

/*QUAKED light_torch_small_walltorch (0 .5 0) (-10 -10 -20) (10 10 20)
{
base("_light_style");
model(":progs/flame.mdl");
}
Short wall torch.

"light"		sets brightness, 200 is default
"style"		0 is default
*/

/*QUAKED light_torch_long_walltorch (0 .5 0) (-10 -10 -48) (10 10 16)
{
base("_light_style");
model(":progs/longtrch.mdl");
}
Long wall torch (Quoth)
Place the entity 8 units from the wall.

"light"		sets brightness, 200 is default
"angle"		point this towards the wall
"style"		0 is default
*/

/*QUAKED light_flame_brazier_short (0 .5 0) (-8 -8 -16) (8 8 16)
{
base("_light_style");
model(":progs/brazshrt.mdl");
}
Short square brazier mapobject (Quoth)

"light"		sets brightness, 200 is default
"skin"		sets the skin used on the mapobject, values are:

		0 = knave ( kbrick textures, default )
		1 = rust ( kmetr textures )
		2 = redbrick
		3 = copper ( telepad textures )
		4 = altar ( blood runic )
		5 = wizmet ( everyones' favorite texture ^_^ )

"style"		0 is default
*/

/*QUAKED light_flame_brazier_tall (0 .5 0) (-8 -8 -64) (8 8 16)
{
base("_light_style");
model(":progs/braztall.mdl");
}
Tall square brazier mapobject (Quoth)

"light"		sets brightness, 200 is default
"skin"		sets the skin used on the mapobject, values are:

		0 = knave ( kbrick textures, default )
		1 = rust ( kmetr textures )
		2 = redbrick
		3 = copper ( telepad textures )
		4 = altar ( blood runic )
		5 = wizmet ( everyones' favorite texture ^_^ )

"style"		0 is default
*/


/*QUAKED light_postlight (0 .5 0) (-8 -8 -64) (8 8 16)
{
base("_light_style");
model(":progs/lightpost.mdl");
}
Tech light on post (Quoth)

"light"		sets brightness, 200 is default
"color"		sets the skin used on the mapobject, values are:

	0 = yellow-white ( default )
	1 = bluish-white
	2 = red
	3 = gray ( off )

"style"		0 is default
*/

/*QUAKED light_tubelight (0 .5 0) (-8 -8 -64) (8 8 16)
{
base("_light_style");
model(":progs/lighttube.mdl");
}
Tech-style tube light (Quoth)

"light"		sets brightness, 200 is default
"color"		sets the skin used on the mapobject, values are:

	0 = yellow-white ( default )
	1 = bluish-white
	2 = red
	3 = gray ( off )

"style"		0 is default
*/


/*QUAKED light_fluoro (0 1 0) (-8 -8 -8) (8 8 8) START_OFF
{
base("_light_style");
}
Non-displayed light. Makes steady fluorescent humming sound.

"start_off"	remains off until triggered
"light"		sets brightness, 300 is default
"style"		0 is default
*/

/*QUAKED light_fluorospark (0 1 0) (-8 -8 -8) (8 8 8)
{
base("_light_style");
}
Non-displayed light. Makes sparking, broken fluorescent sound.

"light"		sets brightness, 300 is default
"style"		10 is default
*/

/*QUAKED light_globe (0 1 0) (-8 -8 -8) (8 8 8)
{
base("_light_style");
}
Sphere globe light (sprite).

"light"		sets brightness, 300 is default
"color"		sets which sprite color/design is used:

		0 = gold ( default original )
		1 = red
		2 = green
		3 = blue
		4 = white
		5 = evile
		6 = evile zombie

"style"		0 is default
*/

/*QUAKED light_marsh (0 1 0) (-12 -12 -12) (12 12 12)
{
base("_light_style");
}
Small flurry of willo' the wisp sprites (Quoth)

"light"		sets brightness, 300 is default
"colormap"	color of the marshlight sprites:

		0 = white ( default )
		1 = bluish white
		2 = blue
		3 = green
		4 = orange
		5 = red
		6 = purple

"style"		0 is default
*/




/*QUAKED mapobject_custom (.5 .5 .5) (-8 -8 -8) (8 8 8) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Add any custom model to the map

"model" the path to the model desired
*/


/*QUAKED mapobject_grill (.5 .5 .5) (-8 -8 -8) (8 8 8) STATIC SOLIDBOX x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Add a alpha-masked sprite to the map, loading a custom resource

"model" the path to the model desired
"frame"	the frame of the sprite to load
*/


/*QUAKED mapobject_grill64 (.5 .5 .5) (-8 -8 -8) (8 8 8) STATIC SOLIDBOX x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Add a alpha-masked sprite to the map from the builtin 64x64 sprite font

"frame"	the frame of the sprite to load
*/


/*QUAKED mapobject_grill128 (.5 .5 .5) (-8 -8 -8) (8 8 8) STATIC SOLIDBOX x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Add a alpha-masked sprite to the map from the builtin 128x128 sprite font

"frame"	the frame of the sprite to load
*/


/*QUAKED mapobject_waterfall (.5 .5 .5) (-8 -8 -8) (8 8 8) STATIC x STARTDRY x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Add a waterfall entity

"skin"	which skin to use

    0=Clearwater (default)
    1=Swamp water
    2=Slime
    3=Blood
    4=Lava
	
"targetname"	set to toggle flow on and off
"noise"	custom starting sound
"noise1"	custom ending sound
"sounds"	set 1 for default sounds
"volume"	set sound volume
"speed"	set sound attenuation
"frame"	set starting frame (must set targetname as well)
*/


/*QUAKED misc_explobox (0 .5 .8) (0 0 0) (32 32 64)
Exploding box.
*/

/*QUAKED misc_explobox2 (0 .5 .8) (0 0 0) (32 32 64)
Smaller exploding box.
*/
/*QUAKED misc_biobox_l (0 .5 .8) (0 0 0) (32 32 64)
Exploding biohazard box.
*/

/*QUAKED misc_biobox_s (0 .5 .8) (0 0 0) (32 32 64)
Smaller exploding biohazard box.
*/

/*QUAKED misc_plasmabox_l (0 .5 .8) (0 0 0) (32 32 64)
Exploding plasma box.
*/

/*QUAKED misc_plasmabox_s (0 .5 .8) (0 0 0) (32 32 64)
Smaller exploding plasma box.
*/



/*QUAKED misc_teleporttrain (0 .5 .8) (-8 -8 -8) (8 8 8) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/teleport.mdl"); }
Shub-Niggurath's teleportation familiar. Needed to telefrag end boss.
*/

/*QUAKED misc_fireball (1 .6 0) (-8 -8 -8) (8 8 8) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Lava ball.

"speed"		speed of ball, default is 1000 ( actually about 100 )
*/

/*QUAKED misc_noisemaker (1.0 0.5 0.0) (-10 -10 -10) (10 10 10)
For optimzation testing, starts a lot of sounds.
*/




/*QUAKED monster_fish (1 0 0) (-16 -16 -24) (16 16 24) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/fish.mdl"); }
Rotfish, 25 HP

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_dog (1 0 0) (-32 -32 -24) (32 32 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/dog.mdl"); }
Rottweiler, 25 HP

A grunt's best friend.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_army (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/soldier.mdl"); }
Grunt, 25 HP

Generic use soldier.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_army_rocket (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/soldier.mdl"); }
Rocketeer, 60 HP (Quoth)

Grunt with weak, mildly tracking missiles.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_enforcer (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/enforcer.mdl"); }
Enforcer, x HP

Commando soldier.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_defender (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/enforcer.mdl"); }
Defender, 120 HP (Quoth)

Base equivalent of the ogre.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_eliminator (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/enforcer.mdl"); }
Eliminator, 120 HP (Quoth)

Plasma gun enforcer variant.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_pyro (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/enforcer.mdl"); }
Pyro, 120 HP (Quoth)

Flame thrower enforcer variant.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_bob (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/bob.mdl"); }
Bob, 160 HP (Quoth)

"A highly maneuverable flyer."

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_sentinel (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/sentinel.mdl"); }
Sentinel (Quoth)

Floater

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_ogre (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/ogre.mdl"); }
Ogre, 200 HP

In Quake, THEY have the chainsaws.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_ogre_marksman (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/ogre.mdl"); }
Ogre, 200 HP

Identical to monster_ogre, but will infight normal ogres.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_ogre_flak (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/ogre.mdl"); }
Flak ogre, 200 HP (Quoth)

Ogre variant with powerful nailgun.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_edie (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/edie.mdl"); }
Edie (Quoth)

Stroggified ogre miniboss

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_scourge (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/scor.mdl"); }
Centroid (Hipnotic/Quoth)

Cybernetic scorpion.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_zombie (1 0 0) (-16 -16 -24) (16 16 32) CRUCIFIED AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/zombie.mdl"); }
Zombie, 60 HP

*splatter*

If crucified,  stick the bounding  box 12 units back in a wall to look good.

"crucified"	what it says
"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_knight (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/knight.mdl"); }
Knight, 75 HP

Generic use medieval monster.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_hell_knight (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/hknight.mdl"); }
Death knight, 250 HP

 "You know him, you loathe him." 

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_death_knight (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/hknight.mdl"); }
Death knight, 250 HP (Quoth)

 Identical to monster_hell_knight. Will not infight other monster_death_*.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_deathguard (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/dguard.mdl"); }
Death guard, 200 HP (Quoth)

Generic-use medieval monster. Will not infight other monster_death_*.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_death_lord (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/hknight.mdl"); }
Death lord, 400 HP (Quoth)

"Think of them as very minor boss monsters." Will not infight other monster_death_*.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_wizard (1 0 0) (-16 -16 -24) (16 16 40) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/wizard.mdl"); }
Scrag, 20 HP

Generic flying monster.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_gaunt (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/gaunt.mdl"); }
Gaunt, 350 HP (Quoth)

Larger flying monster.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"perch"		start in perched position 	
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_demon1 (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/demon.mdl"); }
Fiend, 300 HP

Single-minded brutal killer. 

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_shambler (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/shambler.mdl"); }
Shambler, 600 HP

Large mindless brutal killer.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/


/*QUAKED monster_drole (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/drole.mdl"); }
Drole, 500 HP (Quoth)

Bizarre, highly aggressive brutal killer.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_shalrath (1 0 0) (-32 -32 -24) (32 32 48) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/shalrath.mdl"); }
Vore, 400 HP

Three-legged brutal killer with homing bombs.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_voreling (1 0 0) (-16 -16 -24) (16 16 32) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/voreling.mdl"); }
Voreling, 65 HP (Quoth)

Small, weak, scittery offspring. 

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"dangle"	start dangling from the ceiling
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_tarbaby (1 0 0) (-16 -16 -24) (16 16 24) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/tarbaby.mdl"); }
Spawn, 20 HP

Bouncing, explosive slimy horror.

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_polyp (1 0 0) (-16 -16 -24) (16 16 32) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/polyp.mdl"); }
Flying polyp, 150 HP (Quoth)

"Straight from the pages of Lovecraft."

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"startonground"	what it says
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_gug (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH x x x x SPAWNSILENT DELAYSPAWN SPAWNALERT NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/gug.mdl"); }
Gug, 1000 HP (Quoth)

"Be afraid."

"ambush"	only wake up on seeing the player
"delayspawn"	spawn only when triggered
"spawndelay"	spawn delay in seconds (-1 is random)
"spawnsilent"	don't emit the teleport sound
"spawnalert"	appear in alerted state
"corpse_time"	see worldpawn, -1 disables
"noeasy"	don't appear on skill 0
"nomedium"	don't appear on skill 1
"nohard"	don't appear on skill 2 or 3
"nodm"		don't appear in deathmatch
"items"	131072 (silver key) 262144 (gold key)
*/

/*QUAKED monster_vermis (1 0 0) (-64 -64 -448) (64 64 256)
{ model(":progs/vermis.mdl"); }
Vermis, 3000 HP (Quoth)

Boss monster.

"skin"	0 = plain
	1 = void
	2 = slime
	3 = lava
*/

/*QUAKED monster_boss (1 0 0) (-128 -128 -24) (128 128 256)
{ model(":progs/boss.mdl"); }
Chthon

Boss monster. Setup requires event_lightning.
*/

/*QUAKED monster_oldone (1 0 0) (-16 -16 -24) (16 16 32)
{ model(":progs/oldone.mdl"); }
Shub-Niggurath

Boss monster. Setup requires misc_teleporttrain.
*/




/*QUAKED noclass (0.0 0.0 0.0) (-8 -8 -8) (8 8 8)
prints a warning message when spawned
*/




/*QUAKED path_corner (0 1 1) (-8 -8 -8) (8 8 8)
Used as patrol points for monsters or func_trains.

"wait" 		time to pause before moving on (-1 stops the train)
*/


/*QUAKED path_corner_contact (0 1 1) (-8 -8 -8) (8 8 8)
Used as patrol points for monsters or func_trains.

"wait" 		time to pause before moving on (-1 stops the train)
*/

/*QUAKED path_corner_precise (0 1 1) (-8 -8 -8) (8 8 8)
Used as patrol points for monsters or func_trains.

"wait" 		time to pause before moving on (-1 stops the train)
*/

/*QUAKED path_rotate (0.5 0.3 0) (-8 -8 -8) (8 8 8) ROTATION ANGLES STOP NO_ROTATE DAMAGE MOVETIME SET_DAMAGE 
Path_corner equivalent for a rotating train. (Quoth/Hipnotic)

The train's rotation is set at every path_rotate instead of the func_rotate_train.

Example: "rotation" (1 0 0) and "angles" (90 0 0) would make the train rotate 90 degrees clockwise on the x axis while travelling here.

"rotation"	a value of the form (x y z) 
"angles"	a value of the form (x y z) 
"stop"		stop here and wait to be retriggered
"no_rotate"	Stop rotating while waiting to be triggered 
"damage"	Cause damage based on train's "dmg" 
"set_damage"	Set all targets' damage to "dmg" 
"movetime"	Interpret "speed" as the time to take for moving to the next corner
"speed"		train's new speed, -1  warps to next corner
"wait"		time to pause before moving on
"noise"		overrides train's stopping sound
"noise1"	overrides train's moving on sound
"event"		a target to trigger when train arrives here
*/




/*QUAKED play_sound (0.3 0.1 0.6) (-8 -8 -8) (8 8 8) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Hipnotic sound player entity (Quoth)

Plays a sound on a periodic basis.

"volume"	how loud? default 1 = full volume
"noise"		sound to play
"wait"		random time between sounds, default 20
"delay"		minimum delay between sounds, default 2
"impulse"	channel on which to play sound (0-7, default 0)
"speed"		attenuation factor
		-1 - no attenuation
		1 - normal
		2 - idle
		3 - static
*/

/*QUAKED play_sound_triggered (0.3 0.1 0.6) (-8 -8 -8) (8 8 8) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Hipnotic triggered sound player entity (Quoth)

Plays a sound when triggered.

"volume"	how loud? default 1 = full volume
"noise"		sound to play
"wait"		if set, will repeat sound every "wait" seconds
"impulse"	channel on which to play sound (0-7, default 0)
"speed"		attenuation factor
		-1 - no attenuation
		1 - normal
		2 - idle
		3 - static
*/




/*QUAKED rotate_object (0 .5 .8) ? 
This defines a rotating object, door or train.

Needs collision detection by func_movewalls. 

Rotate_objects don't block a monsters line of sight, but a func_movewall does.

Rotate_objects are textured in a quite bizarre manner. In order for them to have an origin that can be used in Quake, QBSP moves them together with their respective info_rotate so it is situated smack on the center of the level: (0 0 0) The rotate_objects are textured from there, so when they are moved back to their original position in game, the textures will appear misaligned.
To compensate you either have to use a flat texture on them so any misalignments aren't visible, or you have to move them to the center of the level yourself, texture them there and then move them back again yourself.

Func_movewalls don't move 100% exactly after the rotate_object; they lag slightly behind, creating a staircase effect. Adjust their thickness/placement to compensate.

"targetname"	A func_rotate_* points here
"target"	the corresponding info_rotate
*/




/*QUAKED test_fodder (0.0 0.5 0.8) ?
beating guy
*/

/*QUAKED test_teleport (0.0 0.5 0.8) ?
Teleporter testing
*/


/*QUAKED trap_lightning (0 .5 .8) (-8 -8 -8) (8 8 8) RANDOM BOOM
Fires lightning continually

"dmg"		damage, default 30
"duration"	duration, default 0.1
"angle"		direction (-1 = up, -2 = down)
"mangle"	direction (x,y,z format)
"target"	something to fire at
"noise"		sound file to play
"coiled"	no sound, even if "noise" is set
"style"		if 1, use shambler lightning
"boom"		Play initial firing sound as well
"wait"		delay before next firing
"nextthink"	delay before first firing
*/



/*QUAKED trap_lightning_triggered (0 .5 .8) (-8 -8 -8) (8 8 8) x BOOM
When triggered, fires lightning (Quoth/Hipnotic)

"dmg"		damage, default 30
"duration"	duration, default 0.1
"angle"		direction (-1 = up, -2 = down)
"mangle"	direction (x,y,z format)
"target"	something to fire at
"noise"		sound file to play
"coiled"	no sound, even if "noise" is set
"style"		if 1, use shambler lightning
"boom"		Play initial firing sound as well
*/

/*QUAKED trap_lightning_switched (0 .5 .8) (-8 -8 -8) (8 8 8) x BOOM
Trigger to toggle repeated lightning bolts(Quoth/Hipnotic)

"dmg"		damage, default 30
"duration"	duration, default 0.1
"angle"		direction (-1 = up, -2 = down)
"mangle"	direction (x,y,z format)
"target"	something to fire at
"noise"		sound file to play
"coiled"	no sound, even if "noise" is set
"style"		if 1, use shambler lightning
"state"		if 1, start activated
"boom"		Play initial firing sound as well
"wait"		delay before next firing
"nextthink"	delay before first firing
*/

/*QUAKED trap_spikeshooter (0 .5 .8) (-8 -8 -8) (8 8 8) SUPERSPIKE LASER x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
When triggered, shoots one spike

"superspike"	fires larger spikes
"laser"		fires lasers
"angle"		direction (-1 = up, -2 = down)
*/

/*QUAKED trap_shooter (0 .5 .8) (-8 -8 -8) (8 8 8) SUPERSPIKE LASER x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Continuously shoots spikes

"superspike"	fires larger spikes
"laser"		fires lasers
"angle"		direction (-1 = up, -2 = down)
"wait"		time between spikes, default 1
"nextthink"	delay before firing first spike
*/




/*QUAKED trigger_once (.5 .5 .5) ? NOTOUCH x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "sounds"
 (
  (0,"no sound")
  (1,"secret")
  (2,"beep beep")
  (3,"large switch")
  (4,"custom")
 );
}
Variable sized trigger. Triggers once then removes itself. 

It's the same as trigger_multiple, but Wait is always -1.

"notouch"	don't react to touch (obsoleted by trigger_relay)
"health"	any number, must be killed to fire
"angle"		only fire when someone is facing in this direction
"sounds"	sound to play when activated
"noise"		if "sounds" = 4, the sound file to play 
"message"	text to print when activated
"delay"		delay before firing
"target"	targets to fire
"killtarget"	targets to remove when fired
*/

/*QUAKED trigger_multiple (.5 .5 .5) ? NOTOUCH x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "sounds"
 (
  (0,"no sound")
  (1,"secret")
  (2,"beep beep")
  (3,"large switch")
  (4,"custom")
 );
}
Variable sized repeatable trigger. 

"notouch"	don't react to touch (obsoleted by trigger_relay)
"angle"		only fire when someone is facing in this direction
"sounds"	sound to play when activated
"noise"		if "sounds" = 4, the sound file to play 
"message"	text to print when activated
"delay"		delay before firing
"wait"		time between triggerings (should be > 0)
"target"	targets to fire
"killtarget"	targets to remove when fired
*/

/*QUAKED trigger_secret (.5 .5 .5) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{
choice "sounds"
 (
  (0,"no sound")
  (1,"secret")
  (2,"beep beep")
  (3,"large switch")
  (4,"custom")
 );
}
Secret counter trigger.

"sounds"	sound to play when activated, default 1
"noise"		if "sounds" = 4, the sound file to play 
"message"	text to print when activated
"delay"		delay before firing
"target"	targets to fire
"killtarget"	targets to remove when fired
*/

/*QUAKED trigger_counter (.5 .5 .5) ? NOMESSAGE x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
After this has been triggered "count" times, it will fire all of its targets and then remove itself.

It's a once-only trigger (i.e. Wait is always -1).

"nomessage"	disables count display ("1 more...")
"count"		number of triggers needed to fire, default 2
"message"	something like "sequence completed"
"delay"		time in seconds before firing targets
"target"	targets to fire
"killtarget"	targets to remove when fired
*/

/*QUAKED trigger_relay (.5 .5 .5) (-8 -8 -8) (8 8 8)
Fixed size trigger. Can only be fired by other entities, not by touching.

"message"	text to print when activated
"delay"		delay before firing
"target"	targets to fire
"killtarget"	targets to remove when fired
*/

/*QUAKED trigger_teleport (.5 .5 .5) ? PLAYER_ONLY SILENT x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Any object touching this will be transported to the corresponding info_teleport_destination entity.

"player_only"	only players will teleport
"silent"	remove the teleporter sound
"notelefrag"	monsters will rather wait than telefrag each other
"monstersonly"	only monsters will teleport
"state"		do not impart forward velocity on arrival
*/

/*QUAKED trigger_changelevel (.5 .5 .5) ? NO_INTERMISSION x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
When the player touches this, he gets sent to the map listed in the "map" variable.
The view will go to the info_intermission spot and display stats.

"map"			next map (eg. e1m1), if unset restart current map
"startdisabled"		wait for trigger before enabling
"no_intermission"	bypasses intermission screen
*/

/*QUAKED trigger_monsterjump (.5 .5 .5) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Tosses walking monsters forward and upward.

"angle"		direction the monster is thrown in
"speed"		monster forward speed, default 200
"height"	monster upward speed, default 200
*/

/*QUAKED trigger_drolejump (.5 .5 .5) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
A trigger_monsterjump only for droles and only while they're "enraged". (Quoth)

"angle"		direction the drole is thrown in
"speed"		drole forward speed, default 200
"height"	drole upward speed, default 200
*/

/*QUAKED trigger_hurt (.5 .5 .5) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Any object touching this suffers damage, i.e. health loss.

"dmg"		damage, default 5
"wait"		basically how fast you lose health 
"cnt"		number of health losses before going inactive
"deathtype"	custom death message if player gets killed
*/

/*QUAKED trigger_push (.5 .5 .5) ? PUSH_ONCE x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Used for wind tunnels and water currents.

Can push the player and grenades.

"push_once"	removes itself after firing
"speed"		speed of push, default 1000
"angle"		direction of push  (-2 is down, -1 up)
*/

/*QUAKED trigger_void (.5 .5 .5) ? x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Kills the player, even with pent. Kills and removes monsters; removes items (backpacks, pickups) (Quoth)

"deathtype"	custom death message
*/

/*QUAKED trigger_damagethreshold (.5 .5 .5) ? MULTI_USE INVISIBLE
Triggers only when a threshold of damage is exceeded. (Quoth)

When used in conjunction with func_breakawaywall, allows walls that may be destroyed with a rocket blast.

"multi_use"	allows the trigger to be used multiple times
"invisible"	what it says
"health"	how much damage must occur before firing, default 60
*/

/*QUAKED trigger_setgravity (.5 .5 .5) ?
Changes the gravity on the fly (Quoth)

"gravity"	the new gravity level (2 is very little, 1000 is a lot)
*/

/*QUAKED trigger_setskill (0.5 0.5 0.5) ?
sets skill level to the value of "message".
Only used on start map.
*/

/*QUAKED trigger_command (0.5 0.5 0.5) ?
Used to execute a console command (Quoth)

"message"	command to execute
*/


/*QUAKED trigger_command_contact (0.5 0.5 0.5) ?
Sends a console command to every player who touches it (Quoth)

"message"	command to execute
*/

/*QUAKED trigger_ladder (.5 .5 .5) ? NO_INTERMISSION x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
Ladder

"angle"		direction player goes if jumps off
*/



/*QUAKED viewthing (0 .5 .8) (-8 -8 -8) (8 8 8)
{ model(":progs/player.mdl"); }

Just for the debugging level.  Don't use
*/




/*QUAKED weapon_hammer (0 .5 .8) (-16 -16 0) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/g_ham.mdl"); }
Warhammer (Quoth)

Axe replacement. Impulse 99.
*/

/*QUAKED weapon_supershotgun (0 .5 .8) (-16 -16 0) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/g_shot.mdl"); }
Double-barrel shotgun
*/

/*QUAKED weapon_nailgun (0 .5 .8) (-16 -16 0) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/g_nail.mdl"); }
Nailgun
*/

/*QUAKED weapon_supernailgun (0 .5 .8) (-16 -16 0) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/g_nail2.mdl"); }
Supernailgun
*/

/*QUAKED weapon_grenadelauncher (0 .5 .8) (-16 -16 0) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/g_rock.mdl"); }
Grenade launcher

Half damage against shamblers
*/

/*QUAKED weapon_rocketlauncher (0 .5 .8) (-16 -16 0) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/g_rock2.mdl"); }
Rocket launcher

Half damage against shamblers
*/

/*QUAKED weapon_lightning (0 .5 .8) (-16 -16 0) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/g_light.mdl"); }
Shaft (lightning gun)

Double damage against flying polyps
*/

/*QUAKED weapon_plasmagun (0 .5 .8) (-16 -16 0) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/g_lance.mdl"); }
Plasma gun (Quoth)

Gibs zombies. Impulse 250.
*/

/*QUAKED weapon_bomb (0 .5 .8) (-16 -16 0) (16 16 32) x x x x x x x x NOEASY NOMEDIUM NOHARD NODM NOCOOP COOPONLY
{ model(":progs/g_bomb.mdl"); }
Dihydroprotolene bomb (Quoth)

Coop only. Impulse 66.
*/




/*QUAKED worldspawn (0 0 0) ?
{
choice "worldtype"
 (
  (0,"medieval")
  (1,"metal")
  (2,"base")
  (3,"elder")
 );
}
Only used for the world entity. Should be only one per map.

"wad"		which texture wad to use
"message"	title of the map etc.
"worldtype"	style of world, affects keys
"sounds"	CD track to play
"light"		default light level
"gravity"	gravity, default 800
"corpse_time"	time before corpse removal (-1 disables)
"keep_keys"	previous map needs 'send keys', next map needs 'get keys'
		0 = keys are lost (default)
		1 = send keys, don't get keys
		2 = get keys, but don't send
		3 = get and receive
"reset_items"	reduce player to starting equipment
*/

