==================================================
Hipnotic Interactive Quake Add-On Pack QC Additions
Created by Mark Dochtermann 03/08/97
Version 1.0
Original Code written by Jim Dose and Mark Dochtermann
Copyright (c) 1997 Hipnotic Interactive Inc.
Scourge of Armagon (c) 1997 Id Software, Inc.
Scourge of Armagon (tm) is a trademark of Id Software, Inc.
Quake (r) is a registered trademark of Id Software, Inc.
===================================================

==========================================================================
=                                                                        =
= ROTATION GEOMETRY                                                      =
=                                                                        =
==========================================================================

***********
info_rotate (0 0.5 0) (-4 -4 -4) (4 4 4)
***********

   Used as the point of rotation for rotatable objects.

******************
func_rotate_entity (0 .5 .8) (-8 -8 -8) (8 8 8) TOGGLE START_ON
******************

   Creates an entity that continually rotates.  Can be toggled on
   and off if targeted.

   TOGGLE = allows the rotation to be toggled on/off

   START_ON = wether the entity is spinning when spawned.  If TOGGLE is
   0, entity can be turned on, but not off.

   If "deathtype" is set with a string, this is the message that will
   appear when a player is killed by the train.

   "rotate" is the rate to rotate.

   "target" is the center of rotation.

   "speed"  is how long the entity takes to go from standing still to
   full speed and vice-versa.

***********
path_rotate (0.5 0.3 0) (-8 -8 -8) (8 8 8)
            ROTATION ANGLES STOP NO_ROTATE DAMAGE MOVETIME SET_DAMAGE
***********

   Path for rotate_train.

   ROTATION tells train to rotate at rate specified by "rotate".  Use
   '0 0 0' to stop rotation.

   ANGLES tells train to rotate to the angles specified by "angles"
   while traveling to this path_rotate.  Use values < 0 or > 360 to
   guarantee that it turns in a certain direction.  Having this flag
   set automatically clears any rotation.


   STOP tells the train to stop and wait to be retriggered.

   NO_ROTATE tells the train to stop rotating when waiting to be
   triggered.

   DAMAGE tells the train to cause damage based on "dmg".

   MOVETIME tells the train to interpret "speed" as the length of time
   to take moving from one corner to another.

   SET_DAMAGE tells the train to set all targets damage to "dmg"

   "noise" contains the name of the sound to play when train stops.

   "noise1" contains the name of the sound to play when train moves.

   "event" is a target to trigger when train arrives at path_rotate.

*****************
func_rotate_train (0 .5 .8) (-8 -8 -8) (8 8 8)
*****************

   In path_rotate, set speed to be the new speed of the train after it
   reaches the path change.  If speed is -1, the train will warp
   directly to the next path change after the specified wait time.  If
   MOVETIME is set on the path_rotate, the train to interprets "speed"
   as the length of time to take moving from one corner to another.

   "noise" contains the name of the sound to play when train stops.

   "noise1" contains the name of the sound to play when train moves.

   Both "noise" and "noise1" defaults depend upon "sounds" variable and
   can be overridden by the "noise" and "noise1" variable in path_rotate.

   Also in path_rotate, if STOP is set, the train will wait until it is
   retriggered before moving on to the next goal.

   Trains are moving platforms that players can ride.

   "path" specifies the first path_rotate and is the starting position.
   If the train is the target of a button or trigger, it will not begin
   moving until activated.  The func_rotate_train entity is the center
   of rotation of all objects targeted by it.

   If "deathtype" is set with a string, this is the message that will
   appear when a player is killed by the train.

   speed   default 100

   dmg      default  0

   sounds
   1) ratchet metal

*************
rotate_object (0 .5 .8) ?
*************

   This defines an object to be rotated.  Used as the target of
   func_rotate_door.

****************
func_rotate_door (0 .5 .8) (-8 -8 -8) (8 8 8) STAYOPEN
****************

   Creates a door that rotates between two positions around a point of
   rotation each time it's triggered.

   STAYOPEN tells the door to reopen after closing.  This prevents a
   trigger-once door from closing again when it's blocked.

   "dmg" specifies the damage to cause when blocked.  Defaults to 2.
   Negative numbers indicate no damage.

   "speed" specifies how the time it takes to rotate

   "sounds"
   1) medieval (default)
   2) metal
   3) base

