/*QUAKED path_corner (0.5 0.3 0) (-8 -8 -8) (8 8 8)
Monsters will continue walking towards the next target corner.
*/
/*QUAKED func_button (0 .5 .8) ?
When a button is touched, it moves some distance in the direction of it's angle, triggers all of it's targets, waits some time, then returns to it's original position where it can be triggered again.

"angle"		determines the opening direction
"target"	all entities with a matching targetname will be used
"speed"		override the default 40 speed
"wait"		override the default 1 second wait (-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
"sounds"
0) steam metal
1) wooden clunk
2) metallic click
3) in-out
*/
/*QUAKED info_intermission (1 0.5 0.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'
*/
/*QUAKED trigger_changelevel (0.5 0.5 0.5) ? NO_INTERMISSION
When the player touches this, he gets sent to the map listed in the "map" variable.  Unless the NO_INTERMISSION flag is set, the view will go to the info_intermission spot and display stats.
*/
/*QUAKED info_player_start (1 0 0) (-16 -16 -24) (16 16 24)
The normal starting point for a level.
*/
/*QUAKED info_player_start2 (1 0 0) (-16 -16 -24) (16 16 24)
Only used on start map for the return point from an episode.
*/
/*QUAKED info_player_deathmatch (1 0 1) (-16 -16 -24) (16 16 24)
potential spawning position for deathmatch games

new in Dark Places:
"targetname"
 inactive (skipped) until triggered.
 (for use in combination with
  trigger_playercount)
*/
/*QUAKED info_player_coop (1 0 1) (-16 -16 -24) (16 16 24)
potential spawning position for coop games
*/
/*QUAKED info_player_team1 (.7 0 0) (-16 -16 -24) (16 16 24)
potential spawning position for teamplay games
team #1 - red

new in Dark Places:
"targetname"
 inactive (skipped) until triggered.
 (for use in combination with
  trigger_playercount)
*/
/*QUAKED info_player_team2 (0 0 .7) (-16 -16 -24) (16 16 24)
potential spawning position for teamplay games
team #2 - blue

new in Dark Places:
"targetname"
 inactive (skipped) until triggered.
 (for use in combination with
  trigger_playercount)
*/
/*QUAKED info_player_team3 (.7 .7 .7) (-16 -16 -24) (16 16 24)
potential spawning position for teamplay games
team #3 - grey

new in Dark Places:
"targetname"
 inactive (skipped) until triggered.
 (for use in combination with
  trigger_playercount)
*/
/*QUAKED info_player_team1 (1 0 0) (-16 -16 -24) (16 16 24)
CTF Starting point for a player
in team one (Red).

Keys:
"angle"
 viewing angle when spawning
*/
/*QUAKED info_player_team2 (1 0 0) (-16 -16 -24) (16 16 24)
CTF Starting point for a player in
team two (Blue).

Keys:
"angle"
 viewing angle when spawning
*/
/*QUAKED item_flag_team1 (0 0.5 0.8) (-48 -48 -24) (48 48 64)
CTF flag for team one (Red).
Multiple are allowed.

Keys:
"angle"
 Angle the flag will point
(minus 90 degrees)

*/
/*QUAKED item_flag_team2 (0 0.5 0.8) (-48 -48 -24) (48 48 64)
CTF flag for team two (Blue).
Multiple are allowed.

Keys:
"angle"
 Angle the flag will point
(minus 90 degrees)

*/
/*QUAKED dom_team (0 .5 .8) (-16 -16 -24) (16 16 32)
Team declaration for Domination gameplay, this allows you to decide what team
names and control point models are used in your map.

Note: If you use dom_team entities you must define at least 3 and only two
can have netname set!  The nameless team owns all control points at start.

Keys:
"netname"
 Name of the team (for example Red, Blue, Green, Yellow, Life, Death, etc)
"cnt"
 Scoreboard color of the team (for example 4 is red and 13 is blue)
"model"
 Model to use for control points owned by this team (for example
 "progs/b_g_key.mdl" is a gold keycard, and "progs/b_s_key.mdl" is a silver
 keycard)
"skin"
 Skin of the model to use (for team skins on a single model)
"noise"
 Sound to play when this team captures a point.
 (this is a localized sound, like a small alarm or other effect)
"noise1"
 Narrator speech to play when this team captures a point.
 (this is a global sound, like "Red team has captured a control point")
"message"
 Message to show when a team captures a point
 (for example "Red team has captured a control point", or
  "The forces of light have captured a mana well")
*/
/*QUAKED dom_controlpoint (0 .5 .8) (-16 -16 -24) (16 16 32)
Control point for Domination gameplay.
*/
/*QUAKED func_door (0 .5 .8) ? START_OPEN x DOOR_DONT_LINK GOLD_KEY SILVER_KEY TOGGLE
if two doors touch, they are assumed to be connected and operate as a unit.

TOGGLE causes the door to wait in both the start and end states for a trigger event.

START_OPEN causes the door to move to its destination when spawned, and operate in reverse.  It is used to temporarily or permanently close off an area when triggered (not usefull for touch or takedamage doors).

Key doors are allways wait -1.

"message"	is printed when the door is touched if it is a trigger door and it hasn't been fired yet
"angle"		determines the opening direction
"targetname" if set, no touch field will be spawned and a remote button or trigger field activates the door.
"health"	if set, door must be shot open
"speed"		movement speed (100 default)
"wait"		wait before returning (3 default, -1 = never return)
"lip"		lip remaining at end of move (8 default)
"dmg"		damage to inflict when blocked (2 default)
"sounds"
0)	no sound
1)	stone
2)	base
3)	stone chain
4)	screechy metal
*/
/*QUAKED func_door_secret (0 .5 .8) ? open_once 1st_left 1st_down no_shoot always_shoot
Basic secret door. Slides back, then to the side. Angle determines direction.
wait  = # of seconds before coming back
1st_left = 1st move is left of arrow
1st_down = 1st move is down from arrow
always_shoot = even if targeted, keep shootable
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)

If a secret door has a targetname, it will only be opened by it's botton or trigger, not by damage.
"sounds"
1) medieval
2) metal
3) base
*/
/*QUAKED trigger_forcefield (1 .5 0) ? PLAYERONLY SILENT STARTOFF TOGGLE WALL
anything touching this can be pushed away,
can be blocked, and can be hurt.

when targeted it will flash off/on
see STARTOFF, TOGGLE and delay

flags:
"PLAYERONLY"
 only affects players, still flashes
 on monsters, but no effect.
"SILENT"
 no hum or push sound.
"STARTOFF"
 works in reverse, normally off, on when targeted.
"TOGGLE"
 switches on/off when targeted.
"WALL"
 is totally solid when on.

keys:
"dmg"
 amount of damage to do when touched, default 0
"delay"
 how long it will stay switched when
 targeted, ignored with TOGGLE.
"speed"
 how much force, default 0
"targetname"
 guess (flashes when targeted)
"target"
 triggered on touch
*/
/*QUAKED dead_gibs (1 0 0) (-16 -16 -16) (16 16 16)
Splatters the area with gibs and creates a large pool

keys:
"targetname"
 explodes in gibs when triggered
 (does so only once)
"count"
 number of gibs (default: 6)
"mdl"
 head model (normally no head is thrown)
*/
/*QUAKED dead_bloodarea (1 0 0) (-16 -16 -16) (16 16 16)
Splatters the area with blood

keys:
"targetname"
 explodes in blood when triggered
"count"
 number of splatters (default: 6)
*/
/*QUAKED func_invisiblewall (0 .5 .8) ? STARTOFF
invisible wall,
toggles on/off when triggered.

better than invisible walls
made with CLIP texture
as bullets etc can't go
through this.

Flags:
"STARTOFF"
 uh, guess...
*/
/*QUAKED item_shells (0 .5 .8) (0 0 0) (32 32 32)
*/
/*QUAKED item_spikes (0 .5 .8) (0 0 0) (32 32 32) big
*/
/*QUAKED item_rockets (0 .5 .8) (0 0 0) (32 32 32) big
*/
/*QUAKED item_cells (0 .5 .8) (0 0 0) (32 32 32) big
*/
/*QUAKED item_armor_green (0 .5 .8) (-16 -16 0) (16 16 32)
100 green armor, 30% absorb
*/
/*QUAKED item_armor_yellow (0 .5 .8) (-16 -16 0) (16 16 32)
150 yellow armor, 60% absorb
*/
/*QUAKED item_armor_red (0 .5 .8) (-16 -16 0) (16 16 32)
200 red armor, 80% absorb
*/
/*QUAKED item_armor_glow (0 .5 .8) (-16 -16 0) (16 16 32)
250 red armor, 80% absorb
*/
/*QUAKED item_artifact_envirosuit (0 .5 .8) (-16 -16 -24) (16 16 32)
Player takes no damage from
water or slime for 60 seconds
*/
/*QUAKED item_artifact_invisibility (0 .5 .8) (-16 -16 -24) (16 16 32)
Player is mostly invisible for 60 seconds.
*/
/*QUAKED item_artifact_super_damage (0 .5 .8) (-16 -16 -24) (16 16 32)
30 second Quad Damage, 'nuff said.
*/
/*QUAKED item_artifact_invulnerability (0 .5 .8) (-16 -16 -24) (16 16 32)
Player is invulnerable for 30 seconds
*/
/*QUAKED item_health (.3 .3 1) (0 0 0) (32 32 32) rotten megahealth
Health box. Normally gives 25 points.
Rotten box heals 10 points,
megahealth will add 100 health, then 
rot you down to your maximum health limit, 
one point per second.
*/
/*QUAKED item_key1 (0 .5 .8) (-16 -16 -24) (16 16 32)
SILVER key
In order for keys to work
you MUST set your maps
worldtype to one of the
following:
0: medieval
1: metal
2: base
*/
/*QUAKED item_key2 (0 .5 .8) (-16 -16 -24) (16 16 32)
GOLD key
In order for keys to work
you MUST set your maps
worldtype to one of the
following:
0: medieval
1: metal
2: base
*/
/*QUAKED item_weapon (0 .5 .8) (0 0 0) (32 32 32) shotgun rocket spikes big
DO NOT USE THIS!!!! IT WILL BE REMOVED!
*/
/*QUAKED item_sigil (0 .5 .8) (-16 -16 -24) (16 16 32) E1 E2 E3 E4
End of level sigil, pick up to end episode and return to jrstart.
*/
/*QUAKED weapon_supershotgun (0 .5 .8) (-16 -16 0) (16 16 32)
*/
/*QUAKED weapon_nailgun (0 .5 .8) (-16 -16 0) (16 16 32)
*/
/*QUAKED weapon_supernailgun (0 .5 .8) (-16 -16 0) (16 16 32)
*/
/*QUAKED weapon_grenadelauncher (0 .5 .8) (-16 -16 0) (16 16 32)
*/
/*QUAKED weapon_rocketlauncher (0 .5 .8) (-16 -16 0) (16 16 32)
*/
/*QUAKED weapon_lightning (0 .5 .8) (-16 -16 0) (16 16 32)
*/
/*QUAKED noclass (0 0 0) (-8 -8 -8) (8 8 8)
prints a warning message when spawned
*/
/*QUAKED monster_boss (1 0 0) (-128 -128 -24) (128 128 256)
*/
/*QUAKED event_lightning (0 1 1) (-16 -16 -16) (16 16 16)
Just for boss level.
*/
/*QUAKED monster_demon1 (1 0 0) (-32 -32 -24) (32 32 64) Ambush
*/
/*QUAKED dead_demon1 (1 0 0) (-32 -32 -24) (32 32 -12)
*/
/*QUAKED monster_enforcer (1 0 0) (-16 -16 -24) (16 16 32) Ambush
*/
/*QUAKED dead_enforcer (1 0 0) (-16 -16 -24) (16 16 -10)
*/
/*QUAKED monster_fish (1 0 0) (-16 -16 -24) (16 16 24) Ambush
*/
/*QUAKED dead_fish (1 0 0) (-16 -16 -24) (16 16 -14)
*/
/*QUAKED monster_hell_knight (1 0 0) (-16 -16 -24) (16 16 32) Ambush
*/
/*QUAKED dead_hell_knight (1 0 0) (-16 -16 -24) (16 16 -12)
*/
/*QUAKED monster_knight (1 0 0) (-16 -16 -24) (16 16 32) Ambush
*/
/*QUAKED dead_knight (1 0 0) (-16 -16 -24) (16 16 -14)
*/
/*QUAKED monster_ogre (1 0 0) (-32 -32 -24) (32 32 64) Ambush
*/
/*QUAKED dead_ogre (1 0 0) (-32 -32 -24) (32 32 -12)
*/
/*QUAKED monster_oldone (1 0 0) (-16 -16 -24) (16 16 32)
*/
/*QUAKED monster_shalrath (1 0 0) (-32 -32 -24) (32 32 48) Ambush
*/
/*QUAKED dead_shalrath (1 0 0) (-32 -32 -24) (32 32 -12)
*/
/*QUAKED monster_shambler (1 0 0) (-32 -32 -24) (32 32 64) Ambush
*/
/*QUAKED dead_shambler (1 0 0) (-32 -32 -24) (32 32 -8)
*/
/*QUAKED monster_army (1 0 0) (-16 -16 -24) (16 16 32) ambush x x x x x x appear
Grunt, normally 100 health.

Flags:
"ambush"
 the monster will only wake up on
 really seeing the player, not another
 monster getting angry
"appear"
 the monster is invisible until triggered
 (basically, teleport in)

Keys:
"deathtype"
 death message.
 default: " lays down for a Grunt"
"health"
 default: 30
*/
/*QUAKED dead_army (1 0 0) (-16 -16 -24) (16 16 -13)
*/
/*QUAKED monster_tarbaby (1 0 0) (-16 -16 -24) (16 16 24) Ambush
*/
/*QUAKED dead_tarbaby (1 0 0) (-16 -16 -24) (16 16 24)
*/
/*QUAKED monster_wizard (1 0 0) (-16 -16 -24) (16 16 32) Ambush
*/
/*QUAKED dead_wizard (1 0 0) (-16 -16 -24) (16 16 -10)
*/
/*QUAKED monster_zombie (1 0 0) (-16 -16 -24) (16 16 32) Crucified ambush

If crucified, stick the bounding box 12 pixels back into a wall to look right.
*/
/*QUAKED dead_zombie (1 0 0) (-16 -16 -24) (16 16 24)
*/
/*QUAKED info_null (0 0.5 0) (-4 -4 -4) (4 4 4)
Used as a positional target for spotlights, etc.
*/
/*QUAKED info_notnull (0 0.5 0) (-4 -4 -4) (4 4 4)
Used as a positional target for lightning.
*/
/*QUAKED info_target (0 0.5 0) (-4 -4 -4) (4 4 4)
Invisible entity. Used as an optional
target for trap_spikeshooter etc,
can follow path_corners as a moving
target for neat effects.

Keys:
"targetname"
 target name.
"target" (optional)
 if specified it will start at
 this path_corner,
 and follow the path.
"speed"
 movement speed (default 100)
*/
/*QUAKED light (0 1 0) (-8 -8 -8) (8 8 8) START_OFF
Non-displayed light.
Default light value is 300
Default style is 0
If targeted, it will toggle between on or off.
*/
/*QUAKED light_fluoro (0 1 0) (-8 -8 -8) (8 8 8) START_OFF
Non-displayed light.
Default light value is 300
Default style is 0
If targeted, it will toggle between on or off.
Makes steady fluorescent humming sound
*/
/*QUAKED light_fluorospark (0 1 0) (-8 -8 -8) (8 8 8)
Non-displayed light.
Default light value is 300
Default style is 10
Makes sparking, broken fluorescent sound
*/
/*QUAKED light_globe (0 1 0) (-8 -8 -8) (8 8 8)
Sphere globe light.
Default light value is 300
Default style is 0
*/
/*QUAKED light_torch_small_walltorch (0 .5 0) (-10 -10 -20) (10 10 20)
Short wall torch
Default light value is 200
Default style is 0
*/
/*QUAKED light_flame_large_yellow (0 1 0) (-10 -10 -12) (12 12 18)
Large yellow flame ball
*/
/*QUAKED light_flame_small_yellow (0 1 0) (-8 -8 -8) (8 8 8) START_OFF
Small yellow flame ball
*/
/*QUAKED light_flame_small_white (0 1 0) (-10 -10 -40) (10 10 40) START_OFF
Small white flame ball
*/
/*QUAKED misc_thunder (0 1 0) (-8 -8 -8) (8 8 8)
This controls the brightness of the
targeted lights, to simulate thunder.

Keys:
"waitmin"
 mininum time between strikes
 (default 1)
"waitmax"
 maximum time between strikes
 (default 8)
"count"
 minimum number of flashs per strike
 (default 2)
"count1"
 maximum number of flashs per strike
 (default 6)
"count2"
 minimum time between flashs
 (default 0.05)
"count3"
 maximum time between flashs
 (default 0.2)
"count4"
 how long each flash lasts
 (default 0.3)
"count5"
 minimum sound delay
 (default 0.3)
"count6"
 maximum sound delay
 (default 0.8)
"target"
 must target lights
*/
/*QUAKED misc_fireball (0 .5 .8) (-8 -8 -8) (8 8 8)
Lava Balls
*/
/*QUAKED misc_explobox (0 .5 .8) (0 0 0) (32 32 64)
TESTING THING
*/
/*QUAKED misc_explobox2 (0 .5 .8) (0 0 0) (32 32 64)
Smaller exploding box, REGISTERED ONLY
*/
/*QUAKED trap_spikeshooter (0 .5 .8) (-8 -8 -8) (8 8 8) superspike laser lightning x x x x onlystrike
When triggered, fires a spike in
the direction determined by angle.

Flags:
"superspike"
 fires large spikes
"laser"
 fires laser
"lightning"
 fires lightning
 (only fires with a target,
  either an info_target or when
  striking something)
"onlystrike"
 does not fire unless striking
 at something

Keys:
"deathtype"
 as with nearly all things in
 Dark Places, deathtype is
 the kill message.
 default: depends on shot type
"angle"
 angle to fire
 (can be pitch yaw roll)
"target"
 much better than angle setting.
"speed"
 speed of shot - default 500
 (not applicable to lightning)
"dmg"
 how much damage the shot does
 default depends on shot:
 spike - 9
 superspike - 18
 laser - 15
 lightning - 30
"count"
 how many shots are fired per
 burst.
"delay"
 time between shots in a burst.
"strikedist"
 max distance for striking.
 (meaning it acts as a turret)
*/
/*QUAKED air_bubbles (0 .5 .8) (-8 -8 -8) (8 8 8)
testing air bubbles
*/
/*QUAKED viewthing (0 .5 .8) (-8 -8 -8) (8 8 8)
Just for the debugging level.  Don't use
*/
/*QUAKED func_wall (0 .5 .8) ?
This is just a solid wall if not inhibitted
*/
/*QUAKED func_vanishwall (0 .5 .8) ?
Mainly used for changing the 'scale' of a
dm level based on active player count.

For use in combination with
trigger_playercount.

Keys:
"targetname"
 removes self when triggered.
*/
/*QUAKED func_illusionary (0 .5 .8) ?
A simple entity that looks solid but lets you walk through it.
*/
/*QUAKED func_episodegate (0 .5 .8) ? E1 E2 E3 E4
This bmodel will appear if the episode has allready been completed, so players can't reenter it.
*/
/*QUAKED func_bossgate (0 .5 .8) ?
This bmodel appears unless players have all of the episode sigils.
*/
/*QUAKED ambient_suck_wind (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*/
/*QUAKED ambient_drone (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*/
/*QUAKED ambient_flouro_buzz (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*/
/*QUAKED ambient_drip (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*/
/*QUAKED ambient_comp_hum (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*/
/*QUAKED ambient_thunder (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*/
/*QUAKED ambient_light_buzz (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*/
/*QUAKED ambient_swamp1 (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*/
/*QUAKED ambient_swamp2 (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*/
/*QUAKED misc_noisemaker (1 0.5 0) (-10 -10 -10) (10 10 10)
For optimzation testing, starts a lot of sounds.
*/
/*QUAKED func_plat (0 .5 .8) ? PLAT_LOW_TRIGGER
speed	default 150

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

If the plat is the target of another trigger or button, it will start out disabled in the extended position until it is trigger, when it will lower and become a normal plat.

If the "height" key is set, that will determine the amount the plat moves, instead of being implicitly determined by the model's height.
Set "sounds" to one of the following:
1) base fast
2) chain slow
*/
/*QUAKED func_train (0 .5 .8) ?
Trains are moving platforms that players can ride.
The targets origin specifies the min point of the train at each corner.
The train spawns at the first target it is pointing at.
If the train is the target of a button or trigger, it will not begin moving until activated.
speed	default 100
dmg		default	2
sounds
1) ratchet metal

*/
/*QUAKED misc_teleporttrain (0 .5 .8) (-8 -8 -8) (8 8 8)
This is used for the final boss
*/
/*QUAKED dead_player (1 0 0) (-16 -16 -24) (16 16 0)
*/
/*QUAKED dead_player_axe (1 0 0) (-16 -16 -24) (16 16 0)
*/
/*QUAKED func_rain (0 .5 .8) ?
This is an invisible area like a trigger, which rain falls inside of.

Keys:
"velocity"
 falling direction (should be something like '0 0 -700', use the X and Y velocity for wind)
"cnt"
 sets color of rain (default 12 - white)
"count"
 adjusts rain density, this many particles fall every second, experiment to see the effects (default is based on area size)
*/
/*QUAKED func_snow (0 .5 .8) ?
This is an invisible area like a trigger, which snow falls inside of.

Keys:
"velocity"
 falling direction (should be something like '0 0 -300', use the X and Y velocity for wind)
"cnt"
 sets color of rain (default 12 - white)
"count"
 adjusts snow density, this many particles fall every second, experiment to see the effects (default is based on area size)
*/
/*QUAKED func_particlecube (0 .5 .8) ? GRAVITY
This is an invisible area like a trigger, which particles spawn in.

Flags:
gravity
 if set the particles will fall.

Keys:
"velocity"
 particle velocity. (default is '0 0 0)
"cnt"
 sets color of particles (default 12 - white), the colors are actually a range of 4 colors, starting with this color.
"count"
 adjusts particle density, this many particles appear every second, experiment to see the effects (default is based on area size).
"cnt2"
 random velocity adjustment, default is 0, higher makes the particles more random, 0 makes them follow velocity exactly.
*/
/*QUAKED info_rotate (0 .5 0) (-8 -8 -8) (8 8 8)
rotate_objects target this to
set center of rotation.
*/
/*QUAKED func_rotatingdoor (.6 0 .9) ? TOUCHDMG CRUSH TOGGLE 
rotating door.

Flags:
"TOUCHDMG"
 if set, will do block damage
 when touched, not just when
 blocked.
"CRUSH"
 will crush things instead of
 reversing direction when
 blocked, useful when making a
 door to block off an area.
"TOGGLE"
 opens/closes when triggered,
 rather than just opening.

Keys:
"dmg"
 damage to cause when blocked,
 default is 2, use -1 for no
 damage.
"speed"
 how fast it rotates,
 in degrees per second.
 default: 90
"angles"
 start angles (pitch yaw roll).
"dest"
 end angles (pitch yaw roll).
"wait"
 how long to stay open.
 (not used with TOGGLE)
 default: 3 seconds
"target"
 must target info_rotate
 object to define origin
"targetname"
 must be targeted, rotating
 doors operate only when
 triggered
"group"
 you can group rotating doors,
 when grouped all rotating
 doors will reverse direction
 at the same time
"deathtype"
 as with basically all things
 in Dark Places, deathtype
 is message when something is
 killed by this.
 default: " got in the way"
"sounds"
1) medieval (default)
2) metal
3) base
*/
/*QUAKED func_rotatingobject (.6 0 .9) ? TOUCHDMG STARTON NOTSOLID
a rotating 'thing',
like a spinning fan.

Flags:
"TOUCHDMG"
 cause damage when touched,
 not just when blocked.
 (example: blades)
"STARTON"
 easy to guess this one,
 meaningless if it can't be
 triggered.
"NOTSOLID"
 if set, the object is not
 solid.

Keys:
"dmg"
 damage to cause when blocked.
 default: 0
"delay"
 how long it takes
 to completely spin up/down.
 default: 0 (instant)
"rotate"
 rotation per second
 (pitch yaw roll, in degrees).
"target"
 of course this must be set
"targetname"
 if set, it will only
 start/stop spinning when
 triggered, rather than
 simply spinning all the time.
"deathtype"
 as with basically all things
 in Dark Places, deathtype
 is message when something is
 killed by this.
 default: " got in the way"
*/
/*QUAKED trigger_shake (1 .5 0) ? PLAYERONLY SILENT STARTON TOGGLE
any player touching this feels an earthquake.

when targeted it will flash on/off
see STARTON, TOGGLE and delay

flags:
"PLAYERONLY"
 only affects players.
"SILENT"
 no sound.
"STARTON"
 works in reverse, normally on, off when targeted.
"TOGGLE"
 switches on/off when targeted.

keys:
"delay"
 how long it will stay switched when
 targeted, ignored with TOGGLE.
"targetname"
 guess (flashes/toggles when targeted)
*/
/*QUAKED effect_spinningspotlight (0 1 0) (-8 -8 -8) (8 8 8)
A spinning spot light,
nifty disco like effects or anything
else you think up.

Keys:
"angles"
 starting direction in degrees (pitch yaw roll)
"avelocity"
 rotation speed in degrees per second (pitch yaw roll)
*/
/*QUAKED trigger_multiple (.5 .5 .5) ? notouch
Variable sized repeatable trigger.  Must be targeted at one or more entities.  If "health" is set, the trigger must be killed to activate each time.
If "delay" is set, the trigger waits some time after activating before firing.
"wait" : Seconds between triggerings. (.2 default)
If notouch is set, the trigger is only fired by other entities, not by touching.
NOTOUCH has been obsoleted by trigger_relay!
sounds
1)	secret
2)	beep beep
3)	large switch
4)
set "message" to text string
*/
/*QUAKED trigger_once (.5 .5 .5) ? notouch
Variable sized trigger. Triggers once, then removes itself.  You must set the key "target" to the name of another object in the level that has a matching
"targetname".  If "health" is set, the trigger must be killed to activate.
If notouch is set, the trigger is only fired by other entities, not by touching.
if "killtarget" is set, any objects that have a matching "target" will be removed when the trigger is fired.
if "angle" is set, the trigger will only fire when someone is facing the direction of the angle.  Use "360" for an angle of 0.
sounds
1)	secret
2)	beep beep
3)	large switch
4)
set "message" to text string
*/
/*QUAKED trigger_relay (.5 .5 .5) (-8 -8 -8) (8 8 8)
This fixed size trigger cannot be touched, it can only be fired by other events.  It can contain killtargets, targets, delays, and messages.
*/
/*QUAKED trigger_secret (.5 .5 .5) ?
secret counter trigger
sounds
1)	secret
2)	beep beep
3)
4)
set "message" to text string
*/
/*QUAKED trigger_counter (.5 .5 .5) ? nomessage
Acts as an intermediary for an action that takes multiple inputs.

If nomessage is not set, t will print "1 more.. " etc when triggered and "sequence complete" when finished.

After the counter has been triggered "count" times (default 2), it will fire all of it's targets and remove itself.
*/
/*QUAKED info_teleport_destination (.5 .5 .5) (-8 -8 -8) (8 8 32)
This is the destination
marker for a teleporter.

It should have a
"targetname" field with
the same value as a
teleporter's "target"
field.

Keys:
"dest"
 velocity on exiting
 teleport, nice for
 tricks.
 default: normal
 (throws player out
  a bit)
*/
/*QUAKED trigger_teleport (.5 .5 .5) ? PLAYER_ONLY SILENT
Any object touching this will be transported to the corresponding info_teleport_destination entity. You must set the "target" field, and create an object with a "targetname" field that matches.

If the trigger_teleport has a targetname, it will only teleport entities when it has been fired.
*/
/*QUAKED trigger_setskill (.5 .5 .5) ?
sets skill level to the value of "message".
Only used on start map.
*/
/*QUAKED trigger_onlyregistered (.5 .5 .5) ?
Only fires if playing the registered version, otherwise prints the message
*/
/*QUAKED trigger_hurt (.5 .5 .5) ?
Anything touching will be hurt.

Keys:
"dmg"
 damage amount
 default: 5
"cnt"
 how many times to trigger,
 default: unlimited
*/
/*QUAKED trigger_push (.5 .5 .5) ? PUSH_ONCE SILENT
Improved version of normal trigger_push.

Pushes anything that touches it,
or acts as a jump pad, hitting "target"
at the apogee (peak) of the jump.

Target should be an info_notnull.

Flags:
"PUSH_ONCE"
 removes itself after push
"SILENT"
 no 'windtunnel' noise
Keys:
"angles"
 direction to push.
 (not for jumppad)
"speed"
 how fast.
 (not for jumppad)
"movedir"
 direction of push,
 this is turned into
 a direction. (no speed)
 (not for jumppad)
"target"
 acts as jump pad, hits this entity
*/
/*QUAKED trigger_monsterjump (.5 .5 .5) ?
Walking monsters touching
this will jump in the
direction of the angle.

Keys:
"speed"
 horizontal speed
 default: 200
"height"
 upward speed
 default: 200
*/
/*QUAKED trigger_playercount (0 .6 .8) (-8 -8 -8) (8 8 8)
Triggers targets when enough players
join the game.

Recommended usage:
Wall off a room from the rest of the map
with vanishwalls/doors/etc, place this
somewhere, target the vanishwalls and
dm starts.
(vanishwalls vanish, dm starts activate)

Obviously this can trigger anything you
like. (func_train, etc)

Keys:
"count"
 how many players must join
"count2"
 if specified, this will immediately
 trigger and remove itself if
 maxplayers is at least this value.
 (can be used with count as well,
  although I can't imagine that being
  useful...)
"targetname"
 if targetted, this will not begin
 checking playercount until it is
 triggered.
 (works with count and count2)
*/
/*QUAKED trigger_stuffcmd (.5 .5 .5) (-8 -8 -8) (8 8 8)
Stuffs the supplied commands into the client's console.
Note: not touchable, must be targetted.
fields:
"targetname"
 must be set
"wait"
 seconds between triggerings (.5 default)
"message"
 commands (such as "bf", use ; to separate commands)
*/
/*QUAKED trigger_ticker (0 .6 .8) (-8 -8 -8) (8 8 8)
triggers it's targets
every "delay" seconds.

if targetname is set,
it will only tick in bursts of
"count" times and only when
triggered.

Keys:
"delay"
 time between triggers,
 default 0.1, cannot go below 0.1.
"count"
 how many pulses to do when targeted
 not used unless targetname is set
 default 1
"targetname"
 as mentioned above
"target"
 must be set
*/
/*QUAKED worldspawn (0 0 0) ?
Only used for the world entity.
Should be only one per MAP.

Keys:
"wad"
 which graphics wad to use
"message"
 sets the title of the map
"worldtype"
 normal quake maps:
 0 = medieval
 1 = metal
 2 = base
 Dark Places world types:
 3 = medieval
 4 = metal
 5 = base
 Dark Places maps have special
 properties such as 3x falling
 damage
 (falling 1024 units is like
  270 damage rather than 90)
 you should use one of the
 Dark Places world types if
 making a map for Dark Places

 MUST be set when using keys!
"sounds"
 CD track to play
"light"
 default light level
*/
/*QUAKED func_xplowall (0 .5 .8) ? NoHeal SilverKey GoldKey

Normally you must do enough damage
in one blast to break the wall.

Flags:
"NoHeal"
 progressive damage will break
 this wall.
"SilverKey"
 will break if touched by player
 with silver key.
"GoldKey"
 will break if touched by player
 with gold key.

Keys:
"targetname"
 will break if targeted.
"target"
 will trigger when destroyed.
"health"
 if health is -1 then can only be
 broken by targeting and keys,
 default 100
 (close pipebomb will break).
"dmg"
 explosions do this much radius
 damage if set.
"count"
 how many pieces of debris
 (releases this much debris
  total, some every explosion)
 (default is 5, -1 for no debris)
"count2"
 how many explosions
 (will release debris with none)
 (default is 3, use -1 for none)
"delay"
 time between explosions
 default: 0.1
"wait"
 time before respawning
 (default is no respawn)
 (this time is counted from the
  last explosion)
"style"
 type of debris,
 hard to describe these:
0) red
1) yellow
2) green
3) blue
4) brown
5) biege
6) rock
*/
/*QUAKED func_wallchunk (0 .5 .8) ?
wall chunk, destroyed by damage.

you must do enough damage
in one blast to break the wall.

simply a nice effect,
used in Dark Places maps.

make a hole in the wall,
cover it with a
func_wallchunk,
set the style for debris,
and you've got a wall that
gets damaged in a fight.

actually just a simplified
func_xplowall.

normally 3 pieces of debris.
set count to a dif # if you
like.
no explosions.

Keys:
"count"
 how many pieces of debris.
 default is 3.
"style"
 type of debris,
 hard to describe these:
0) red
1) yellow
2) green
3) blue
4) brown
5) biege
6) rock
*/
/*QUAKED func_group (0.6 0.6 1.0) ?
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.
-------- KEYS --------
None
-------- SPAWNFLAGS --------
None
-------- NOTES --------
The TAB key can be used to flip through the component pieces of a selected func_group entity, isolating individual components.
*/
/*QUAKED misc_model (1 .5 .25) (-16 -16 -16) (16 16 16)
Place a model in the map.
If target is set it follows the path defined by the target path_corner ents.
noise and noise1 then define the noises to play during movement.
button0 & 1 dont work when target is set.

Keys:
"angle" 
 Direction in which model will be oriented.
"model"
 Path/name of model to use (eg: models/mapobjects/mymodel.md3).
"target" 
 First node to follow.
"button0"
 Startframe to play
"button1"
 Endframe to play
"noise"
 Start and movement sound (eg: sound1start.wav)
"noise1"
 Stop sound (eg: sound1stop.wav)
"noise4"
 Target name for use with the misc_rotateengine
*/