**********
func_clock (0 0 0.5) (0 0 0) (32 32 32)
**********
   Creates one hand of a "clock".

   Set the angle to be the direction the clock is facing.

   "event" is the targetname of the entities to trigger when hand
   strikes 12.
   "cnt" is the time to start at.
   "count" is the # of seconds it takes to make a full revolution
   (seconds is 60, minutes 3600, hours 43200).  default is 60.

==========================================================================
=                                                                        =
= MISCELLANEOUS GEOMETRY                                                 =
=                                                                        =
==========================================================================

*************
func_movewall (0 .5 .8) ? VISIBLE TOUCH
*************

   Used to emulate collision on rotating objects.

   VISIBLE causes brush to be displayed.

   TOUCH specifies whether to cause damage when touched by player.

   NONBLOCKING makes the brush non-solid.  This is useless if VISIBLE is
   not set.

   "dmg" specifies the damage to cause when touched or blocked.

***********
func_train2 (0 .5 .8) ?
***********

   This is a modification of the standard func_train entity.
   It is functionally equivalent, except that it removes a slight delay
   that would occur after each path entry, and it adds a speed variable to
   the path_corner entity.

   "noise" contains the name of the sound to play when train stops.

   "noise1" contains the name of the sound to play when train moves.

   Both "noise" and "noise1" defaults depend upon "sounds" variable.

   In path_corner, set speed to be the new speed of the train after it
   reaches the path change.  If speed is -1, the train will warp directly
   to the next path change after the specified wait time.

   Also in path_corner, if wait is set to -1, the train will wait until it
   is retriggered before moving on to the next goal.

   Here is a reiteration of the func_train docs:

   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

*************
func_pushable (0 .5 .8) ?
*************

   Pushable walls. Not quite working, but fun to play around with.

***********
path_follow (0.5 0.3 0) ?
***********
   Monsters will stop what they are doing and follow to the target.
   This forces monsters to change direction, unless there enemy is
   in sight.

   Variable Sized

***********
path_follow2 (0.5 0.3 0) (-8 -8 -8) (8 8 8)
***********
   Monsters will stop what they are doing and follow to the target.
   This forces monsters to change direction, unless there enemy is
   in sight.

   Fixed Size

==========================================================================
=                                                                        =
= HIPNOTIC ITEMS                                                         =
=                                                                        =
==========================================================================

*********************
item_artifact_wetsuit (0 .5 .8) (-16 -16 -24) (16 16 32)
*********************

   Player takes no damage from electrical attacks and swims faster for
   30 seconds.

********************
item_hornofconjuring (0 .5 .8) (0 0 0) (32 32 32)
********************

   Horn of Conjuring.  You must make func_spawn entities connected to
   this entity to spawn the charmed creature.

*****************************
item_artifact_empathy_shields (0 .5 .8) (0 0 0) (32 32 32)
*****************************

**************
weapon_mjolnir (0 .5 .8) (-16 -16 0) (16 16 32)
**************

****************
weapon_laser_gun (0 .5 .8) (-16 -16 0) (16 16 32)
****************

********************
weapon_proximity_gun (0 .5 .8) (-16 -16 0) (16 16 32)
********************


==========================================================================
=                                                                        =
= HIPNOTIC TRAPS                                                         =
=                                                                        =
==========================================================================

***************
trap_spike_mine (0 .5 .8) (-16 -16 0) (16 16 32)
***************

************************
trap_lightning_triggered (0 .5 .8) (-8 -8 -8) (8 8 8) random boom
************************

   When triggered, fires lightning in the direction set in QuakeEd.

   "wait" how long to wait between blasts (1.0 default)
   if in random mode wait is multiplied by random

   "nextthink" delay before firing first lightning, so multiple traps
    can be stagered.

   "dmg" how much damage lightning should inflict (30 default)

   "duration" how long each lightning attack should last (0.1 default)


**************
trap_lightning (0 .5 .8) (-8 -8 -8) (8 8 8) random boom
**************

   Continuously fire lightning.

   "wait" how long to wait between blasts (1.0 default)
   if in random mode wait is multiplied by random

   "nextthink" delay before firing first lightning, so multiple
   traps can be stagered.

   "dmg" how much damage lightning should inflict (30 default)

   "duration" how long each lightning attack should last (0.1 default)

***********************
trap_lightning_switched (0 .5 .8) (-8 -8 -8) (8 8 8) random boom
***********************

   Continuously fires lightning.

   "wait" how long to wait between blasts (1.0 default)
   if in random mode wait is multiplied by random

   "nextthink" delay before firing first lightning, so multiple traps can
   be stagered.

   "dmg" how much damage lightning should inflict (30 default)

   "duration" how long each lightning attack should last (0.1 default)

   "state" 0 (default) initially off, 1 initially on.

***************
trap_tesla_coil (0 .5 .8) (-8 -8 -8) (8 8 8) targetenemies
***************

   targets enemies in vicinity and fires at them

   "wait" how long build up should be (0.5 * (4-skill) default)

   "dmg" how much damage lightning should inflict (5 default)

   "duration" how long each lightning attack should last (continuous
   default)

   "distance" how far the tesla coil should reach (600 default)

   "state" on/off for the coil (0 default is off)

   "count" number of people to target (2 default)

***************
trap_gods_wrath (0 .5 .8) (-8 -8 -8) (8 8 8) targetenemies
***************

   targets enemies in vicinity and fires at them

   "dmg" how much damage lightning should inflict (5 default)

   "duration" how long each lightning attack should last (continuous
   default)

   "distance" how far god's wrath should reach (600 default)

   "delay" how long to wait until god calms down
   this is only needed if no one is targetted (5 seconds default)

   "count" number of people to target (2 default)


*****************
trap_gravity_well (.8 .5 0) (-8 -8 -8) (8 8 8) targetenemies UNDERWATER
*****************

   targets enemies in vicinity and draws them near, gibbing them on
   contact.

   UNDERWATER cuts the pull in half for players wearing the wetsuit

   "distance" how far the gravity well should reach (600 default)

   "count" number of people to target (2 default)

   "speed" is how strong the pull is. (210 default)

   "dmg" is how much damage to do each touch. (10000 default)


*********************
trap_spikeshooter (0 .5 .8) (-8 -8 -8) (8 8 8)
                  superspike laser lavaball rocket silent
*********************

   shoots spikes, lasers, lavaballs or rockets.
   silent flag determines if lasers are silent or not.
   Fires the projectile in the direction set in QUAKED.


*********************
trap_shooter (0 .5 .8) (-8 -8 -8) (8 8 8)
             superspike laser lavaball rocket silent
*********************

   shoots spikes, lasers, lavaballs or rockets.
   silent flag determines if lasers are silent or not.
   Continuous fire.

   "wait" time between spike (1.0 default)

   "nextthink" delay before firing first spike, so multiple shooters can
   be stagered.
   Fires the projectile in the direction set in QUAKED.


*********************
trap_switched_shooter (0 .5 .8) (-8 -8 -8) (8 8 8)
                      superspike laser lavaball rocket silent
*********************

   shoots spikes, lasers, lavaballs or rockets.
   silent flag determines if lasers are silent or not.
   Continuous fire.

   "wait" time between spike (1.0 default)

   "nextthink" delay before firing first spike, so multiple shooters can
   be stagered.

   "state" 0 initially off, 1 initially on. (0 default)



==========================================================================
=                                                                        =
= HIPNOTIC SPECIAL EFFECTS                                               =
=                                                                        =
==========================================================================

********************
play_sound_triggered (0.3 0.1 0.6) (-8 -8 -8) (8 8 8) toggle
********************

   play a sound when it is used

   toggle determines whether sound should be stopped when triggered again

   "volume" how loud (1 default full volume)

   "noise" sound to play

   "impulse" channel on which to play sound (0-7) (0 automatic is default)

   "speed" attenuation factor
      -1 - no attenuation
       1 - normal
       2 - idle
       3 - static


**********
play_sound (0.3 0.1 0.6) (-8 -8 -8) (8 8 8)
**********

   play a sound on a periodic basis

   "volume" how loud (1 default 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) (0 automatic is default)

   "speed" attenuation factor
      -1 - no attenuation
       1 - normal
       2 - idle
       3 - static


**************
random_thunder (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
**************

   "wait" random time between strikes (default 20)

   "delay" minimum delay between strikes (default 2)

   "volume" how loud (1 default full volume)

   "speed" attenuation factor
      -1 - no attenuation
       1 - normal
       2 - idle
       3 - static


************************
random_thunder_triggered (0.3 0.1 0.6) (-10 -10 -8) (10 10 8) toggle
************************

   toggle determines whether sound should be stopped when triggered again

   "volume" how loud (1 default full volume)

   "speed" attenuation factor
      -1 - no attenuation
       1 - normal
       2 - idle
       3 - static


***************
ambient_humming (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
***************

   humming ambient sound

   "volume" how loud it should be (0.5 is default)


***************
ambient_humming (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
***************

   rushing ambient sound

   "volume" how loud it should be (0.5 is default)


*********************
ambient_running_water (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*********************

   running water ambient sound

   "volume" how loud it should be (0.5 is default)


*******************
ambient_fan_blowing (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*******************

   fan blowing ambient sound

   "volume" how loud it should be (0.5 is default)


*****************
ambient_waterfall (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*****************

   waterfall ambient sound

   "volume" how loud it should be (0.5 is default)


*****************
ambient_riftpower (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
*****************

   riftpower ambient sound

   "volume" how loud it should be (0.5 is default)


******************
func_particlefield (0 .5 .8) ? USE_COUNT
******************

   Creates a brief particle flash roughly the size of the defining
   brush each time it is triggered.

   USE_COUNT when the activator is a func_counter, the field will only
   activate when count is equal to "cnt".  Same as using a func_oncount
   to trigger.

   "cnt" is the count to activate on when USE_COUNT is set.

   "color" is the color of the particles.  Default is 192 (yellow).

   "count" is the density of the particles.  Default is 2.

   "noise" is the sound to play when triggered.  Do not use a looping
   sound here.

   "dmg" is the amount of damage to cause when touched.


***************
func_togglewall (0 .5 .8) ? START_OFF
***************

   Creates a invisible wall that can be toggled on and off.

   START_OFF wall doesn't block until triggered.

   "noise" is the sound to play when wall is turned off.
   "noise1" is the sound to play when wall is blocking.
   "dmg" is the amount of damage to cause when touched.


***************
func_earthquake (0 0 0.5) (0 0 0) (32 32 32)
***************

   Causes an earthquake.  Triggers targets.

   "dmg" is the duration of the earthquake.  Default is 0.8 seconds.


***********
func_rubble (0.4 0.4 0.2) (0 0 0) (32 32 32)
***********

   Spawns random sized rubble when triggered.

   "count" is the number of pieces of rubble to spawn.  Default is 1.


************
func_rubble1 (0.4 0.4 0.2) (0 0 0) (8 8 8)
************

   Spawns small rubble when triggered.

   "count" is the number of pieces of rubble to spawn.  Default is 1.


************
func_rubble2 (0.4 0.4 0.2) (0 0 0) (16 16 16)
************

   Spawns medium rubble when triggered.

   "count" is the number of pieces of rubble to spawn.  Default is 1.


************
func_rubble3 (0.4 0.4 0.2) (0 0 0) (32 32 32)
************

   Spawns large rubble when triggered.

   "count" is the number of pieces of rubble to spawn.  Default is 1.


******************
func_breakawaywall (0 .5 .8) ?
******************

   Special walltype that removes itself when triggered.


*************
func_exploder (0.4 0 0) (0 0 0) (8 8 8) particles
*************

   Spawns an explosion when triggered.  Triggers any targets.

   particles - whether to spawn particles or not

   "dmg" specifies how much damage to cause.  Negative values
         indicate no damage.  Default or 0 indicates 120.
   "volume" volume at which to play explosions (default 1.0)
   "speed" attenuation for explosions (default normal)


*******************
func_multi_exploder (0.4 0 0) ?
*******************

   Spawns an explosion when triggered.  Triggers any targets.
   size of brush determines where explosions will occur.

   "dmg" specifies how much damage to cause from each explosion
   Negative values indicate no damage.  Default or 0 indicates 120.

   "delay" delay before exploding (Default 0 seconds)

   "duration" how long to explode for (Default 1 second)

   "wait" time between each explosion (default 0.25 seconds)

   "volume" volume to play explosion sound at (default 0.5)

   "speed" attenuation for explosions (default normal)


**********
wallsprite (0 1 0) (-8 -8 -8) (8 8 8)
**********

   Places a sprite on a wall.  Angles should be opposite of face.

   "model" sprite to place on wall.  Default is "progs/s_blood1.spr".


***************
effect_teleport (0.3 0.1 0.6) (-8 -8 -8) (8 8 8)
***************

   Create a teleport effect when triggered
   The effect is only eye-candy it does nothing


*************
effect_finale (0.3 0.1 0.6) (-8 -8 -8) (8 8 8) useplayer nodecoy
*************

   start the finale sequence

   useplayer - use the current player as
               decoy location.
   nodecoy - no decoy, only the camera

   "target" the camera to go to.

   "mdl" if useplayer is specified, this is a path corner with target
   of the next path_corner to run to.

   if use player isn't specified this becomes
   the spawn point as well.

   "spawnfunction" next routine to run

   "delay" time to wait until running routine


*****************
info_startendtext (0.3 0.1 0.6) (-8 -8 -8) (8 8 8)
*****************

   Start the end text if this level has any.  It puts the player into
   intermission mode.


==========================================================================
=                                                                        =
= HIPNOTIC MONSTERS                                                      =
=                                                                        =
==========================================================================

***************
monster_armagon (1 0 0) (-32 -32 -24) (32 32 64) Ambush
***************

***************
monster_gremlin (1 0 0) (-32 -32 -24) (32 32 64) Ambush
***************

***************
monster_scourge (1 0 0) (-16 -16 -24) (16 16 40) Ambush
***************

   Now known as Centroids


***************
monster_decoy (1 0 0) (-16 -16 -24) (16 16 40)
***************

   Decoy player monster. Will run to path_corners.


==========================================================================
=                                                                        =
= MISCELLANEOUS                                                          =
=                                                                        =
==========================================================================

**********
func_spawn (0 .5 .8) (-32 -32 -24) (32 32 40) big/ambush megahealth
**********

   This will spawn a thing upon being used. The thing that
   is spawned depends upon the value of "spawnfunction".

   "spawnclassname" should contain the same value as "spawnfunction".

   If "spawnfunction" is unspecified a random monster is chosen as
   follows:

   50% - dog
   30% - ogre
   12% - fiend
   5% - zombie
   3% - shambler

   The angles, target and all flags are passed on
   Think of it like setting up a normal entity.

   "spawnsilent" set this to none 0 if you want a silent spawn.

   "spawnmulti" set this to 1 if you want this spawn to be reoccuring.


**********
func_spawn_small (0 .5 .8) (-16 -16 -24) (16 16 40) big/ambush megahealth
**********

   same as above except smaller.


************
func_counter (0 0 0.5) (0 0 0) (32 32 32)
             TOGGLE LOOP STEP RESET RANDOM FINISHCOUNT START_ON
************

   TOGGLE causes the counter to switch between an on and off state
   each time the counter is triggered.

   LOOP causes the counter to repeat infinitly.  The count resets to zero
   after reaching the value in "count".

   STEP causes the counter to only increment when triggered.  Effectively,
   this turns the counter into a relay with counting abilities.

   RESET causes the counter to reset to 0 when restarted.

   RANDOM causes the counter to generate random values in the range 1 to
   "count" at the specified interval.

   FINISHCOUNT causes the counter to continue counting until it reaches
   "count" before shutting down even after being set to an off state.

   START_ON causes the counter to be on when the level starts.

   "count" specifies how many times to repeat the event.  If LOOP is set,
   it specifies how high to count before reseting to zero.  Default is 10.

   "wait"  the length of time between each trigger event.
   Default is 1 second.

   "delay" how much time to wait before firing after being switched on.


************
func_oncount (0 0 0.5) (0 0 0) (16 16 16)
************

   Must be used as the target for func_counter.  When the counter
   reaches the value set by count, func_oncount triggers its targets.

   "count" specifies the value to trigger on.  Default is 1.

   "delay" how much time to wait before firing after being triggered.


***********************
trigger_damagethreshold (0 .5 .8) ? MULTI_USE INVISIBLE
***********************

   Triggers only when a threshold of damage is exceeded.
   When used in conjunction with func_breakawaywall, allows
   walls that may be destroyed with a rocket blast.

   MULTI_USE tells the trigger to not to remove itself after
   being fired.  Allows the trigger to be used multiple times.

   INVISIBLE tells the trigger to not be visible.

   "health" specifies how much damage must occur before trigger fires.
   Default is 60.


****************
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)
    "cnt" how many times it can be triggered (infinite 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


************
trigger_hurt (.5 .5 .5) ?
************

   Any object touching this will be hurt
   set dmg to damage amount
   defalt dmg = 5
   "cnt" default infinite, how many times to trigger


*******************
trigger_monsterjump (.5 .5 .5) ?
*******************

   Walking monsters that touch this will jump in the direction of the
   trigger's angle
   "speed" default to 200, the speed thrown forward
   "height" default to 200, the speed thrown upwards
   "cnt" default infinite, how many times to trigger


**************
trigger_usekey (0 .5 0) ? USE_GOLD_KEY
**************

   USE_GOLD_KEY if set use gold key, otherwise the silver key

   Variable sized single use trigger that requires a key to trigger
   targets.  Must be targeted at one or more entities.

   "message" is printed when the trigger is touched without having the
   right key.


**************
trigger_remove (.5 .5 .5) ? ignoremonsters ignoreplayers
**************

   IGNOREMONSTERS - ignores monsters if set
   IGNOREPLAYERS - ignores players if set

   Variable sized trigger that removes the thing that touches it.  Does
   not affect monsters or players.


******************
trigger_setgravity (.5 .5 .5) ?
******************

   set the gravity of a player
   "gravity" what to set the players gravity to
    - 0 (default) normal gravity
    - 1 no gravity
    - 2 almost no gravity
    - ...
    - 101 normal gravity
    - 102 slightly higher than normal gravity
    - ...
    - 1000 very high gravity


***************
trigger_command (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
***************

   When triggered, stuffs a command into the console to allow map
   designers to set server variables.

   "message" is the command to send to the console.


************
info_command (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
************

   Stuffs a command into the console to allow map designers
   to set server variables.

   "message" is the command to send to the console.

*****************
trigger_decoy_use (.5 .5 .5) ?
*****************

   only the decoy player can trigger this once triggers, all targets are
   used


*****************
trigger_waterfall (.2 .5 .2) ?
*****************

   Pushes the player in the direction specified by angles.

   "speed" is the strength of the push (default 50).
   "count" amount of random xy movement to add to velocity (default 100).


*****************
func_bobbingwater (0 .5 .8) ?
*****************

   Used to emulate water.  To use, create a thin water brush and center it
   on the water line of the body of water to bob.  The amount of the bob
   is the depth of the brush.

   "speed" is how long in seconds it takes the brush to do one full bob.


==========================================================================
=                                                                        =
= MISCELLANEOUS COMMENTS                                                 =
=                                                                        =
==========================================================================


- Added visible_distance variable in "visible" function.  If
trace_fraction is 1.0, than visible_distance is set to the distance
between self.origin and the creature.origin.

- if attack_state is set to AS_DODGING, ai_run_dodge is called which
causes a creature to run at you while strafing from side to side.

- made the fish SOLID_NOT a lot sooner now.  It may be possible to move
right through them if you are too quick.

- gravity field is added.  When set, each entity can have it's own
gravity.

- added subroutine SUB_CopyEntity to duplicate an entity.

- added subroutine SUB_NormalizeAngles to fix "wrong" angles.
