/////////////////////////./////////////////
lOkO Q2 MegaMod beta 0.14 - October 2005
///////////////////////////////////////////

www.angelfire.com/jazz/loko

lOkO bot beta .14 Manual
------------------------

    The lOkO bot is a modification of the ACE II bot source version 0.7.
The ACE II bot source was written by Steve Yeager. The lOkO bot was written
by Lou Korosy aka lOkO. The ACE II bot source was a modification of a version
of the Quake2 game dll source code from id software and the Three Wave
Capture the Flag source code by Zoid.

This is a beta version of the dll and the documentation.

DISCLAIMER: This software is provided as-is with no implied warranty or support.
Use at your own risk; I assume no responsibility for any damage to any hardware,
software, firmware, middleware, swimwear, underwear etc. that may occur as a 
result of using this software. That said, this software has been play tested for 
hundreds of hours and has caused no harm to any computer hardware or living 
thing it's been tested on. This software is not for sale and is not to be sold.
Please distribute the entire zip archive file with all files intact.

You need Quake2 version 3.20 and CTF 1.50 installed to play the lOkO mod.

Quake, Quake2, Q2 and any words remotely resembling quake (but not quack, quark 
or quinine) are trademarks of id Software. Kneel and bow towards Mesquite.


Table Of Contents
-----------------
1.0 Overview, Installation and Startup

	1.1 Game Features

	1.2 Bot Features

	1.3 Installation and Startup

2.0 Game Details

	2.1 Server Options

		2.1.1 Weapons Management

			2.1.1.1 Weapons
	
				2.1.1.1.1 Alternate Fire Modes
	
	          			2.1.1.1.1.1  Q2 Weapons only          		

					2.1.1.1.1.2  Napalm Weapons Only  
        		          				
					2.1.1.1.1.3  Cost Mode          		

					2.1.1.1.1.4  Arms For Heads

					2.1.1.1.1.5  Fixed Weapons 

					2.1.1.1.1.6  Low Cost Mode

				2.1.1.1.2 Available Fire Modes 
	
				2.1.1.1.3 Max Ammo and Ammo at Startup
            	
				2.1.1.1.4 Misc. Ammo Options    

			2.1.1.2 Weapons Control

				2.1.1.2.1 Configuring Start Weapons

				2.1.1.2.2 Banning Weapons

				2.1.1.2.3 Configuring 'Insta-Gib' servers

				2.1.1.2.4 Misc. Weapon Options    
	
				      2.1.1.2.4.1 CTF Grapple as weapon    

	            	2.1.1.3 Third Party Killers

				2.1.1.3.1 AirStrikes
	
				2.1.1.3.2 Voodoo Homing Heads       

				2.1.1.3.3 Monster Sidekicks

				      2.1.1.3.3.1 Controlling Monster Sidekick Costs

		2.1.2  Server Gameplay Options

			2.1.2.1  Respawn Protection

			2.1.2.2  Dropping Backpacks

			2.1.2.3  Ejecting Shotgun Shells

			2.1.2.4  Ejecting Bullet Casings

			2.1.2.5  Feed The Mutant

			2.1.2.6  Bots vs. Humans

			2.1.2.7  Locational Damage

				2.1.2.7.1  Locational Damage, Head Shots Only

			2.1.2.8  Announce Headshots

			2.1.2.9  Turning Footsteps off/on

			2.1.2.10 Haste For All Players

			2.1.2.11 Vampire For All Players

			2.1.2.12 Max Health and Start Health

			2.1.2.13 Start Armor

			2.1.2.14 No Hook and/or No Grapple

			2.1.2.15 Default KillerCam

			2.1.2.16 Standard iD Options

			2.1.2.17 Playing Tag

			2.1.2.18 Action Quake2 Doors

			2.1.2.19 Deathmatch Monsters

				2.1.2.19.1 Server Spawned Monsters

					2.1.2.19.1.1 The savemonsters server command

					2.1.2.19.1.2 The use_monster_file server cvar

					2.1.2.19.1.3 Using a Text Editor to Create/Edit a Monster File

				2.1.2.19.2 Capture the Flag Team Monsters

					2.1.2.19.2.1 The ctfmonster server command
					
					2.1.2.19.2.2 The savectfmonsters server command

					2.1.2.19.2.3 The use_ctf_monster_file server cvar

					2.1.2.19.2.4 Using a Text Editor to Create/Edit a CTF Monster File

				2.1.2.19.3 The removemonsters server command

				2.1.2.19.4 The monster_kill_bonus server cvar

		2.1.3  Misc. Server Options

			2.1.3.1  OpenGL Fog Options

				2.1.3.1.1  Fog Options Cvars and Commands

				2.1.3.1.2  Fog Options Files

				2.1.3.1.3  Default Fog Options File

			2.1.3.2  Map Rotation

			2.1.3.3  Adding Items/Monsters to Maps

				2.1.3.3.1  Manually Adding Items/Monsters to Maps (console)

				2.1.3.3.2  Extra Map Item/Monster Files
			
					2.1.3.3.2.1 Saving Extra Items/Monsters to Disk

				2.1.3.3.3  Spawning Random Health

				2.1.3.3.4  CTF Flag Position File

			2.1.3.4  Additional Techs

			2.1.3.5  Additional Powerups

			2.1.3.6  MegaHealth Bug/Feature

			2.1.3.7  game_engine Server Cvar for Quake2 Engine Mod Compatability

			2.1.3.8  no_target_speaker Server Cvar

			2.1.3.9  save_scores Server Cvar

			2.1.3.10  Playing Action Quake2 Maps

	2.2 Client Options
            
		2.2.1  Hud Options

			2.2.1.1  Ammo Hud 

			2.2.1.2  No Hud

			2.2.1.3  Laser Sight

			2.2.1.4  Scanner

		            2.2.1.4.1  Scanner Offset

		            2.2.1.4.2  Scanner Range

		2.2.2  Spectator Chase Cam

			2.2.2.1  Turning Chase Cam on/off

			2.2.2.2  Changing Chase Cam Camera Position

				2.2.2.2.1  Chase Cam Standard Positions

				2.2.2.2.2  Chase Cam Custom Positions

			2.2.2.3  Killercam

		2.2.3  Ycam (3rd person perspective)

			2.2.3.1  Turning Ycam on/off

			2.2.3.2  Changing Ycam Camera Position

		2.2.4 Client Weapons/Ammo Commands

			2.2.4.1 tosshead

			2.2.4.2 airstrike

			2.2.4.3 detpipe

			2.2.4.4 firemode

			2.2.4.5 cyclefiremode

		2.2.5 Client Monster Sidekick Commands

			2.2.5.1 The sidekick Client Command
						
			2.2.5.2 The bestsidekick Client Command	

			2.2.5.3 Teleporting Your Monster Sidekick

		2.2.6 Client Misc. Commands

			2.2.6.1 Standard iD Client Commands

				2.2.6.1.1 viewpos

				2.2.6.1.2 id

			2.2.6.2 Additional lOkO Client Commands

				2.2.6.2.1 +jetpack alias

				2.2.6.2.2 off-hand hook commands

				2.2.6.2.3 CTF Grapple commands

				2.2.6.2.4 svstatus command

				2.2.6.2.5 altscore command

				2.2.6.2.6 zoom scope

				2.2.6.2.7 botskills command

				2.2.6.2.8 botroles command

				2.2.6.2.9 monsterscore command

				2.2.6.2.10 showdmflags command

				2.2.6.2.11 itemsum command

				2.2.6.2.12 extrasum command


	2.3 Bots

		2.3.1 Managing Bots

			2.3.1.1 Adding Bots

				2.3.1.1.1 The allow_bot_menu Server cvar

				2.3.1.1.2 The botmenu command

				2.3.1.1.3 The addbot command

				2.3.1.1.4 The loadbot command

			2.3.1.2 Removing Bots

			2.3.1.3 Killing Stuck Bots

			2.3.1.4 Re-spawning Bots Across Level Changes

			2.3.1.5 Other Bot Options
                
				2.3.1.5.1 Bot Chat

				2.3.1.5.2 Bot Hazard Detection

				2.3.1.5.3 Bot Laser Site

				2.3.1.5.4 Bot CTF Auto Role

				2.3.1.5.5 Explicit Bot CTF Roles

					2.3.1.5.5.1 Commands For Displaying Node Locations

						2.3.1.5.5.1.1 The findnode command

						2.3.1.5.5.1.2 The shownode command

						2.3.1.5.5.1.3 The shortpath command

						2.3.1.5.5.1.4 The itematnode command

					2.3.1.5.5.2 Commands For Explicit Bot CTF Roles

				2.3.1.5.6 Bot Navigation Without the Off-Hand Hook

				2.3.1.5.7 Bot Hydrophobia

				2.3.1.5.8 Bots and the notarget command

				2.3.1.5.9 Viewing Bot AI

				2.3.1.5.10 Verbose CTF Bots cvar

				2.3.1.5.11 CTF botlocations command

				2.3.1.5.12 bot_sound_perception cvar

				2.3.1.5.13 bots_see_thru_water cvar

				2.3.1.5.14 teleport_dislike cvar

				2.3.1.5.15 train_dislike cvar

3.0 Sample Configuration Scripts

4.0 Known Problems

5.0 Tips and Tricks
==================================================================================

1.0 Overview
------------

1.1 Game Features
-----------------

Play as a full blown weapons mod, straight quake 2 deathmatch,
"lithium"-like deathmatch, Capture the Flag or customize the gameplay; 
features toggle on/off with server cvars.

Multiple alternate fire modes for all weapons; all weapons have one 
alternate fire mode that can set opponents on fire. Or just play with
the default Quake2 weapon firemodes.

Off-hand laser hook in addition to the standard CTF grapple, or both
can be banned

Fragged players drop backpacks full of their weapons and ammo

Togglable Pro-Rocket emulation (fast weapons switching, rocket speed
   increased, altered radius damage) from the Pro-Rocket specification
   make the rocket launcher "feel" more like Classic Quake

Additional Techs : Vampire, Jetpack, Voodoo, Ammo Regen, Lightning Defense

Monsters in Deathmatch: have a monster fight for you or your team; plant 
    respawning or immortal monsters on any map(0.13).

Configurable starting weapons/ammo/health/armor

Weapons Banning

Togglable Locational Damage scoring

Active Laser Sight, green if off target, red if on target

Enhanced Chase Cam with 7 camera views

Third person perspective ycam

Enhanced HUD to display all weapons and ammo in your inventory and location
  damage info, or turn the HUD completely off.

Fog for OpenGl 1.1 compliant video cards (and Voodoo Graphics Cards too)

Zoom Scope

Radar Scanner shows the locations of foes, teammates

Homing Heads adapted from the Classic Quake mod Heads - re-animate gibbed
heads you pick up, they attack your foes, you get the frags!

AirStrikes rain rockets upon your foes

Off-hand hook and CTF grapple damage increased from 1 to 10, making either
   of these hooks useful melee range weapons. If a ctf grapple strikes a player
   it sticks to them rather than resetting (togglable).

Non-invasive addition of weapons/ammo/health/powerups/dmstarts to any level 
   from a simple text file or at the console; add CTF flags to any level, add 
   that Quad Damage wherever you like, add deathmatch spawn points to single 
   player maps ...


Ejecting shotgun shells and bullet casings

Ring of Shadows powerup (invisibility) like Classic Quake

Optional Jetpack for all players

Optional Haste (weapon fire rate doubled) for all players

Optional Vampire (damage dealt increases your health) for all players

Respawn Protection - configurable time of invincibility when you respawn;
    you won't be able to shoot any weapon (including either hook) during
    this time period.

Feed the Mutant : collect gibbed heads and bring them to the Mutant for mucho 
    frag points (a "Head Hunters"-like game).

Play a game of Tag; when you become "it" you get get 666 health, all 
weapons, get all ammo limits raised by 50 units and a full inventory of each
ammo. Players who are "it" get 5 frag points for each frag they get !

Turn off footstep sounds for all players.

Standard iD map rotation.
 
Support for Action Quake 2 maps: doors can be made to behave like Action
    Quake2 (opened withe the opendoor command) and the server can spawn
    random health items near deathmatch spawn points (0.13)

Save scores and statistics to a disk file when the match ends

1.2 Bot Features
----------------

All new bot AI and enhanced movement code.

4 skill levels for bots affecting aim, agility, item acquisition ability,
combat skills, aggressiveness and other stuff.

Bot uses PRE-MADE node files; can play without nodes but will not navigate
the level too well (ahem ...). Pre-Made node files available 
for over 1500 maps or roll your own (see the LOKOPATHING document).

Bots don't have instant reflexes, unreal accuracy, super-human
speed or unbelievable agility; they can't perform any move a human
could not perform. 

Bots always plan the shortest path to their destination.

Bots try to avoid flames and seek water/health when on fire.

Bots hook/grapple out of lava/slime.

Bots seek air when in danger of drowning.

Intelligent weapon/fire mode switching.

Uses all weapons/fire modes/grappling hooks except pipe bombs.

Bots use monster sidekicks and teleport them (0.13).

Automatic or Manual bot configuration (skill, name, model/skin, team).

Use the bot menu to easily add bots to the game.

Bots use platforms, teleporters, jump pads, wind tunnels, func_train, etc.

Bots will follow the the sounds players/bots make when firing weapons, 
picking up items, entering/leaving water, using the jetpack, screaming 
from pain, etc.

Bots shoot secret doors and shootable buttons.

Teamplay support and CTF abilities - the bots can play CTF on most 
maps, even non-ctf maps (they play CTF on any map if a bot path exists). 
Let the bots play CTF on their own or explicitly command your team.

Bots gib dead bodies to harvest gibbed heads when needed.

Bots open and navigate doors on Action Quake2 maps (0.13)



1.3 Installation and Startup
----------------------------
The zip file should be un-zipped into your Quake2 directory with "use directories"
or whatever settings in your unzip program preserve the directory structure of
the zip file when it writes the files to disk (ie. unzip into C:\Quake2 if that's
the place you installed Quake2).


The directory structure should look like:
(warning: programmer art ahead ...)

Quake2--|-- loko ---|--- fog
        |           |
        |           |----items
	|           |
        |           |----scores
        |-- lokonav


The loko directory should contain gamex86.dll, pak0.pak, configuration files (.cfg)
and all text (.txt) except flag_positions.txt 

The fog directory should contain all fog files (.fog).

The items directory should contain all extra item files (.xif), monster files
(.mon), ctf monster files (.tmo)  and the flag_positions.txt file.

The scores directory should contain the scores.doc file

The lokonav directory should contain all the bot route files, known as "noodle" 
files (.ndl). You can save much disk space if you only extract the noodle files 
for the maps you have.

If the fine illustration above isn't clear, the lokonav directory is in the
Quake2 directory, *not* in the Quake2\loko directory.

You start the loko mod from your quake2 directory with the following commands:

	For normal deathmatch:

		quake2 +set game loko +set deathmatch 1 +set ctf 0 +map q2dm1

	For Capture the Flag:

		quake2 +set game loko +set deathmatch 1 +set ctf 1 +map q2ctf1

I usually run a batch file to start Q2; here's an example:

		c:
		cd \quake2
		quake2 +set game loko +set deathmatch 1 +set ctf 0 +map %1
	
If I named this file lokobot.bat, to play the map spogdm1 I'd invoke it with 
a command line of:

		lokobot spogdm1


Note: you will have to move the pak file containing the CTF maps,graphics, models
and sounds in the quake2\ctf directory to the the quake2\baseq2 directory if you 
haven't already (make sure you rename it first so you don't overwrite an existing
pak file); you can alternately move or copy the CTF pak file to the quake2\loko
directory. A third alternative is to extract what is needed from the CTF pak 
file into the appropriate directory off quake2\baseq2 or quake2\loko using a
pak file utility program.

CTF Note: Players can use any player model in CTF/teamplay but the skin names
	  **MUST** be "ctf_r" for the red team and "ctf_b" for the blue team;
          the game server must have skins named ctf_r.pcx, ctf_r_i.pcx, 
          ctf_b.pcx and ctf_b_i.pcx for each available model. Extract these 
          files for the male and female player models from the ctf pak
          file into the quake2\baseq2\male and quake2\baseq2\female 
          directories to show these models on the add bot menu when playing CTF.


2.0 Game Details
----------------

2.1 Server Options
------------------
   All server option parameters are controlled using server cvars, variables 
stored in memory by the server which can only be altered by the server operator. 
The value of each cvar can be set on the command line (ie. '+set ctf 1') or can 
be set in the autoexec.cfg file in the game directory, which is executed when 
the server is initially started. The value of any cvar not specified on the 
command line or in the autoexec.cfg file is set to a default value by the dll.
Of course you can set any server cvar at the console too.

Cvar names for the loko mod usually have undersores (_) in their name; command 
names never have underscores.

2.1.1 Weapons Management
-----------------------------

2.1.1.1 Weapons
---------------
The original Q2 weapons have been enhanced with alternate fire modes that
fire many different types of ordinance. The availability and cost of each 
alternate fire mode for each weapon is configured by setting various server 
cvars. Weapon switching is performed in the same manner as normal Q2, by pressing 
one of the number keys which are bound to the use weapon functions. Acquiring a 
weapon gives access to all the alternate fire available for that weapon provided 
the server settings allow the use of alternate fire modes. Repeatedly pressing the 
number key associated with the use of a weapon will cycle through all the available 
alternate fire modes for the weapon.


2.1.1.1.1 Alternate Fire Modes
------------------------------
cvar weapons_mode

The availability of the different alternate fire modes is configured using the 
server cvar weapons_mode. Fire modes may be limited to normal Q2 fire mode only, 
Napalm fire mode only, each weapon can have a "fixed" fire mode (ie. the 
hyperblaster only fires lightning), or all fire modes may be available either by 
cost (ie. normal rockets cost 1 rocket, a homing rocket costs 5 rockets, etc.) 
or low cost (all different fire modes have the same cost ie. supershotgun costs 2 
shells, freeze shells cost 2 shells). In Low Cost mode, BFG shots cost 50 cells, supershotgun blasts cost 2 
shells, blasters cost 0, all other weapon's fire modes have a cost of 1. 

    Command line examples: 

              '+set weapons_mode 0' limits ammo to the
                                    default Quake II fire modes.

               '+set weapons_mode 1' limits ammo to Napalm
                                     fire mode (the second fire mode 
                                     for each weapon).

               '+set weapons_mode 2' invokes Cost mode

               '+set weapons_mode 3' invokes Arms For Heads mode

               '+set weapons_mode 4' invokes Fixed Weapons mode

               '+set weapons_mode 5' invokes Low Cost mode

The default weapons_mode is 2 (cost mode).

2.1.1.1.1.1  Q2 Weapons Only          		
----------------------------
Like it says, only the original Q2 weapon fire modes are available for each weapon.

Invocation on the command line: '+set weapons_mode 0'

For people who deem the Q2 blaster bolts too laggy, setting the server cvar 
laser_blasters to 1 substitutes an instant hit green laser beam for the bolts 
from both the blaster and the hyperblaster. For people with cpu cycles to burn, 
setting the cvar bouncing_blaster_bolts to 1 causes bolts from the blaster and 
the hyperblaster to ricochet off walls. The laser_blasters cvar only has an 
effect when weapons_mode is set to 0; the bouncing_blaster_bolts cvar effects all 
weapon fire modes that allow blaster bolts.


2.1.1.1.1.2  Napalm Weapons only
--------------------------------
   Each weapon has one "Napalm" fire mode from the Napalm Quake2 mod. Setting
the weapons_mode cvar to 1 limits the Quake2 weapons to using only Napalm fire
modes, either fireballs, flames, ammo that explodes into flames or ammo which 
has a chance to set the inflicted on fire; they will remain on fire for about 
6 seconds. Change the cvar flame_time value to suit your taste (medium rare to 
well done). Incendiary shells and bullets have a 1 in 10 chance of setting the 
inflicted on fire. Fire will be transferred from one player to another if they 
get too close. Fire will remain burning for a while after a player/bot is 
bar-b-qued to death and anyone walking thru the flames will burn too. Fire is 
immediatley extinguished when a flaming player/bot acquires health, jumps into 
water up to it's waist or is frozen. Some Napalm ammo is completely useless 
underwater; Fireballs and the flame throwing hyperblaster produce only steam. 
The bots are aware of this and will switch weapons or fire modes to something 
more effective. A bot on fire will immediately try to head for water, even if 
it means lunging forward towards a heavily armed attacker.

Invocation on the command line: '+set weapons_mode 1'


2.1.1.1.1.3  Cost Mode
----------------------
In cost mode ALL fire modes are available for use (provided you've 
acquired the weapon). Each weapon's fire mode ammo costs are configured by a cvar 
except the regular quake2 fire modes; the default Q2 fire modes cost their 
normal amount of ammo, 0 for the blaster, two shells for the super shotgun, 50 
cells for the bfg and 1 bullet/shell/slug/cell/rocket/grenade for each other 
weapon. Ammo costs for all weapons except the blaster is the cost in the normal 
ammo for the weapon, ie. the ammos for the shotgun is expressed in shells, ammo 
for the rocket launcher is expressed in rockets, etc.; the exceptions are the 
additional fire modes for the blaster.

	fireball_blaster_cost		2 (shells)
	laser_blaster_cost		1 (cells)
	pistol_blaster_cost		2 (bullets)

	beam_shotgun_cost		3 (shells)
	electric_shotgun_cost		3

	incendiary_sshotgun_cost 	3 (shells)
	freeze_sshotgun_cost		4
	tesla_sshotgun_cost 		5

	fireball_machinegun_cost 	2 (bullets)
	rocket_machinegun_cost 		4
	corkscrew_machinegun_cost 	2

	incendiary_chaingun_cost 	2 (bullets)
	plasma_chaingun_cost 		3

	flame_grenades_cost 		2 (grenades)
	vortex_grenades_cost 		4
	cluster_grenades_cost 		5
	electric_grenades_cost		3
	pipe_grenades_cost 		3
	touch_grenades_cost		2

	flame_rockets_cost 		2 (rockets)
	triple_rockets_cost		5
	homing_rockets_cost		5
	impact_rockets_cost 		2

	flame_thrower_cost 		2 (cells)
	laser_hyperblaster_cost		2
	lightning_gun_cost		3

	meteor_railgun_cost		5 (slugs)
	gibflute_railgun_cost		10 (slugs per 1/2 second of use)

	antimatter_bfg_cost 		60 (cells)
	neutroncloud_bfg_cost 		60


You can effectively ban any non-standard firemode in Cost mode by setting it's 
cost to an unattainable value, ie. 'set cluster_grenades_cost 9999'. 


Invocation on the command line: '+set weapons_mode 2'

2.1.1.1.1.4  Arms For Heads
---------------------------
In Arms For Heads weapons mode, each weapon you acquire initially can use only
the default Q2 fire mode for that weapon; your weapons are upgraded as you pick 
up gibbed heads. When your weapons are upgraded they have the ability to use 
alternate fire modes but the ammo cost for the additional alternate fire 
capablilities, unlike Cost mode, remains at the cost of the normal Q2 ammo for 
that weapon, ie. all blaster ammo is free (cost = 0), all supershotgun fire
modes cost 2 shells, all bfg fire modes cost 50 cells, all other weapon fire
modes cost 1 (yes, the cluster grenade only costs you one grenade, the homing 
rocket only costs you one rocket, etc.). Each upgrade is cumulative, meaning once 
you upgrade your weapons they never lose the ability to use the additional 
alternate fire modes (until your butt has been fragged, of course). The cost of 
each upgrade is configured by a series of cvars. The table below is a summary of 
each upgrade:

             Default Cost
   Upgrade    (in heads)     Upgrade Description
   -------   -------------   ----------------------------------------
      1            5         Weapons in you inventory can fire normal
                             Q2 ordinance and Napalm ordinance

      2            10        Weapon in your inventory have all alternate
                             fire modes available.
  
      3            15        You get all Q2 weapons that you don't already
                             have (including weapons that don't exist on
                             the map) and a small amount of ammo for each
                             weapon.

      4            20        You get the maximum amount of ammo for each                                                                                                                                                  
                             weapon in your inventory and your health is
                             maxxed too.

      5            25        Your maximum amount of ammo for each weapon
                             is increased by 50 and your health and armor
                             are maxxed, plus you get 30 seconds of a random
                             powerup, either Quad Damage, Invincibility or
                             Invisiblity.
                             
After you reach upgrade 5, for each additional 10 heads you acquire you get
30 seconds of a random powerup, either Quad Damage, Invincibility or Invisiblity.

cvars: upgrade1_cost, upgrade2_cost, upgrade3_cost, upgrade4_cost,
       upgrade5_cost.

Invocation on the command line: '+set weapons_mode 3'


2.1.1.1.1.5  Fixed Weapons
--------------------------
In Fixed Weapons mode only one fire mode is available for each weapon you have. 
For example, if the server operator wishes to use the normal Q2 weapons but replace 
the hyperblaster bolts with the lightning gun they would set fixed_hb_weapon = 3 
and all other fixed weapons to 0. Ammo costs remain at default Q2 values (blaster 
costs 0, supershotgun costs 2, bfg costs 50, all others cost 1). The ammo is 
configured in Fixed Weapons mode thru the following server cvars:
               
                      fixed_bl_weapon - fixed blaster weapon
                                        0 = regular blaster
                                        1 = fireball blaster
                                        2 = laser blaster
                                        3 = berreta
                      
                      fixed_sg_weapon - fixed shotgun weapon
                                        0 = regular shotgun
                                        1 = flame burst shotgun
                                        2 = Ion Pulse shotgun

                      fixed_ssg_weapon - fixed supershotgun weapon
                                        0 = regular supershotgun
                                        1 = Incendairy supershotgun
                                        2 = Freeze supershotgun
                                        3 = Tesla supershotgun


                      fixed_mg_weapon - fixed machinegun weapon
                                        0 = regular machinegun                                      
                                        1 = fireball machinegun                                      
                                        2 = rocket machingun
                                        3 = Corkscrew machingun


                      fixed_cg_weapon - fixed chaingun weapon
                                        0 = regular chaingun                                      
                                        1 = Incendiary chaingun                                      
                                        2 = Plasma Chaingun

                      fixed_hg_weapon - fixed hand grenade weapon
                      fixed_gl_weapon - fixed grenade launcher weapon
                                        0 = regular grenades                                      
                                        1 = flame grenades
					2 = vortex grenades
                                        3 = cluster grenades
                                        4 = det pipe grenades
                                        5 = field effect grenades
                                        6 = touch grenades


                      fixed_rl_weapon - fixed rocket launcher weapon
                                        0 = regular rockets
                                        1 = flame rockets                                      
                                        2 = homing rockets                                     
                                        3 = triple rockets                                     
                                        4 = impact rockets


                      fixed_hb_weapon - fixed hyperblaster weapon                                
                                        0 = normal hyperblaster                                      
                                        1 = flame thrower
                                        2 = laser hyperblaster
                                        3 = lightning gun


                      fixed_rg_weapon - fixed railgun weapon                                
                                        0 = normal railgun
                                        1 = Meteor railgun
                                        2 = Gib Flute

                      fixed_bfg_weapon - fixed bfg weapon                                
                                        0 = normal bfg
                                        1 = AntiMatter bfg
                                        2 = Neutron Cloud


Invocation on the command line: '+set weapons_mode 4'


2.1.1.1.1.6  Low Cost Mode
--------------------------------
In Low Cost mode all different fire modes for all weapons are available for 
each  weapon and have the same cost as the normal Q2 weapons (ie. supershotgun 
costs 2 shells, freeze shells cost 2 shells). All blaster firemodes are free, 
all supershotgun fire modes cost 2 shells, all BFG fire modes cost 50 cells, 
for all other weapons the cost of all fire modes is 1.


Invocation on the command line: '+set weapons_mode 5'



2.1.1.1.2 Available Fire Modes 
------------------------------
All standard Quake II fire modes are available as the default choice. 

Napalm Fire Mode is always the second choice for all weapons. The duration of 
flames burning humans/bots is configurable by the server cvar flame_time 
(defaults to 6 seconds). 

The available fire modes for each weapon:

Weapon    Fire Mode
------    --------------------------------------------------------------
Blaster :
	  0. Normal blaster 
          1. Fireball blaster - will set inflicted on fire for 6 seconds,
             doing about 10 damage per second. If you get hit when your 
             health is 100 you will not die. A second hit, though ...
             Completely useless under water (unless you really like steam).
             From the Napalm II mod. In Cost mode this fire mode uses
             shot gun shells.
          2. Laser Blaster - shoots a green laser beam that does the same
             damage as the normal blaster, except it instantaneously hits
             the opponent (normal blaster bolts travel at 600 units per
             second). In Cost mode this fire mode uses cells.
             From Qdevels tutorial.
          3. Berreta - shoots bullets; In Cost mode this fire mode uses bullets.
             Damage inflicted by berreta shots is subject to location damage
             when location damage is turned on.

Shotgun:
	  0. Normal Shotgun
          1. Energy Burst - shoots a very powerful burst of energy at an 
             opponent that will probably set them aflame. Still does
             damage underwater, though, because the energy turns to 
	     flames only on impact. An instant hit weapon (no projectile).
             From Napalm II mod.
          2. Ion Pulse Shotgun - a green pulse of charged particles is hurled at
             the target at 650 quake units/sec (the speed of the original 
             Quake II rocket); on impact the pulse imparts it's charge upon
             the victim, reversing the polarity of their chromosomes 
             (... really!).
	     Also does some radius damage so stay away from impact points.
             The Ion Pulse is deadly at close range but you can shoot it and 
             dissipate the cloud.

SuperShotgun:          
          0. Normal SuperShotgun
          1. Incendiary shells - same damage as regular Supershotgun
             but has a 1 in 10 chance of setting the inflicted on fire
             (no, not 1 in every 10 shots, each shot has a random 10%
              chance of flaming your victim). Works well underwater,
             though no burning).
             From Napalm II mod.
          2. Freeze shells - immobilizes your foe for a configurable 
             number of seconds (cvar freeze_time, default is 4 seconds).
             Modified from the Weapons of Destruction mod. Frozen victims
             thaw when set on fire; freezing a burning victim extinguishes
             the flames.
          3. Tesla Coils - two spheres are shot at slightly diverging angles;
             Bolts of lightning continuously arc from each sphere to the other
             sphere. The spheres bounce when they hit a solid object. The spheres
             exist for 5 seconds.

Machinegun:
          0. Normal MachineGun
          1. Fireballs - produces a fast continuous stream of fireballs.
             Produces steam underwater.
             From Napalm II mod.
          2. Rockets - fires rockets at an incredible rate of speed.
             The rockets aren't as powerful as the normal rockets but
             you can inundate your foe with these puppies. Idea from 
             Weapons of Destruction mod.
          3. Corkscrew - fires a 9 round burst of red stuff in a spiral pattern.                

Chaingun:
          0. Normal Chaingun
          1. Incendiary bullets - same damage as regular chaingun bullets                            
	     but, like the incendairy super shotgun, may set your enemy
             aflame.
	     From Napalm II mod.
	  2. Plasma - shoots electrified plasma balls that usually gib
             your victim; will electro-boil your enemy if he's in
             water up to his waist or higher (and you too if your in 
             water).
	     Adapted from Ikka K's Quake (I) Plasma gun, converted the 
		 Plasma ammo model.

Grenades &
Grenade Launcher:
	  0. Normal Quake II grenades
          1. Flaming grenades - explosion plus flames
             From Napalm II mod.
          2. Vortex Grenades - when fired, after the normal grenade delay 
             time, opponents will be sucked towards the grenade for a 
             number of seconds before it explodes; damage is somewhat 
             less than a normal grenade but the vortex will slow your 
             enemy down. Will lift enemies off the ground if the vortex is
             above them, sucks jetpackers down to earth. The vortex effect
             travels through walls, floors, etc.
	     Adapted from Qdevels tutorial.
          3. Cluster grenades - a grenade explosion triggers 4 subgrenades
             that shoot up and explode on impact.
             Modified from Qdevels tutorial.
          4. Pipe bombs - drop them and run away; drop as many as you like
             and remotely detonate them all using the command detpipe (bind
             a key !). If you are killed before you detonate them they
             all detonate upon your death (sort of a self-service 21
             gun salute). Bots do not use these.
             Adapted from Inside 3d tutorial
          5. Field Effect Grenades - no explosion, but after a few seconds
             a green BFG cloud will appear and hover for about 10 seconds,
             electrifying anyone who comes in contact. Drop a few
             of these behind you while your running away to slow down
             your enemy. By the way, the area affected is NOT stopped by 
             walls; drop one on one side and anyone near the other side
             will take damage.
          6. Touch Grenades - no timer here, they explode as soon as they 
             impact any surface (hopefully, that surface is your enemy).
             Damage and radius damage are increased from the original Id
             grenades. You will be forced to throw your touch grenade if
             you pressed the fire button and you haven't already thrown
             it and 3 seconds have elapsed.
             Inspired by the touch grenades in the Classic Quake Requiem Mod.

         
Rocket Launcher:
	  0. Normal Quake II rockets - altered by the cvar pro_rocket;
             when pro_rocket is set to 1 rocket speed is increased
             to 1000 (from 650) and splash/radius damage is increased,
             making it more "Classic Quake"-ish.
             Adapted from the Pro-Rocket patch.
          1. Flaming Rockets - explosion plus flames.
             From Napalm II mod.
          2. Homing Rockets - locks on and persues your target; if your
             target evades the rocket, the rocket will attempt to
             acquire another target and persue it.
             Modified from Qdevels tutorial.
          3. Triple Rockets - as you would expect, 3 rockets are fired
             simultaneously, 2 of them flying in a spiral around the first.
             Modified from the Inside3d tutorial by Tim Mathews.
          3. Impact Rockets - very fast (1500) green glowing rockets filled with
             medical waste with virtually no radius splash damage. Almost like 
             a direct hit weapon, you must hit your target to do any damage. 
             Because of little radius damage you can use this at close range
             without danger of blowing yourself up. No explosion on impact,
             but if you're hit by one of these you'll likely disintegrate.

Hyperblaster:
          0. Normal Quake II hyperblaster.
          1. Napalm Flame Thrower (and a beauty too) shoots clouds of flames,
             quickly engulfing your victim. 
             From Napalm II mod. 
          2. Laser HyperBlaster - shoots a green laser beam that does the same
             damage as the normal blaster, except it instantaneously hits
             the opponent (normal blaster bolts travel at 600 units per
             second). 
             From Qdevels tutorial.
          3. Lightning - yeah, you know what it does. Shocks underwater
             victims (and underwater you). If your victim is on the ground
             the lightning bolt charge lifts him slightly.
             Modified from the Qdevels tutorial.


Railgun:
          0. Normal Quake II railgun. Damage inflicted by the stock id railgun 
             is subject to location damage when location damage is turned on.
          1. Meteor Storm - a flaming meteor is fired immediately flaming
             your victim if you hit him. Even if you don't, a fiery cloud of
             napalm rains down over the impact area for about 11 seconds, 
             burning everyone who come in contact with the flames. You can
             only have 2 meteor storms active at once; starting a third
             extinguishes the first.
             From Napalm II mod.
          2. Gib Flute - a thick continuous beam of sonic energy is cast at
             your enemy until you release the fire button. This does damage to
             everything in its path until it hits a wall or other solid.
             Normally randomly improvises a tune (music to die for/by), when
             you use the Quad or Invulnerablity you'll hear a recognizable
             tune. Converts slugs into sonic energy (...yeah, sure, whatever).
             Uses a configuarable amount of slugs for every 1/2 second of 
             music.

BFG10K:
          0. Normal Quake II BFG10k.
          1. Anti-Matter Cannon - a huge invisible energy blast 
             instantaneously sears any enemies it hits.
             From Napalm II mod.
          2. Neutron Cloud - slow moving black cloud that homes in and
             follows it's target, gibbing all life in its path. Will seek
             additional targets if it's original target dies or evades it.
             De-activates when the core (grenade size) of the 
             cloud hits a wall or other solid body. If the core of the 
             cloud passes through an open door or window it will continue on
             trying to acquire targets.


2.1.1.1.3 Max Ammo and Ammo at Startup
--------------------------------------
The maximum ammo of each ammo type a player can have in his/her/it's inventory
are is controlled by the following server cvars, shown with their default
values:

   max_bullets		200
   max_shells		100
   max grenades		100
   max_rockets		100
   max_cells		200
   max_slugs		 50

The amount of ammo for each weapon in a player's inventory when he spawns and
respawns can be set by the server operator using the following cvars, which
all default to zero:

   start_shells
   start_bullets
   start_grenades
   start_rockets
   start_cells
   start_slugs 

Note these are 'latched' cvars which means that the change in value of the cvar 
will not occur until the level changes.


2.1.1.1.4 Misc. Ammo Options    
----------------------------
Set these server cvars to 1 to enable, 0 to disable:

 laser_blasters - substitutes an instant hit green laser beam for the bolts
              from both the blaster and the hyperblaster. Only functions when 
              the cvar weapons_mode is set to 0 (normal Q2 firemodes).

  bouncing_blaster_bolts - controls whether blaster and hyperblaster
                 bolts bounce off walls or not.

  no_napalm - Only works when weapons_mode = 2 (Cost mode), no napalm
              fire mode is available for any weapon , but all other fire 
              modes are available.

Set the following server cvars to a number greater than 0:

  freeze_time - controls the number of seconds a player is frozen when hit
                by a freeze super shotgun blast; the default is 5 seconds.
                Unlike WOD, the time a player is frozen from multiple hits
                from the freeze supershotgun is *not* cumulative, ie. if 
                freeze_time is 5 seconds and a player is hit 3 times by the
                freeze supershotgun he is *not* frozen for 15 seconds; instead
                he will remain frozen for 5 seconds after the last time he
                was hit.
                
  flame_time - controls the number of seconds a player stays on fire when 
               ignited; the default is 6 seconds.


2.1.1.2 Weapons Control
-----------------------

2.1.1.2.1 Configuring Start Weapons
-----------------------------------
The server operator can configure the weapon each player starts with upon
spawning/respawning; all these cvars default to zero except start_bl which 
defaults to 1, and all are 'latched' cvars:

   start_bl - players start with the blaster (***)
   start_sg - players start with the shotgun
   start_ssg - players start with the super shotgun
   start_mg - players start with the machinegun
   start_cg - players start with the chaingun
   start_gl - players start with the grenade launcher
   start_rl - players start with the rocket launcher
   start_hb - players start with the hyperblaster
   start_rg - players start with the railgun   
   start_bfg - players start with the bfg

Of course the server operator should give the players some starting ammo if they
give the players any starting weapon other than the blaster.

  (***) NOTE: if you set start_bl to 0 you should also ban the blaster; see 
               2.1.1.2.2 .

2.1.1.2.2 Banning Weapons
-------------------------
The server operator can ban the use of any weapon by configuring the following
cvars to 1 to enable or 0 to disable; all these cvars default to zero and 
all are 'latched' cvars.


   no_bl - bans the blaster
   no_sg - bans the shotgun
   no_ssg - bans the super shotgun
   no_mg - bans the machinegun
   no_cg - bans the chaingun
   no_gl - bans the grenade launcher
   no_rl - bans the rocket launcher
   no_hb - bans the hyperblaster
   no_rg - bans the railgun   
   no_bfg - bans the bfg
   no_hg - bans hand grenades


2.1.1.2.3 Configuring 'Insta-Gib' servers
------------------------------------------
'Insta-Gib' generally means you spawn/respawn into a level with weapons and 
ammo already in your inventory and don't have to run around looking for stuff 
to start fragging away. The server operator can configure an 'Insta-Gib' server 
by enabling some start weapons and giving the player some ammo. I recommend you 
set the 'bits' in the iD cvar dmflags that enable 'Infinite Ammo' (you add 8192 
to whatever value you have dmflags set to). You can configure your 'Insta-Gib' 
server further by setting the weapons_mode cvar to whatever value you like so the 
extra fire modes for each weapon are available or not available, as well as banning 
weapons as you like.

   NOTE: If you set some of the start weapon cvars to enabled and give the 
players some starting ammo for each start weapon and set the 'Infinite Ammo' 
bits of the dmflags cvar then *no* weapons or ammo that the players start 
with will spawn onto the map; banning all other weapons will result in 
*no* weapons or ammo spawning on the level. I have yet to code a workaround so 
cells spawn onto the map when power armor is on the map ...

A sample configuration for a 'rail-only' 'Insta-Gib' server:

   dmflags 8192         //  (or any dmflags with 8192 enabled for Infinite
                             Ammo)

   start_slugs 50       // give players some slugs at startup - when Infinite
                        // ammo enabled they'll never deplete their inventory.

   start_rg 1           // players start with the railgun, nothing else

   start_bl 0
   start_sg 0   
   start_ssg 0   
   start_mg 0   
   start_cg 0
   start_gl 0
   start_rl 0   
   start_hb 0   
   start_bfg 0

   no_rg 0              // the railgun is *not* banned, all other weapons are;

   no_bl 1
   no_sg 1              // no weapons or ammo will spawn on the level.
   no_ssg 1   
   no_mg 1   
   no_cg 1   
   no_gl 1   
   no_rl 1   
   no_hb 1
   no_bfg 1   
   no_hg 1

   weapons_mode 0          // only the normal Q2 railgun fire mode used


Be aware the dmflags option for 'Infinite Ammo' (8192) *only* pertains to ammo
for weapons; calling an airstrike, enabling a Monster Sidekick or using power
armor will deplete the appropriate ammo from your inventory.


2.1.1.2.4 Misc. Weapon Options    
------------------------------
	
2.1.1.2.4.1 CTF Grapple As a Weapon    
-----------------------------------
sticky_grapple

The CTF grapple has been sharpened to inflict more damage when it hits a damagable
entity, the damage has been raised from 1 to 10. This mod allows the CTF grapple 
to stick to another player as opposed to the normal Q2 behavior which does not 
allow the grapple to stick to a player. The cvar sticky_grapple controls 
whether the CTF grapple sticks to players or not, set to 0 to disable sticking, 
the default value is 1. Note that all players have the grapple in their 
inventories at all times, even when the game is not Capture The Flag.

Default Value: 1

2.1.1.3 Third Party Killers
---------------------------
Third Party Killers are entities that do the killing for you and you get credit
for the frag. The availablity of all Third Party Killers is controlled by 
individual cvars, set to 1 to enable, 0 to disable.


2.1.1.3.1 AirStrikes
--------------------
air_strikes
air_strike_cost
air_strike_delay (0.14)

If you've got enough rockets (cost is configurable), you can send a Strogg Viper 
over your enemy and it will rain rockets on them. You must be looking at an area 
with open skies above it when issuing an airstrike command. The airstrike will
start directly above the spot you were looking at when you issued the airstrike
command and will travel towards the position you initiated the airstrike from 
after a delay specified by the server cvar air_strike_delay.

The cost of an airstrike (in rockets) is controlled by the server cvar 
air_strike_cost, which defaults to 60. 

The delay time in seconds between the initiation of an airstrike and it's launch 
is controlled by the server cvar air_strike_delay, which defaults to 5; the minimum
delay possible is 1 second, values less than 1 default to 1 second delay. 

Invoking the airstrike command after an airstrike is been initiated and before
the airstrike has started cancels the airstrike, returning the rockets used to
"buy" an airstrike to your inventory.

Getting fragged before your air strike begins cancels the air strike.

The server cvar air_strikes must be set to 1 to enable air strikes. .

Default Values: air_strikes 1, air_strike_cost 60, air_strike_delay 5
Console command: airstrike (bind a key).

	
2.1.1.3.2 Voodoo Homing Heads
-----------------------------
cvar start_voodoo

If you have the Voodoo tech or the cvar start_voodoo is set to 1 when a player
or dead body is gibbed and a head is tossed from it's body you can it pick up 
by walking over it. You can toss a re-animated head in the air with the tosshead 
command (while you can pick up as many heads as you like, you can ONLY toss the 
last one you picked up; once tossed you must subsequently pick up another one 
before you can toss another head). The head will rise into the air and hover, 
waiting for another player to approach. When another player gets close enough 
the head will chase the player and shoot lightning bolts at them, exploding 
when it hits them; if the player  dies from the lightning bolts or explosion 
the player who tossed the head gets credit for the frag. Tossed heads get 
confused if they bump into walls or lose sight of it's enemy and will careen 
around wildly. Occasionally, a tossed head will turn rogue (signified by a 
'daffy' laugh) and possibly target the head's owner. A tossed head is 
re-animated for about 1 minute then explodes. To toss gibbed heads you must 
have the Voodoo tech in your inventory or the server cvar start_voodoo must 
be set to 1, which disables the spawning of the Voodoo tech.

Default Value: 0
Console command: tosshead


2.1.1.3.3 Monster Sidekicks       
---------------------------
cvar monster_mode 1

If the server cvar monster_mode is set to 1 players can have a monster sidekick
fight for them at the cost of some ammo. The monster will spawn about 150 units
in front of the player and to his/her left or right; if their isn't room to 
spawn a monster at these locations an error message is issued and the monster 
won't spawn. The monster will fight against all players except it's creator and 
it's creator gets all the frags; monsters won't intentionally target their 
creator or other monsters. Sidekick monsters fight until they are fragged or 
their creator is fragged. You can have monster sidekicks when playing CTF;
monsters will glow the color of their creator's team and will only attack 
players of their creator's enemy team, bots won't attack the monster 
sidekicks of players on their own team.

See 2.2.5 Client Monster Sidekick Commands for more details on controlling 
monster sidekicks.

Default Value: 0

2.1.1.3.3.1 Controlling Monster Sidekick Costs
----------------------------------------------
The amount of ammo required to "buy" a  monster sidekick can be controlled
by the following server cvars:

	soldier_cost	qty of shells, default 75

	infantry cost	qty of bullets, default 150

	gunner_cost	qty of grenades, default 75

	chick_cost	qty of rockets, default 75

	tank_cost	qty of slugs, default 40

	gladiator_cost	qty of cells, default 150

Note you can effectively ban a particular monster sidekick from being used if
you set it's cost prohibitably high, ie. 'tank_cost 9999' bans the tank 
because no one is able to get 9999 slugs without a lot of cheating.

2.1.2 Server Gameplay Options
-----------------------
Various options that affect gameplay are set by server cvars. Change their 
values to suit you taste.

2.1.2.1  Respawn Protection
---------------------------
cvar respawn_safety

The cvar respawn_safety allows the server operator to set the number of 
seconds after a player spawns/respawns that he/she is invulnerable to damage; 
the player cannot shoot his weapon, off-hand hook or CTF grapple during this 
time. Set to zero to disable. 

Default Value: 3.0

2.1.2.2  Dropping Backpacks
---------------------------
cvar drop_backpacks

Setting the cvar drop_backpacks to 1 causes fragged players to drop a backpack 
full of their entire inventory of weapons and ammo in addition to dropping 
their current weapon; powerups, armor, the blaster, off-hand hook and CTF 
grapple are not dropped in the backpack. Setting drop_backpacks to 0 disables 
the dropping of backpacks. 

Default Value: 1 (on)

2.1.2.3  Ejecting Shotgun Shells
--------------------------------
cvar eject_shells

Spent shotgun shells are ejected from the shotgun and supershotgun when the 
cvar eject_shells is set to a value greater than zero; the value you set 
eject_shells to configures the number of seconds the spent shells will remain 
in the world until they disappear. Set eject_shells to zero to turn off ejecting 
spent shotgun shells. 

Default value: 10.0

2.1.2.4  Ejecting Bullet Casings
--------------------------------
cvar eject_brass

Spent bullet casings are ejected from the machinegun and chaingun when the 
cvar eject_brass is set to a value greater than zero; the value you set 
eject_brass to configures the number of seconds the spent bullet casings 
will remain in the world untiil they disappear. Set eject_brass to zero to 
turn off ejecting spent bullet casings. Bullet casings are not ejected when 
the machinegun or chaingun fires projectile ordinance.

Default value: 6

  NOTE: Ejecting spent bullet casings will cause lag when many players are 
playing on a non-dedicated server. Many clients emptying their chainguns at the 
same time with eject_brass set to a value greater than 0 will lag a slow server.


2.1.2.5  Feed The Mutant
------------------------
cvar feed_the_mutant

When the cvar feed_the_mutant is set to a value greater than zero, bringing 
gibbed heads to a Mutant item (not a monster !) will give you bonus frags. 
The bonus frags accumulate "factorally"; 1 head = 1 frag, 2 heads = (1 + 2) = 3 
frags, 3 heads = (1 + 2 + 3) = 6 frags, etc. You must use the server command 
spawnitem (see the instructions below at 2.1.3.3.1) to spawn a Mutant item
or multiple Mutant items (the item spawned is an item_mutant, which is an 
animated mutant which doesn't attack anything). Setting feed_the_mutant to 1 
enables head bonus scoring in addition to the scoring for frags and CTF (yes, 
you can combine the game modes); setting feed_the_mutant to 2 eliminates frags 
from scoring, you can only score points by bringing heads to a Mutant item
(CTF scoring is still in effect, if applicable). Mutant items are saved to a disk 
file when the server command saveextras is run (see 2.1.3.3.2.1); saved Mutant 
items spawn on the map the next time the map is run on the server if the 
server cvar use_extra_item_files is set to 1 (see 2.1.3.3.2) and feed_the_mutant
is set greater than 0.

Default value: 0


2.1.2.6  Bots vs. Humans
------------------------
cvar bots_vs_humans

Think you're pretty tough ? Set the cvar bots_vs_humans to 1 and all bots will 
ignore other bots and choose only human clients as enemies. Bots will not 
intentionally frag each other but may fire upon each other accidently when 
targeting a human. This is a free-for-all mode, there is no teamplay involved.

Default Value: 0

2.1.2.7  Locational Damage
--------------------------
location_damage

Locational Damage means the damage a player incurs is increased or decreased 
depending on the accuracy of the shot. For example, if the player is hit in the 
arms or legs, the damage is scaled down; if the player is hit in the chest or 
head the damage is scaled up. When location damage is turned on the hud 
indicates what location your shot hit and the target player/bot you hit when 
using a location damage weapon. Location Damage is only implemented for 
weapons/fire modes that don't blow you up or bore a hole thru you; specifically, 
the following weapons/fire modes are affected when location_damage is set to 1:

	blaster - only the berreta does location damage

	railgun - only the normal railgun does location_damage

All other weapon fire modes use regular damage scoring.		

Scaling of Damage:

	arm or leg shot - damage scaled DOWN to 66% of original damage
	(2/3 the damage)

	stomach shot  - damage scaled DOWN to 80% of original damage
	(4/5 the damage)

	chest shot - damage scaled UP to 120% of original damage
	(1/5 extra damage)

	head shot - scaled up to 250% of original damage (can you say "gib" ?)
	(1.5x extra damage)


Default Value: 0.

2.1.2.7.1  Locational Damage, Head Shots Only
---------------------------------------------
When the location_damage cvar is set greater than 1, all locational damage to
any portion of the body except the head is scaled DOWN to 0.001% of original
damage (1/1000 the damage) and head shot damage scaled UP to 250% of original
damage (1.5x extra damage), rendering any shot other than a head shot 
ineffective.

2.1.2.8 Announce Headshots
--------------------------
cvar announce_headshots

When the server cvar announce_headshots is set to 1 and location_damage is 
turned on whenever a head shot occurs all players are notified in a message
of the shooter and the victim.

Default Value: 0.


2.1.2.9  Turning Footsteps off/on
---------------------------------
cvar no_footsteps

The server operator can turn off the sounds made by all player's footsteps by 
setting the cvar no_footsteps to 1.

Default value: 0

2.1.2.10  Haste For All Players
------------------------------
cvar start_haste

All players can be given the effect of the Haste tech (weapon fire rate doubled) 
when the server operator sets the cvar start_haste to 1; this is a 'latched' 
cvar and won't take effect until the level changes. Players all have their
weapon fire rate doubled automatically. When start_haste is set to 1 the Haste 
tech does not spawn.

Default value: 0

2.1.2.11 Vampire For All Players
--------------------------------
cvar start_vampire

All players can be given the effect of the Vampire tech (damage dealt increases
health) when the server operator sets the cvar start_vampire to 1; this is a 
'latched' cvar and won't take effect until the level changes. When start_vampire 
is set to 1 the Vampire tech does not spawn. See 2.1.3.4 for info on the Vampire
tech.

Default value: 0

2.1.2.12 Max Health and Start Health
------------------------------------
cvar max_health 
cvar start_health

All Players' maximum and start health points can be altered from the standard 
100 points when the server operator sets the cvars max_health and start_health 
to some number greater than 0. These are 'latched' cvars and won't take 
effect until the level changes.

Default values: 100

2.1.2.13 Start Armor
--------------------
cvar start_armor

Players can be given the appropriate armor at spawn/respawn when the server 
op sets the cvar start_armor to a value of "jacket", "combat" or "body". This 
is a 'latched' cvar and won't take effect until the level changes.

Default value: 0

2.1.2.14 No Hook and/or No Grapple
----------------------------------
The off-hand hook and the ctf grapple is banned when the appropriate server cvar,
no_hook or no_grapple, is set to 1.

Default Value(s): 0

2.1.2.15 Default KillerCam
-----------------------------
cvar default_killercam_on

Clients using the chase cam can execute the "killercam" command (see 2.2.2.2.3)
to toggle whether or not the cam switchs to chase the killer when the player 
they are chasing gets fragged. Setting the server cvar default_killercam_on to 
1 causes "killercam" to be initially enabled when the when a client activates 
a chase cam; setting it to zero causes "killercam" to be initially disabled 
when the cam is activated. 

Default value: 1

2.1.2.16  Standard iD Options
----------------------------
Some important iD standard server cvars you should know:

   dmflags
     Sets a multitude of options. You add the numbers of the options you want enabled
     and set dmflags equal to the sum. Here are the options and their numbers, I assume
     you know what they mean:

 	DF_NO_HEALTH		1	
	DF_NO_ITEMS		2	
	DF_WEAPONS_STAY		4	
	DF_NO_FALLING		8
	DF_INSTANT_ITEMS	16
	DF_SAME_LEVEL		32
	DF_SKINTEAMS		64
	DF_MODELTEAMS		128
	DF_NO_FRIENDLY_FIRE	256
	DF_SPAWN_FARTHEST	512
	DF_FORCE_RESPAWN	1024
	DF_NO_ARMOR		2048
	DF_ALLOW_EXIT		4096
	DF_INFINITE_AMMO	8192
	DF_QUAD_DROP		16384
	DF_FIXED_FOV		32768
	DF_CTF_FORCEJOIN	131072
	DF_ARMOR_PROTECT	262144
	DF_CTF_NO_TECH       	524288

       To enable weapons stay, instant items and disable CTF techs (and lOkO 
          techs too):

		4 + 16 + 524288 = 524306
        
        For CTF, to enable spawn farthest and allow damage from teammates:

		512 + 256 = 768

        The default lOkO dmflags: 16 (instant items enabled)
   
   deathmatch
      Always set this to 1; single player against monsters is not supported.

   ctf
     Setting ctf to 1 sets the game to Capture The Flag; in the absense of flags 
     on the map teamplay is enabled.

     Note: the hud will go wacky when you change the value of the ctf cvar in the 
           middle of a game; you should type "disconnect", change the ctf cvar 
           and re-start the game with the map command.

   timelimit
      sets the duration of the game in minutes .ie "timelimit 20" ends the game 
      after 20 minutes has elapsed; "timelimit 0" eliminates the time limit on 
      the game.

   fraglimit
      the game ends when any player's score is equal to or greater than the value
      of the fraglimit cvar .ie "fraglimit 20" ends the game when any player score
      reaches 20. "fraglimit 0" removes any frag limit.
  
   capturelimit
      the game ends when one team has captured their enemy's flag the number of 
      times specified by the capturelimit cvar .ie "capturelimit 5" ends the game 
      when either team captures their enemy's flag 5 times. "capturelimit 0" 
      removes any capture limit. Note that the fraglimit cvar must be set to a
      value greater than 0 for capturelimit to be enforced.

   maxclients
      the number of clients (bots and humans) the server will accept connections
      from; this must be set higher than the number of bots/humans you wish to
      play against.



Some important iD commands you should know:

    map <mapname>
	starts a new game and changes the map to <mapname> .ie "map q2ctf3"

    disconnect
	when run from the server it shuts the server down, leaving you at a
	console prompt. Use the map command to restart the server.

    dir
	functions like the DOS dir command.

2.1.2.17 Playing Tag
--------------------
cvar game_tag

The Tag tech uses the model for the Invulnerability powerup with a white glow.
The player who picks up the Tag tech becomes "it" and gets 666 health, all 
weapons, all ammo limits raised by 50 units and a full inventory of each
ammo. Players who are "it" get 5 frag points for each frag. Fragging the player
who is "it" gets you 20 frag points. Suiciding when "it" costs you 20 frag 
points. To play a game of Tag you must set the server cvar game_tag to 1 or
2 before the level loads; when set to 1 no other techs spawn, setting to 2
enables all unbanned techs to spawn. Players don't drop backpacks when playing
Tag even when the drop_backpacks server cvar is set to 1.

Default Value: 0

2.1.2.18 Action Quake2 Doors
----------------------------
cvar aq2_doors

The behavior of doors can be altered to function like doors do in the Action 
Quake2 mod; when the server cvar aq2_doors is set to 1 clients must issue the 
command "opendoor" before the door opens. Note that bots won't know to issue 
the opendoor commands unless a DOOR_OPEN node is placed for the door; currently
only maps designed specifically for Action Quake2 have DOOR_OPEN nodes placed
and that is not likely to change. Bind a key, ie. bind o 'opendoor'

Default Value: 0

2.1.2.19 Deathmatch Monsters
----------------------------
cvar monster_mode


The availability of monsters in deathmatch is controlled by the monster_mode
server cvar. Here are the possible values and their meanings:

	monster_mode 0		No deathmatch monsters available (the default)

	monster_mode 1		monster sidekicks are available for players
				(see 2.1.1.3.3).

	monster_mode 2		server spawned monsters fight for a team; they
				can be killed but respawn in 30 seconds
				(see 2.1.2.19.2).

	monster_mode 3		server spawned monsters can be killed but
				respawn in 20 seconds; players fragged by
				a server spawned monster lose a frag (see 
                                2.1.2.19.1).

	monster_mode 4		server spawned monsters react to damage but
				can't be killed; players fragged by a server 
				spawned monster lose a frag (see 2.1.2.19.1).

*******************************************************************************
It is strongly recommended to set the server cvar no_target_speaker to 1 when 
deathmatch monsters are being used to prevent "sound index overflow" when the 
maximum amount of sounds Quake II can load is exceeded (see 2.1.3.8).
*******************************************************************************

Note that each different monster model loaded comes with it's own unique sounds;
the sidekick monster models all have a few sounds eliminated from use for
deathmatch to reduce the number of sounds in the game but most other monsters
will use there full compliment of sounds. Using many different monster models 
will overflow the sound index. Deathmatch monsters only attack players and bots, 
never other monsters. If the skill server cvar is set to 3 monsters don't run 
any pain animations.

Default Value: 0

2.1.2.19.1 Server Spawned Monsters
----------------------------------
When the server cvar monster_mode is set to 3 or 4 the server operator can
spawn deathmatch monsters using the spawnitem server command; see 2.1.3.3.1
and 2.1.3.3.2. Note that monsters native to a single player map do NOT spawn
when the map is loaded. When monster_mode is set to 3 monsters respawn where
they were killed. When monster_mode is set to 4 monsters react to damage but 
cannot be killed. If a server spawned monster touchs a trigger_hurt it will
teleport to it's initial spawn location.
Players fragged by a server spawned monster lose a frag. Deathmatch monsters 
cannot be gibbed. 


The classnames of the server spawnable monsters:

	monster_soldier
	monster_infantry
	monster_mutant
	monster_gladiator
	monster_gunner
	monster_parasite
	monster_makron
	monster_chick
	monster_tank
	monster_supertank
	monster_flipper
	monster_flyer
	monster_floater
	monster_hover
	monster_boss2
	monster_jorg


You can save the server spawned monsters you have added to a map to a disk file
using the server command savemonsters (see 2.1.2.19.1.1); the next time the map
is loaded and monster_mode is set to 3 or 4 any monsters saved to a disk file
are spawned onto the map. You can also manually create a text file with a text 
editor specifying the classnames and positions of server spawned monsters, see
2.1.2.19.1.3.

All the Fragtown maps have server spawned monsters defined in monster files 
that will automatically load when use_monster_files is set greater than 0 
and monster_mode is set to 3 or 4.

2.1.2.19.1.1 The savemonsters server command
-----------------------------------------------
The server operator can save the added server monsters to a disk file using
the sv savemonsters command. Saved monsters are automatically loaded
onto the map at startup when the server cvar use_monster_file is set to 1
and the server cvar monster_mode is set to 2. Monsters are saved to a file 
where the basename is the map name and the extension is ".mon", ie "q2dm1.mon";
the file is saved in the "items" directory off the game directory.
Team monsters invoked with the server command ctfmonster are *not* saved to 
the monster file created by the savemonsters command, see 2.1.2.19.2.2 for the 
savectfmonsters server command.


2.1.2.19.1.2 The use_monster_file server cvar
-------------------------------------------------
cvar cvar use_monster_file 

When the server cvar use_monster_file is set to 1 any server monsters saved
to disk for a map will respawn when the map is loaded. This is a latched' cvar 
and any change to it won't take effect until the level changes. 
A number of monster files are included in the zip archive.

Default value: 1

2.1.2.19.1.3 Using a Text Editor to Create/Edit a Monster File
------------------------------------------------------------------
You can create or edit monster files off line with a text editor. The 
file should be saved in the "items" directory off the game directory.
The basename is the map name and the extension is ".mon", ie. the file
name for map q2dm1 is q2dm1.mon. Lines beginning with a '#' are comments.
The format for each line in the file is:

	x y z classname

where x y and z are the spawn coordinates for the monster and classname is
a monster classname as specified in 2.1.2.19.1.

Here is the contents of an example monster file that spawns a jorg, a tank and
a boss2 on map q2dm1:

### monster file: .\loko\items\q2dm1.mon 
1189 680 600 monster_jorg
857 1404 876 monster_tank
93 664 920 monster_boss2



2.1.2.19.2 Capture the Flag Team Monsters
-----------------------------------------
When the server cvar monster_mode is set to 2 the server operator can
spawn monsters that work on behalf of each of the capture the flag/teamplay
teams. CTF monsters can be killed; they respawn at their original spawn 
position after 30 seconds. If a server spawned monster touchs a trigger_hurt 
it will teleport to it's initial spawn location. Again, deathmatch monsters
cannot be gibbed.


2.1.2.19.2.1 The ctfmonster server command
-------------------------------------------
The server operator can add the team monsters "on the fly" in the console
using the sv ctfmonster command. The syntax:
	
   sv ctfmonster classname x y z team

   where classname is a monster classname as specified in 2.1.2.19.1,
   x y and z are the integer spawn coordinates for the monster and team is red
   or blue. The viewpos command will show the coordinates you are at,
   see 2.2.6.1.1

Example:

   sv ctfmonster monster_tank 200 -332 60 red

spawns a tank monster for the red team at the specified coordinates.

2.1.2.19.2.2 The savectfmonsters server command
-----------------------------------------------
The server operator can save the added ctf monsters to a disk file using
the sv savectfmonsters command. Saved ctf monsters are automatically loaded
onto the map at startup when the server cvar use_ctf_monster_file is set to 1,
the server cvar ctf is set to 1 and the server cvar monster_mode is set to 2. 
CTF monsters are saved to a file where the basename is the map name and the 
extension is ".tmo", ie "q2ctf5.tmo"; the file is saved in the "items" directory 
off the game directory.


2.1.2.19.2.3 The use_ctf_monster_file server cvar
-------------------------------------------------
cvar cvar use_ctf_monster_file 

When the server cvar use_ctf_monster_file is set to 1 any ctf monsters saved
to disk will respawn when the map is loaded. This is a latched' cvar and any
change to it won't take effect until the level changes. 
A number of team monster files are included in the zip archive.

Default value: 1

2.1.2.19.2.4 Using a Text Editor to Create/Edit a CTF Monster File
------------------------------------------------------------------
You can create or edit CTF monster files off line with a text editor. The 
file should be saved in the "items" directory off the game directory.
The basename is the map name and the extension is ".tmo", ie. the file
name for map q2ctf2 is q2ctf2.tmo. Lines beginning with a '#' are comments.
The format for each line in the file is:

	x y z classname team

where x y and z are the integer spawn coordinates for the monster, classname is
a monster classname as specified in 2.1.2.19.1 and team is "red" or "blue".

Here is the contents of an example CTF monster file that spawns a mutant
and a chick for each team:

### team monster file: .\loko\items\q2ctf2.tmo 
-2019 1294 250 monster_mutant blue
-2661 1569 540 monster_chick blue
2188 -896 540 monster_chick red
1582 -770 230 monster_mutant red


2.1.2.19.3 The removemonsters server command
--------------------------------------------
The server operator can remove all server spawned monsters from a map with the 
server command removemonsters, ie. sv removemonsters.


2.1.2.19.4 The monster_kill_bonus server cvar
---------------------------------------------
The server operator can set the scoring bonus given to a player/bot when he
kills a server monster with the monster_kill_bonus server cvar. The value of the 
cvar is added to a player's score. The scoring only applies when monster_mode
is set to 2 (ctf team monsters) or 3 (mortal monsters) and not monster sidekicks.

default value: 2


2.1.3  Misc. Server Options
---------------------------

2.1.3.1  OpenGL Fog Options
---------------------------
Fog can be displayed on levels when an OpenGL 1.1 compliant video card is present. 
Fog is a *server* option, if the client's machine in incapable of running fog 
due to hardware/software deficiencies then obviously fog won't be rendered on 
the client's display. Fog is controlled by a series of cvars; if the cvar values 
are changed it is necessary to run the server command "resetfog" before the 
displayed fog is affected by the value of the cvars (ie. sv resetfog).


   ***NOTE: Voodoo Graphics cards that use the Voodoo minigl installation
      (like the Voodoo 2) can show fog, but you *must* do the following
      (you may want to backup any video dlls in your Quake2 directory before
       you start):

         a. Download the current Voodoo minigl drivers for your card.
         b. Install the CLASSIC QUAKE (quake 1 !!!) drivers either in
            your quake 1 directory or a dummy directory you set up.
         c. Copy the opengl.dll file from the quake 1 directory into your 
            quake2 directory (NOT the mod directory !!) ie. c:\quake2.
         d. Start a SINGLE player quake2 game, go to the video options and
            choose the default OpenGL drivers NOT the voodoo drivers !).
         e. Close Quake2 and start your mod, go to the video options and
            choose the default OpenGL drivers (NOT the voodoo drivers!).
         
      I've heard you can alternately install the GLIDE or MESA OpenGL drivers
      for Voodoo Graphics cards but I've never tested this. 

Fog is a feature mainly for use by a player playing against bots on a 
non-dedicated server on his/her own machine. If the server is on a lan
then of course each machine connecting to the server must be running using
OpenGl video drivers in order to see fog; since the server doesn't know
if a client's hardware/software is configured to enable visible OpenGL fog,
players playing without fog on a server running with fog enabled have an
obvious advantage. I've learned from experiments on my own home lan that
a properly configured client will display fog when connected to a server
with fog if fog is enabled before a map is loaded; fog will disappear from 
client machines whenever the resetfog command is run on the server.

2.1.3.1.1  Fog Options Cvars and Commands
-----------------------------------------
The following server cvars control the display of fog:

      show_fog - set to 1 to display fog, 0 for no displayed fog.

      fog_type - sets the way the distances for fog clipping are
	    calculated; the possible choices are:
			
			0	linear (the default)
			1	exponential
			2	exponential2
		

      fog_density - sets the fog density when fog_type is not 0 (linear);
	    the value is a floating point number (decimal) between 0 and 1.

      fog_farclip - when fog_type is 0 (linear) sets the distance that can 
		be seen before fog completely obscures the view. 
			Minimum value : 0 , Maximum Value : 8192.

      fog_nearclip - when fog_type is 0 (linear) sets the distance away from 
            a player fog begins to be rendered. 
			Minimum value : 0 , Maximum Value : 8192.

      fog_red - sets the amount of red shown in the fog; value is a
          floating point number (decimal) between 0 and 1.

      fog_green - sets the amount of green shown in the fog; value is a
		floating point number (decimal) between 0 and 1.

      fog_blue - sets the amount of blue shown in the fog; value is a 
          floating point number (decimal) between 0 and 1.


The color of the displayed fog depends on the values of cvars fog_red, fog_blue 
and fog_green. If you want to display a reddish fog set the fog_red cvar's value 
higher than the value of fog_green and fog_blue. For a dark grey fog set fog_red, 
fog_blue and fog_green to 0.2; for a brighter, whiter fog set all three to 0.75. 

Again, the fog displayed will not reflect the value of any changed cvar until 
the "sv resetfog" server command is run.

The client command fogdistance tells you the visibility distance thru the 
fog and places a green sphere directly in front of you at a distance of the 
limit of visibility.

2.1.3.1.2  Fog Options File
---------------------------
cvar use_fog_file

If you want to configure your server to always display fog a certain way on a 
certain level you can specify the fog settings for the level in a "fog" file 
which resides in the "fog" directory off the "game" directory (the directory 
where the mod's dll resides). Each level get it's own fog file named like:

    <map>.fog

    ie. q2dm1.fog

Specify the fog cvars described in 2.1.3.1.1 and the desired values in the file, 
one to a line. Do *not* use the "set" keyword !!

Here's the contents of a sample map specific fog file:

## deepfrz.fog - shows a bright white fog
fog_red 0.8
fog_green 0.8
fog_blue 0.82
fog_density 0.0014
fog_type 2
show_fog 1

The server cvar use_fog_file controls the use of fog files, setting to 1 enables
the use of fog files, setting to 0 disables the loading of fog parameters. 

Default value: 1.

2.1.3.1.3  Default Fog Options File
-----------------------------------
If no map specific fog options file exists for the map loaded then the game
dll searches for a file named "defaultfog.fog" in the "fog" directory off the 
"game" directory (the directory where the mod's dll resides). Specify the default 
fog settings desired for any map that does not have a fog file for it in 
defaultfog.fog in the same manner as specified in 2.1.3.1.2. 

Some sample contents for the defaultfog.fog file:

## defaultfog.fog
## show a dark fog ...
fog_red 0.15
fog_blue 0.15
fog_green 0.15
fog_farclip 1100
fog_nearclip 5
fog_type 0
show_fog 1

Another version:

## defaultfog.fog
## default to showing NO fog...
show_fog 0

Note the use of the default fog file is controlled by the server cvar 
use_fog_file as explained in 2.1.3.1.2 .


2.1.3.2  Map Rotation
---------------------
This mod supports the standard iD map rotation as specified by the iD cvar 
sv_maplist (in the future I may implement a more robust map rotation with
random map switching and voting). You must have a frag limit, time limit or
capture limit set for map rotation to function. You specify the map rotation 
as a series of mapnames seperated by commas or white space (blanks). 
Two examples:

   set sv_maplist q2dm1 q2dm2 q2dm3 q2dm4 q2dm5 q2dm6 q2dm7

   set sv_maplist broken1,broken2,broken3,fixed1

In order for map rotation to work you must be running one of the maps specified 
in the list of maps; if you run a map not in the list map rotation will not 
occur. Another example:

  In your autoexec.cfg file put the following lines: 

   set timelimit 20
   set fraglimit 60
   set sv_maplist q2dm1 q2dm2 q2dm3 q2dm4 q2dm5 q2dm6 q2dm7

  Now start the server with '+map q2dm6' on the command line; the server will 
  start with q2dm6 as the level, when the timelimit or fraglimit is reached the 
  next map the server will run q2dm7, then q2dm1, etc.


2.1.3.3  Adding Items/Monsters to Maps
--------------------------------------
The server operator can add extra weapons, ammo, powerups, health, CTF flags, 
spawn points, armor to any level without editing the bsp file for the level. 
The commands that add extra items to levels can be entered at the console after 
the level is loaded or specified in a level-specific file that is loaded each 
time the level is run. The spawned item will act like any map item of that type 
ie. you can pick it up and it will respawn (except for the Mutant item). All items 
are spawned using the iD function droptofloor(), (player spawn points, 
info_player_deathmatch and info_player_teamX are automatically lowered to the 
floor too) so the z coordinate should be at least 50 units above the floor. The 
following list contains all valid item classnames you may spawn in the level 
(you may *not* spawn extra ctf techs, grappling hooks, blasters ...):


   item_health               weapon_shotgun
   item_health_small         weapon_supershotgun
   item_health_medium        weapon_machinegun
   item_health_large         weapon_chaingun
   item_health_mega          weapon_grenadelauncher
   item_adrenaline           weapon_rocketlauncher
   item_bandolier            weapon_hyperblaster
   item_power_shield         weapon_railgun
   item_power_screen         weapon_bfg10k
   item_armor_jacket         ammo_shells
   item_armor_body           ammo_bullets
   item_armor_combat         ammo_grenades
   item_armor_shard          ammo_rockets
   item_pack                 ammo_cells
   item_ancient_head         ammo_slugs
   item_flag_team1 (red flag)
   item_flag_team2 (blue flag)
   item_quad
   item_invulnerability
   item_silencer
   item_breather
   item_enviro
   item_invisible **(ring of shadows)
   item_mutant ** (mutant to feed heads to)
   info_player_deathmatch (deathmatch spawn point)
   info_player_team1 (ctf red team spawn point)
   info_player_team2 (ctf blue team spawn point)
   ** = lOkO items

The maximum number of extra items you can add to a map is 256.

Be aware that extra items placed on a map can increase r_speeds and slow the
game down. Placing items at points not visible to many points on the map
will minimize the impact on r_speeds. Many items in a small enclosed area
is ok, many items in a large open space will increase r_speeds. Try to place
extra items behind walls or crates or behind any map object that will block the
view to the item from many points on the map.

Bots are aware of the extra items placed on the map and will navigate to them
as long as the item is placed near an existing navigation node that a path can
be calculated to. In fact, it's best for bots if you place extra items at the
exact location of an existing node.

Additionally, when the server cvar monster_mode is set to 3 or 4 you can add
monsters to a map in the same manner as adding an item; here the monster
classnames you can add:

	monster_soldier
	monster_infantry
	monster_gladiator
	monster_mutant
	monster_gunner
	monster_parasite
	monster_makron
	monster_brain
	monster_chick
	monster_berserk
	monster_tank
	monster_supertank
	monster_flipper
	monster_flyer
	monster_floater
	monster_hover
	monster_boss2
	monster_jorg


See 2.1.2.19.1 for more info on server spawned monsters.

It is strongly recommended to set the server cvar no_target_speaker to 1 when 
deathmatch monsters are being used to prevent "sound index overflow" when the 
maximum amount of sounds Quake II can load is exceeded (see 2.1.3.8).


2.1.3.3.1  Manually Adding Items/Monsters to Maps (console)
-----------------------------------------------------------
sv spawnitem

To manually add items/monsters to a map at the console you issue the server 
command spawnitem followed by the Q2 classname of the item and the x, y and z 
coordinates of the location you want the item placed.

If the map has been "routed" with navigation nodes the bots would be pleased if
extra items are placed at the exact position of an existing navigation node.
Use the findnode command to find the closest node within 128 units; a colored 
sphere will appear at the node location and the console will display some info 
about the node like:

	  node 232 type 0 <320.000  -1280.000 124.125>

The numbers between the brackets (<>) are the x, y and z coordinates of the
node location. If you wanted to place an extra item at those coordinates, 
round each number to a whole number and raise the z coordinate 30 units.
See 2.3.1.5.5.1.1 for more info on the findnode command.

Alternately, the iD command viewpos will tell you what world coordinates your
player model's "eyes" are viewing the world from. Stand at the position you 
want to place an item at and run the viewpos command; you'll see some console 
text like:

         < 100 119 57 > : 91         

The three numbers within the brackets (<>) are the x, y and z coordinates 
you are "seeing" the Q2 world from. If you wanted to place an extra item at 
those coordinates raise the z coordinate 10 units. See 2.2.6.1.1 for more
info on the viewpos command.

For example, to add a quad damage to the map at a certain location, navigate to
the location and use the findnode or viewpos command to get the location's
coordinates, say the findnode command reported the location:
	
	<-12.000  180.375 24.125>

If you're not in spectator mode or noclip mode then step a few paces 
away from from that spot. Run the following command (you *must* be the server 
operator and the numbers must be whole numbers (integers)):

     sv spawnitem item_quad -12 180 54

This will spawn a quad damage powerup at the location you specified. The item 
will function just like any other map item, it will respawn a little while 
after it has been picked up. Note that I added about 30 units to the z coordinate;
the iD droptofloor() function is executed for each item you specify, there must 
be room for the item to drop to the floor. Player spawn points 
(info_player_deathmatch,info_player_team1 and info_player_team2) are 
automatically dropped to floor level.

There must be enough room to spawn a server monster, at least 128 units
of vertical space at the specified location. Again, determine the position with 
the findnode or viewpos command, the z coordinate must be at least 50 units 
above the floor; example: 

     sv spawn monster_jorg 344 -157 -224

The server cvar monster_mode must be set to 3 or 4 to spawn server monsters.

2.1.3.3.2  Extra Map Item Files
-------------------------------
use_extra_item_files

If you want to play a level and always spawn the same extra items on the level 
you can specify the items in a level-specific item file that will load each 
time you run the level. The files must be placed in a directory named 
items off the game directory (the directory with the lOkO dll) and be named like:

       <level>.xif

where <level> is the name of the map, ie. q2dm1.xif. Each line of the file 
specifies one item, the format of the line is:

        x y z  itemclassnamename

where x, y and z are whole numbers specifying the x, y and z coordinates where 
you want the item placed and itemclassnamename is the class name of an item 
as specified in 2.1.3.3. See the example xif files in the ditribution zip file.

   NOTE: the cvar use_extra_item_files must be set to 1 to enable loading extra 
         item files, set to 0 to disable (defaults to 1).

Be aware when you use an extra item file to load extra items on a map which has
never had a navigation node file saved to disk, the extra items appear in the
item table built by the dll when it builds the initial node table for the map.
If you subsequently route the map and save the node table to disk the extra items
will always appear in the item table for the map any time the map is run, even
if you have the server cvar use_extra_item_files set to 0 and those extra items
are not spawned on the map; bots won't know the extra items are not on the map 
and will navigate to the locations of the extra items when they desire the item.

It is recommended that you NOT store team flags in extra item files, see
2.1.3.3.4  CTF Flag Position File for storing team flag positions.

Default value: 1


2.1.3.3.2.1 Saving Extra Items to Disk
-----------------------------------------------
You can save the extra items you manually place on a map with the server 
command saveextras, ie. sv saveextras. The file will load the items the next 
time the map is loaded if the server cvar use_extra_item_file is set to 1. 
Team flags are NOT saved to the file;  see 2.1.3.3.4  CTF Flag 
Position File to manually record the flag positions. Monsters are also
not saved to the file; see the server command savemonsters 2.1.2.19.1.1
to save server monsters to disk; see the server command savectfmonsters 
2.1.2.19.2.2 to save team monsters to disk. The extra item file (.xif) will be 
named and saved as specified in 2.1.3.3.2 .


2.1.3.3.3  Spawning Random Health
---------------------------------
cvar random_health

Some levels contain no health items, like Action Quake 2 levels. Setting the
server cvar random_health to 1 before the level loads will cause a random health 
item to be spawned near most deathmatch spawn points. The health item spawned will
be either a large health or, less frequently, a mega health.

Random health items spawned on the map are counted as extra items, the maximum
number of extra items that can be placed on a map is 256.

Be aware when you use random_health to spawn health items on a map which has
never had a navigation node file saved to disk, the health items appear in the
item table built by the dll when it builds the initial node table for the map.
If you subsequently route the map and save the node table to disk the health 
items spawned due to random_health being set to 1 will always appear in the item 
table for the map any time the map is run, even if you have the server cvar 
random_health is set to 0 and those random health items are not spawned on the map; 
bots won't know the random health items are not on the map and will navigate to 
their supposed locations when they desire the health.

This is a 'latched' cvar and won't take effect until the level changes.

default value: 0


2.1.3.3.4  CTF Flag Position File
---------------------------------
cvar use_flag_positions_file

The lOkObOt can play Capture The Flag on any level, even "non-ctf" levels 
(single player and deathmatch maps). If you want CTF flags to automatically 
spawn when playing CTF on non-ctf levels you can enter the flag positions in a 
file that will be loaded each time the level loads and the game is set to CTF. 
One file, named flag_positions.txt and located in the items directory off the 
game directory, specifies all the flag positions for every map. Each line of 
the file should be on the following format:

   mapname x y z  x y z

where mapname is the name of the map and each set of x y z represents the whole 
number x, y and z coordinates where you want the flags placed. Some examples:

   mine2  200 100 -76   1200 1800 65
   mine3  1298 199 -382  -1100 1900 80

The z coordinate of each flag should place the flag 50 or so units above ground
because the iD function drop_to_floor is used when spawning the flag; the 
function checks if there is enough room to drop the flag at the location
before spawning a flag.

The cvar use_flag_positions_file must be set to a value greater than zero to 
enable the use of the flag position file; setting use_flag_positions_file to 1 
will place the red flag at the first set of coordinates specified and the blue 
flag at the other coordinates, setting use_flag_positions_file to 2 will place
the blue flag at the first set of coordinates specified and the red 
flag at the other coordinates, setting use_flag_positions_file to 3 will 
randomly choose a flag to place at the first set of coordinates and place the 
other flag at the other coordinates. The viewpos command will show the 
coordinates you are at,  see 2.2.6.1.1

Default value: 1

2.1.3.4  Additional Techs
-------------------------
Five additional CTF techs are available with this mod:

Vampire Tech: Picking up this tech immediately increases your max health by 25.
Your health increases by 1/3 the damage you actually dole out to your client
opponents, exclusive of damage absorbed by armor or power armor. The vampire
does not work against monsters.
The data cube model and pickup icon are used for the Vampire tech. 

Jet Pack tech: When you pick up the Jet Pack tech you can use the Jet Pack to fly. 
The Jet Pack uses no ammo. The command "+jetpack" turns the Jet Pack on/off. The 
pickup model for the Jet Pack tech is the Hover monster model, the pickup icon is 
the pyramid key icon. The Jet Pack Tech is not spawned on the map when the server 
operator sets the start_jetpack cvar to 1 in which case all players will have the 
jetpack. See section 2.2.6.2.1 below for usage of the +jetpack command.

Ammo Regen: Picking up this tech causes any ammo in your inventory to slowly 
increase to maximum capacity. The data spinner model is used as a pickup model
and the data spinner icon is used as a pickup icon.

Lightning Defense: A bolt of lightning discharges from your eyes to the closest 
enemy within 300 units every 1/2 second. Automatically turns off when you are 
submerged in water. The blue key model and pickup icon are used as the pickup 
model and icon.

Voodoo: Picking up the Voodoo tech enables you to "re-animate" gibbed heads you 
pickup. You can only toss the last head you picked up, even if you have more 
gibbed heads in your inventory; when you toss the last head you picked up you 
must subsequently pick up another in order to toss another. You toss the head 
using the tosshead command. The commander's head model and pickup icon are used 
as the pickup model and icon for the Voodoo tech. See 2.1.1.3.2 Homing Heads
above for the behavior of re-animated heads.

Five server cvars control the spawning of the additional techs:

   no_vampire_tech
   no_jetpack_tech
   no_ammo_regen_tech
   no_lightning_defense_tech
   no_voodoo_tech

The values of the above cvars default to 0, meaning by default the additional
techs spawn; set the appropriate cvars to 1 to disable them.

These five techs are also disabled when the server cvar dmflags' bits are set
with DF_CTF_NO_TECH enabled (524288). 

Note that when playing a game of tag the server might not spawn any techs except
the "tag" tech; see 2.1.2.16 Playing Tag for the full explanation.

2.1.3.5  Additional Powerups
----------------------------
An additional powerup is available with this mod, the Ring of Shadows, like the 
Classic Quake powerup. When you pick up the Ring of Shadows you get 30 seconds 
of virtually total invisibility; every two seconds a few bubbles show up at your 
position. The server operator must add the Ring of Shadows powerup to the map 
(classname is item_invisible) either from the console as specified in 2.1.3.3.1 
or in an extra item file as specified 2.1.3.3.2. The Ring of Shadows respawns 2 
minutes after it is picked up.

When using the ycam (3rd person perspective) while invisible you see the "eyes"
model instead of your player's model and weapon model.

2.1.3.6  MegaHealth Bug/Feature
-------------------------------
cvar max_mega_health

My working copy of the Ace Bot source code had a strange bug: if a player's
health was 150 or higher when the player touched the Mega Health his health
would increase infinitely for as long as he touched the Mega Health. Needless
to say the bots really liked this and would merrily hump the Mega Health for
hours. I almost eliminated this bug but decided I rather liked the extra bonus
to a degree. The server cvar max_mega_health controls the maximum health the
Mega Health will dole out to a player with health 150 or higher. The default 
value is 999; setting max_mega_health to 250 essentially makes the Mega Health
behave like bug-free vanilla Q2.

Default value: 999

2.1.3.7  game_engine Server Cvar for Quake2 Engine Mod Compatability
--------------------------------------------------------------------
cvar game_engine

  The lOkO mod is designed to work with the quake2.exe (the "engine") 
supplied with the commercial version of Quake2 3.20. Since the good folks
at iD have released the engine source to the public some savy programmers
have altered the source code and released alternative Q2 engines. Since everyone
is free to alter the code at will, some code in the dll supplied with the
lOkO mod may be incompatable with some of the new engines. When I can, I
will try to alter the dll code to work with alternate game engines. The server
cvar game_engine was added to so the server operator can tell the dll what
engine is running. As of lOkO version 0.13, the possible values are:

	0 		stock iD game executable or compatable custom engine
	1		(not used yet ...)
	2		Quake2 Evolved version .23
	3		Quake2 Evolved version .26b

  Detailed compatabilty with tested engines:
	
        Egl (Echon): no incompatability, no crashes. Highly recommended for
	    100% compatabilty, shader support, etc. Alas, dll fog does not
            seem to work...
            Tested with version 1.3, 1.4 and 1.5.


	Quake2 Max: no compatablity issues, no crashes; some effects look
           different from standard Q2, like the jetpack trail and the vortex
           grenade effect. As of version dll 0.13, you can leave game_engine
           set to 0 when using Quake2 Max as there is no engine specific code
           in the lOkO dll for Max.
           Tested with version 0.42, 0.44 and some earlier versions.


        Quake2 Evolved: you must set game_engine to 2 for the .23 engine or else
           the lOKO dll will crash; specifically it crashes when using any 
           alternate firemode that has flaming ordinance.
           Set game_engine to 3 when using the .26b engine so the radar
           scanner displays correctly.
           Set game_engine to 0 for versions greater than 0.26b.
           Tested with version 0.23., 0.26b., 0.40

	KMQuake: the lOkO dll doesn't work with this engine;  you must use one
           of the dlls supplied with this engine.

        BeefQuake: no incompatability, no crashes.
            Tested with version 0.3.


Default value: 0


2.1.3.8  no_target_speaker Server Cvar
------------------------------------
no_target_speaker

The server cvar no_target_speaker controls the ambient sounds native to the map
being played. When set to 1 map sounds played by the target_speaker entity on
maps (ambient lava sizzle, dripping water, clanking machinery, etc.) are not 
loaded or played. It is strongly recommended to set no_target_speaker to 1 when 
deathmatch monsters are being used to prevent "sound index overflow" when the 
maximum amount of sounds Quake II can load is exceeded.

Default Value: 0


2.1.3.9  save_scores Server Cvar
--------------------------------
If the server cvar save_scores is set to 1, when the the map is changed with
the id map command, the timelimit, fraglimit or capturelimit is hit or you
exit the game on a non-dedicated local server the final scores and player
statistics are saved to a text file in the 'scores' directory off the game 
directory on the server. 

Statistics reported are combat time, score, # of frags, # times fragged, # of 
suicides, # of heads fed to Mutants, damage doled out, damage taken, longest 
uninterupted frag streak, # of monsters killed, # times killed by monsters and 
# of monster sidekick kills credited. If the game is CTF then the team
statistics # of flag captures, total points and # of players are reported
as well as each player's team and CTF bonus points.

The file in the 'scores' directory is named with the match end date (year, month, 
day) and time ( hours (0-24), minutes, seconds) and the level name ie. if the 
match on level q2dm1 ends at 35 seconds past  11:30 PM on Febuary 13th 2004 the 
filename would be 20040213233035q2dm1.txt .

The scores won't be saved to disk if you kill the game with the 'disconnect'
command on a non-dedicated local server.

Default Value: 0


2.1.3.10  Playing Action Quake2 Maps
------------------------------------
The Action Quake2 mod has different weapons, ammo and other game items than
the normal Q2 dll but keeps all the standard id item classnames for the mod's
game items on it's maps; this way map designers can use any map editor the 
supports quake2 to make AQ2 maps. For example the AQ2 dll spawns a hand cannon 
when a weapon_rocketlauncher is specified, a pistol instead of a blaster, a 
sniper rifle instead of a bfg, etc. The lOkO mod spawns the normal Q2 weapons 
when playing on AQ2 maps and the weapons "mix" is usually kinda wierd; the 
weapons usually found on AQ2 maps are mostly shotguns, machineguns, 
rocket launchers and bfgs, sometimes railguns and chainguns, rarely 
hyperblasters, even more rarely grenade launchers and I've never seen a 
super shotgun. 

Generally AQ2 maps are sparsely populated with game items. The AQ2 mod doesn't 
spawn any health or armor on maps so maps made for the mod generally have none. 
Most doors won't open until the player issues the opendoor command. There are no 
powerups native to normal Q2 spawned nor any normal Q2 armor.

The lOkO mod has a number of options for playing AQ2 maps:

	a. the server cvar aq2_doors can be set to 1 to emulate AQ2 door
           behavior, meaning most doors must be opened (and sometimes
           closed) using the opendoor command; all AQ2 maps with bot support
           have DOOR_OPEN nodes so bots know when to issue the opendoor command 
           and wait for a door to open in order to navigate through it.

	b. most AQ2 maps with bot support also have extra item files supplied
           in the zip archive that will automatically spawn addtional weapons 
           and ammo to "smooth" the weapons "mix", ie. weapons rarely found 
           on AQ2 maps are added along with more ammo, powerups and armor.

        c. the server cvar random_health can be set to 1 to spawn health
           items at most deathmatch spawn locations; the extra item files
           for AQ2 maps supplied in the zip archive generally don't have any 
           health items specified in them so use the random_health cvar.

        d. if you don't want to use/create/edit extra item files for AQ2
           maps you can just play with the game items native to the map
           or the server can be set up to give each player a start weapon
           or two along with some ammo so matches don't become a war of
           blasters on spartan maps.

	e. AQ2 maps are pretty cool when played on an 'Insta-Gib' server
           where weapons and ammo native to the map are not spawned and
           players get a railgun or a rocket launcher and some ammo
           and the dmflags for DF_INFINITE_AMMO are turned on.


2.2 Client Options
------------------
            
2.2.1  Hud Options
------------------
All players can modify the look of the HUD (heads-up display) to display extra 
statistics or the HUD can be turned off. Note that when using the chase cam to 
watch a bot you can configure your hud any way you like but when using the chase 
cam to watch a human client you are constrained to whatever hud configuration 
the human client is using.

2.2.1.1  Ammo Hud 
-----------------
Command: ammohud

Players can display the quantities of all the ammo in their inventory using the
ammohud command; the quantities of ammo will be displayed along the left edge
of the display. The command ammohud is a toggle, enter once to enable the ammo 
hud, enter a second time to disable the ammo hud. Note that when playing CTF 
the only ammo showed on the display is gibbed heads, as the CTF "stats" 
displayed on the HUD use up most of the available stats. Bind a key ...

2.2.1.2  No Hud
---------------
Command: nohud

Players can completely turn off the HUD by issuing the nohud command; enter once 
to turn off the HUD, enter again to turn the HUD back on. Bind a key ...

2.2.1.3  Laser Sight
--------------------
Command: laser

An active laser sight is available to help you target your enemies. A green 
glowing dot is projected along the player's view angle to the farthest distance
that can be seen; if another organic entity (player, bot, monster or carcass)
is in the line of sight the green glowing dot will turn red. Note that all other 
players will be able to see your laser sight, so if your trying to sneak 
around undetected you may want to turn the laser sight off. The command "laser" 
toggles the laser sight on/off; bind a key to this command if you use it often.

2.2.1.4  Scanner
----------------
Command: scanner
cvar no_scanner

The scanner is a radar device that displays the positions of all other players in 
the game on the hud. In deathmatch players are represented by light blue dots 
which turn red if the player is invulnerable or dark blue when the player has the
Quad Damage; their relative up/down position is indicated by an up or down arrow 
above/below the dot. In CTF the players are marked by a red or blue dot according 
to their team and a light blue dot if they have the quad or are invulnerable. The 
client command scanner toggles the scanner off/on. When you use the scanner you 
emit a dripping noise that other players can hear and bots can perceive. 
Bind a key to, ie. bind r 'scanner'

The server operator can ban the use of the scanner by setting the no_scanner 
latched server cvar to 1, setting to 0 enables the scanner.

If you're using the Quake2 Evolved engine the game_engine cvar must be set to
2 (version .23) or 3 (version .26b) for the scanner graphics to display 
correctly. For versions after .26b you should set game_engine to 0.


2.2.1.4.1  Scanner Offset
-------------------------
Command: scannerxoffset
Command: scanneryoffset

The default position of the scanner is in the lower right hand corner of the 
display; the position can be changed using a two client commands, all position 
values are relative to this position:

   scannerxoffset <num> : horizontal offset; <num> is a whole number greater 
                          than or equal to 0.

   scanneryoffset <num> : vertical offset; <num> is a whole number greater than 
                          or equal to 0

    
    scannerxoffset 320
    scanneryoffset 240

sets the scanner to display near the center of the screen on an 800x600 display.

The scanner offset values you set are not saved across map changes.   


2.2.1.4.1  Scanner Range
------------------------
command: scannerrange

The range of the scanner can be modified using the scannerrange client command. 
Each scanner range "unit" equates to 10 quake units of scanner range. The default 
range is 100 which shows all clients within 1000 quake units; changing 
the range to a smaller number decreases the scanner range, a larger number 
increases the scanner range. Negative numbers are not allowed, the lowest possible 
range is 1.

   scannerrange <num>   , <num> is a whole number greater than 0

   Example: 'scannerrange 50' sets the scanner range 50 X 10 quake units 
                              or 500 quake units.
    

The scanner range value you set is not saved across map changes.   

If you like using a certain customized scanner setup each time you play, try 
the following key bind, alter the values to whatever you want:

bind r "scannerxoffset 50; scanneryoffset 100; scannerrange 50; scanner"

Each time you press the r key the scanner offset commands and the scannerrange
command are run; the 'scanner' command toggles the scanner on if it's not
on and off if it is on.


2.2.2  Spectator Chase Cam
--------------------------
Clients connected to a server but not playing (they're spectators) can view the
game action using a moveable camera that is positioned behind one of the game
participants, allowing them to observe the participant as he/she/it plays the 
game. The chase cam can be switched to view any of players participating in 
the game.

2.2.2.1  Turning Chase Cam on/off
---------------------------------
To use the chase cam in deathmatch type 'spectator 1' at the console and press 
the space bar to start chasing a player or bot (in ctf, choose the chase cam 
option from the ctf join menu). You can switch the player you are chasing by 
using the keys for 'inventory next' and 'inventory prev' (usually ']' and '['). 
To change cam modes press the 'inventory use' key (usually 'Enter'). To leave 
chase cam and join the game enter 'spectator 0' at the console. (If you have 
trouble returning to the game with the spectator cvar, type 'observe' at the 
console and you'll get the ctf join menu even if the game is not ctf; choose 
'Join Red Team' or 'Join Blue Team' to join the game. If the game is not ctf 
you'll just join the game. Yeah, it's a hack but it works.)

2.2.2.2  Changing Chase Cam Camera Position
-------------------------------------------
There are three methods of changing the chase cam mode. The easiest way is to 
press the 'inventory use' key (usually the 'Enter' key) repeatedly to cycle 
through all the available standard cam positions. Alternately, you enter the 
'cam' command followed by the cam mode to switch to; the cam command can also 
be used to chase a particular player by using his name as an argument to the cam 
command. Finally, you can use client commands to customize the chase cam offset
position from the the chase target when the cam is set to 'near' mode, see
below...

2.2.2.2.1  Chase Cam Standard Positions
---------------------------------------
Listed below are the names and descriptions of the various chase cam modes: 

        near - the cam will closely follow the player being chased and 
             will always attempt to position itself directly behind the
             chasee at a very close distance (about 60 units)- see the 
             modifiying commands ccamxoffset, ccamyoffset and 
             ccamzoffset below for variations. The cam tries to keep the
             chasee in the middle of the screen. The 'near' mode may be 
             customized so you can move the chase cam closer/nearer to 
             the chasee, see section 2.2.2.2.2 .

        mid - the cam will follow the player being chased and 
             will always attempt to position itself directly behind the
             chasee at distance of around 240 units (about 4x the height of
             the player). The cam tries to keep the chasee in the middle of 
             the screen.

        far - the cam will follow the player being chased but will not
             try to keep the player in the middle of the screen. The cam 
             will lag far behind the player as he moves away from the cam.

        track - the cam is placed and always stays directly behind the 
              chasee at a close distance; the cam always tracks the view
              angle of the chasee. This more or less the default chase cam
              from the Q2/ctf source.

        eye - the cam mimics the viewpoint of the chasee's 'eyes'; you see
              the game thru the chasee's eyes. This is a large hack, player
              models with excessive limb movement (SuperMale, ActionMale,
              Crakhor etc.) will have moving limbs and VWEP visible; the stock 
              Q2 male and female models are fine.

        front - instead of being positioned behind the player looking at his
              back the cam is positioned in front of the player looking at
              his/her/it's pretty face.

        follow - the cam will follow the player being chased but will not
             try to keep the player in the middle of the screen (will lag
             behind the chasee). The cam will never be positioned more than
             125 units above the chasee.


Press the 'inventory use' key (usually the 'Enter' key) repeatedly to cycle 
through all the available standard cam chase positions.

Press the 'jump' key (usually the space bar) to cycle through the available
chase targets (bots and players).

To specify a specific chase cam mode or player to chase use the cam command.
The syntax of the cam client command:

    To change the view:

        cam <mode> 

        where <mode> is one of: near, mid, far, track, eye, front or follow.

    To switch the player being chased:

        cam <playername> 

        where <playername> is the (case-sensitive) name of a game participant
      
        OR

        cam next      (chase the next player)

        OR 
    
        cam prev      (chase the previous player)

2.2.2.2.2  Chase Cam Custom Positions
--------------------------------------
Three client commands position the chase cam ONLY when the cam is set to 
'near' mode; specify the number of units to offset the chase camera, ie. 

      'ccamzoffset -20' 

will position the chase cam 20 units below the normal chasecam z position.

	ccamxoffset
	ccamyoffset
	ccamzoffset

The "normal" position of the chase cam in 'near' mode about 100 units
behind the chase target in the xy (horizontal) plane and 12 units above 
the chase target.

The ccamxoffset and ccamyoffset commands operate independently and specify
the camera offset from the normal position in the xy plane. If you set them 
the same the camera will attempt to stay the 'normal' position plus the
specified number of units from the the chase target at all times; if you set 
them to different values the camera will zoom towards and away from the chase 
target depending on which direction the chase target is facing.

Four examples:

	ccamxoffset 120; ccamyoffset 120

The cam will attempt to always stay about 220 units behind the chase target
in the xy plane. The cam always faces the back of the chase target.

	ccamxoffset 50; ccamyoffset 800

The cam will zoom in to about 150 units from the chase target when the chase 
target is facing towards 0 degrees or 180 degrees; when the chase target 
is facing 90 degrees or 270 degrees the chase cam will zoom out from the
chase target to about 900 units. The cam always faces the back of the chase
target.

	ccamxoffset -600; ccamyoffset -600

The cam will be placed about 500 units *in front* of the chase target and will
point towards the front of the chase target at all times.

	ccamxoffset -600; ccamyoffset 400

The cam will be placed about 500 units *in front* of the chase target and will
point towards the front of the chase target when the chase target is facing 
towards 0 degrees or 180 degrees; when the chase target is facing 90 degrees 
or 270 degrees the chase cam will be placed about 500 units behind the chase 
target facing it's back. The cam will pan from watching the view from in
front of the chase target facing it's front to the view from in back of the 
chase target facing it's back as the chase target rotates in the xy plane.

Remember, these are client commands, not cvars; the values set by the cam
offset command are remembered until the map changes, then they are reset to
0.



2.2.2.2.3  Killercam
---------------------------
command: killercam

The killercam client command toggles the behavior of the chase cam when the 
client being chased gets fragged. When killercam is set on the camera will 
switch to chasing the player who fragged your chase cam target; with killercam 
off you continue watching your original chase target when he/she/it respawns. 
The server cvar default_chase_killer (see 2.1.2.13) sets whether killercam is 
initially on or off when you start the chasecam.

2.2.3  Ycam (3rd person perspective)
------------------------------------
The ycam is third person perspective, meaning a camera is placed outside the
player and he can watch his player model as he plays the game. 


2.2.3.1  Turning Ycam on/off
----------------------------
command: ycam

The 'ycam' command toggles the ycam on and off, bind a key to 'ycam' if you wish
to quickly toggle the ycam.

2.2.3.2  Changing Ycam Camera Position
--------------------------------------
The following client commands change the ycam camera offset positions from the 
default ycam starting position, # should be a whole number:

         ycamxoffset #
         ycamyoffset #
         ycamzoffset #


ycamxoffset controls the distance the ycam camera is placed behind the player

ycamyoffset controls the distance the ycam camera is left/right offset from the 
   center view of the player (positive values move the camera to the left,
   negative values move the camera to the right

ycamzoffset controls the height the ycam camera is placed above the player
    (positive values move the camera up, negative values move the camera down).
    
Remember, these are commands, not cvars, and must be run each time a new map 
is loaded as the values are not saved across map changes.

If you like using a certain custom ycam position each time you play then try
the following key bind, alter the values to whatever you prefer:

bind y "ycamxoffset 55; ycamyoffset 12; ycamzoffset 24; ycam"

Pressing the y key will run the ycam offset commands each time; the "ycam"
command will toggle the ycam on if it's not on or off if it is on (see 
2.2.3.1).



2.2.4 Client Weapons/Ammo Commands
----------------------------------

2.2.4.1 tosshead command
------------------------
command: tosshead

The tosshead command throws a homing head in the air, provided you've picked up 
a gibbed head; see section 2.1.1.3.2  for a description of homing heads. Bind 
a key if you use this command frequently.
Syntax : tosshead

2.2.4.2 airstrike
-----------------
The airstrike command initiates an airstrike; see section 2.1.1.3.1 for an
explaination of an airstrike; bind a key if you use this command frequently.
Syntax : airstrike

2.2.4.3 detpipe
---------------
The detpipe command detonates all pipe bombs you have tossed which have not 
been detonated. Yeah, bind that key ...
Syntax : detpipe

2.2.4.4 firemode
----------------
The firemode command is an alternate way of specifying the fire mode of a 
weapon. Normally you repeatedly press the key associated with the
use of a weapon to cycle thru all the weapon's available fire modes; using the
firemode command you can change weapons and switch to a particular fire
mode with one keystroke.

The firemode command takes an integer (whole) number as an argument. It 
switches the fire mode of your current weapon to the fire mode you would get 
by pressing the weapon's "use" key the specified number of times assuming 
the weapon was initially set to fire normal Q2 ordinance.

You can bind a key to the commands or define an alias and bind a key to
the alias.

Examples:

   bind l "use hyperblaster;firemode 3"

   Pressing the 'l' key will change your weapon to the hyperblaster and your
   ordinance to lightning.

   alias cluster "use grenade launcher;firemode 3"
   bind c "cluster"

   Pressing the 'c' key will change your weapon to the grenade launcher and 
   your ordinance to cluster grenades.

All weapon firemodes are the same numbers as the fixed fire mode settings 
specified in 2.1.1.1.1.5.

If the ammo cost of the firemode specified by the firemode command is greater
then the ammo in your inventory then the firemode will default to 0, the 
default Q2 firemode of your current weapon; ditto if you specify a Napalm
firemode when the server cvar no_napalm is set to 1; ditto again if you specify
a firemode not available to you when weapons_mode is set to 3 (Arms for Heads) 
and you haven't picked up enough gibbed heads to upgrade your weapons to include 
that firemode.

2.2.4.5 cyclefiremode
---------------------
The cyclefiremode command allows you to cycle through all the available
firemodes of your whatever your current weapon happens to be. Any firemodes
you don't have enough ammo to use or you are not allowed to use are eliminated 
as choices. Bind a key, ie. bind n "cyclefiremode".


2.2.5 Client Monster Sidekick Commands
--------------------------------------

2.2.5.1 The sidekick Client Command
---------------------------------------
sidekick #

The "sidekick" command controls which monster sidekick is created for a player. 
The monster will spawn about 100 units in front of you and to your left or
right; if there isn't enough room to spawn a monster in either position you'll
get an error message. Here's how the sidekick command works:

	Command		Monster Created		Default Ammo Cost
	----------	---------------		-----------------
	sidekick 1	soldier			75 shells

	sidekick 2	infantry		150 bullets

	sidekick 3	gunner			75 grenades

	sidekick 4	chick			75 Rockets

	sidekick 5	tank			40 slugs

	sidekick 6	gladiator		150 cells

The ammo cost for each monster can be set by the server operator, see above
at 2.1.1.3.3.1. 


2.2.5.2 The bestsidekick Client Command
-------------------------------------------
In the heat of battle you don't want to have to open the console and type 
the sidekick command to spawn a monster sidekick; likewise you may not want 
to bind six keys to spawn each of the available sidekicks. The bestsidekick
command is an alternative command: bestsidekick takes a number argument of 
up to six digits, specifying the order of preference of sidekicks, each digit
corresponding to the number argument you'd use to specify the sidekick to spawn
with the sidekick command as specified in 2.2.5.1. The digits are tested from 
left to right, the leftmost digit specified is tested first; if you have 
enough ammo in your inventory then that monster sidekick is spawned, if not 
then the second digit from the left is tested, etc. If you don't have enough 
ammo to spawn any of the monsters specified by the argument number then no 
sidekick monster is spawned.

Here is an example:

     bind z "bestsidekick 534126"

 In this example, when you press the z key, first your inventory is checked
for enough slugs to spawn a tank monster (5) and if you have them a tank 
sidekick is spawned; if you don't have enough slugs then your inventory is 
checked for enough grenades to spawn a gunner monster (3), if you have them one 
is spawned; if not, your inventory is checked for enough rockets to spawn a 
chick monster (4), etc.


2.2.5.3 Teleporting Your Monster Sidekick
---------------------------------------------
if you issue the sidekick or bestsidekick command when you already have a 
monster sidekick your sidekick monster will attempt to teleport to your 
location. The monster will teleport about 100 units in front of you and to 
your left or right; if their isn't room to teleport your monster at these 
locations you'll get an error message and the monster won't teleport to you.


2.2.6 Client Misc. Commands
----------------------------

2.2.6.1 Standard iD Client Commands
-----------------------------------
These client commands are useful standard iD commands.

2.2.6.1.1 viewpos
-----------------
The viewpos command that tells you what world xyz coordinates your player model's
"eyes" are viewing the world from. The text output of the command is formatted as 
follows:

  <x y z> : a

  x, y and z are the coordinates the client is viewing the world from
  a  is the horizontal angle (in degrees) from 0 degrees the client is viewing

This command is useful for determining the position to add additional items and 
monsters to the map or for determining the position to move a node to.

2.2.6.1.2 id
------------
The id command toggles the iD player id function on/off; the id function prints
the name of other clients on the screen when they are in front of you and visible
to you.

2.2.6.2 Additional lOkO Client Commands
---------------------------------------

2.2.6.2.1 +jetpack alias 
--------------------------
You get the JetPack when you pick up the JetPack tech or the server operator 
sets the cvar start_jetpack to 1. There are two built-in aliased commands that
operate the jetpack: "+jetpack" turns the jetpack on and "-jetpack" turns the
jetpack off. Bind a key to "+jetpack".

2.2.6.2.2 Off-Hand Hook commands
--------------------------------
There are two built-in aliased commands that shoot and retract the off-hand hook;

   "+hook" shots the off-hand hook 
   "-hook" retracts it. 

Bind a key to "+hook".


2.2.6.2.3 CTF Grapple commands
------------------------------
The dll automatically creates 2 alias commands for using the CTF grapple for
navigation or as a weapon:

    +ctfhook is an alias for "use grapple;+attack"
    -ctfhook is an alias for "-attack;weaplast"

Bind a key to "+ctfhook"; when pressed it switches weapons to the grapple and 
fires it. When you release the bound key you unhook the grapple and switch to 
the last weapon you were using.



2.2.6.2.4 svstatus command
--------------------------
This command allows clients to view various server settings. The svstatus command
with no arguments shows the top level game cvar settings; adding one of the valid
arguments to the command shows lower level game settings.

  svstatus - displays high level game cvars (deathmatch, ctf, location_damage, etc)

  svstatus bots - displays cvars pertaining to bots (hazard_checking,
                  bot_sound_perception, etc)
      
  svstatus ammo - displays cvars pertaining to ammo (weapons_mode,
                  max ammo, start ammo, etc)

  svstatus fog - displays cvars pertaining to fog generated by the game dll

  svstatus weapons - displays cvars pertaining to weapons (banned weapons,
                     start weapons, etc.)

  svstatus monsters - displays cvars pertaining to monsters (monster_mode,
                      monster sidekick costs, etc.)

  svstatus costs - displays cvars pertaining to ammo costs for alternate fire
                   modes

  svstatus misc  - displays other server cvars


2.2.6.2.5 altscore command
-------------------------------
altscore

This client command displays more detailed scoring information on the console. 
The stats displayed for each player in the game are time, score, # of frags, 
# times fragged, head bonus score, ctf score, damage given, damage taken and
the number of frags achieved on a player's longest uninterupted frag streak.

2.2.6.2.6 zoom scope
--------------------
zoom

The zoom command controls magnification of the zoom scope in the following
manner:

   zoom		turns off the zoom scope

   zoom 1		repeated execution cycles the zoom scope from normal
			magnification through 3 increasing magnifications then
			back to normal magnification.

Bind a key to "zoom 1".

2.2.6.2.7 botskills command
---------------------------
This client command shows the skill levels on the console of all the bots playing 
the game.

2.2.6.2.8 botroles command
--------------------------
The botroles client command displays on the console each bot's name, team and 
their current ctf role.


2.2.6.2.9 monsterscore command    
------------------------------
This client command displays scoring information about monster kills on the 
console. The stats displayed for each player in the game are time, score, # of 
frags, # monsters the player has killed,the # of times the player has been 
killed by monsters and the # of frags by a sidekick owned by the player.

2.2.6.2.10 showdmflags command
------------------------------
This client command shows on the console all the flags in the dmflags server
cvar and if the flag is turned on or off. If you pass it an integer argument the
showdmflags command will display the on/off values of each dmflags flag for the
integer passed.

2.2.6.2.11 itemsum command
--------------------------
The itemsum command displays the classname and quantity of each item in the 
item table loaded or created when a map is loaded.

2.2.6.2.12 extrasum command
----------------=----------
The extra sum command displays the classname and quantity of each item in the 
extra item table, which stores info about any extra items added to the map
using the spawnitem server command or loaded on the map in an extra item
file.


2.3 Bots
--------
   The lOkO bot uses client emulation to navigate a level; it issues the 
same commands to the server dll as a human client pressing the keys bound to
"+forward","+back","+strafe","+right", etc. When jumping, the bot's velocity
is boosted slightly in the direction of travel.
   The bot will become aware of and test for lava, slime and trigger hurt
once a few bots or humans are killed by them. The bot cannot detect lasers
on maps.
   Bots can navigate platforms, doors that act like platforms, teleporters,
jump pads, wind tunnels, secret doors and doors where a button must be shot
to open it once a node file is generated. It can be routed to press simple 
buttons where the door is directly adjacent to the button that opens it but 
cannot press buttons and navigate doors when the door and button are far 
apart. Bots can ride a func_train if it does not have 
   Bots are aware of "dll fog", OpenGL fog controlled by the lOkO dll; they
won't percieve other bots or players beyond any distance where the fog is 98%
opaque. Bots are *not* aware of "engine fog", OpenGL fog controlled by any
of the custom OpenGL game engines, ie. Quake2Max, Quake2 Evolved, etc.; they
will act as if visibility is unlimited.

The lOkO bot has 4 skill levels, skill 4 is the highest skill:

	1 - Skills R' Low
	2 - Average Joe
	3 - Challenging Foe
	4 - Bad Mo' Fo


2.3.1 Managing Bots
-------------------
Almost all bot commands (except ctf bot orders) can only be run on the server.
The exception is the botmenu command; server commands cannot display menus.


2.3.1.1 Adding Bots
-------------------

2.3.1.1.1 The allow_bot_menu Server cvar
----------------------------------------
allow_bot_menu

Access to the botmenu command is controlled by the server cvar allow_bot_menu;
the server operator should set allow_bot_menu to 1, use the botmenu to addbots
and set allow_bot_menu to 0. Since (I assume) most people will be playing the
lOkO mod on their own machine at home and not running a LAN or internet server, 
the default value for allow_bot_menu is 1. If you are running a public server 
you should be aware of this potential "back door". 

Default value: 1

2.3.1.1.2 The botmenu Command
-----------------------------
The botmenu command will put a menu on your display allowing you to easily
add bots to the game without having to memorize lots of commands and parameters.
You can set the bot's skill level (1-4, 1 is easiest), the bot's player model
and it's skin by scrolling thru all the choices. A random name is automatically
chosen for the bot. 

You can use the botmenu to add bots to a CTF game, the botmenu will only 
display a model as a menu choice if CTF skins (ctf_r.pcx and ctf_b.pcx) exist 
for the model. The bot is named using the the first letter of it's team name 
and an integer value, ie. r1, r2 or b1, b2 etc.

By default, the botmenu command is bound to the F2 key.

The botmenu cannot read player models and skins that are in pak files. Only
models and skins in directories off the baseq2/players directory are displayed
by the botmenu command.


2.3.1.1.3 The addbot command
----------------------------
The server command addbot will add one bot to the game. The stuff inside the 
brackets ([ ]) is optional.

sv addbot [skill - 1-4] [model/skin] [name]
		
	add a deathmatch bot - without specified options, a random skill bot 
      will be added and will use the male or female model with one of the 
      stock iD skins; you can further specify a skill level (1-4), a model
      and player skin and a name
      Example : sv addbot 3 male/grunt JoeGrunt


sv addbot skill (1-4) team (red or blue) [model/skin] [name]
		
	add a teamplay/ctf bot - you must specify a skill level (1-4) and a
      team (red or blue).
      Example : sv addbot 4 red male/ctf_r "Red Menace"

       
A file named botnames.txt in the game directory contains names that are used 
to name bots when a bot is added without specifying a player name. The dll will
load up to 192 bot names from the botnames.txt file.

When the game is teamplay or CTF, when you add a bot to a team without 
specifying a player name the bot is named using the the first letter of it's
team name and an integer value. ie. adding 3 unnamed bots to the red team
will cause those bots' player names to be r1, r2 and r3.

2.3.1.1.4 The loadbot command
-----------------------------
For convenience, you may pre-define bots in a text file name bot.cfg in the game 
directory and load the pre-defined bot using the server command loadbot. You
can't use the loadbot command when the game is CTF or teamplay. The format for 
each line of the bot.cfg file is:

<botname> <model/skin> <default skill>

An example bot.cgf file might look like:

# bot.cfg file
# lines starting with the # sign are comments; blank lines are ignored

grunt male/grunt 3
razor male/razor 3
voodoo female/voodoo 2
ssvamp crakhor/ssvamp 4
centurion marine/centurion 4
wimpy marine/reese 1
"bo diddly" messiah/messiah 4

To load a predefined bot using it's default skill:

sv loadbot voodoo

To load a predefined bot overriding it's default skill:

sv loadbot wimpy 4 
sv loadbot "bo diddly" 3



2.3.1.2 Removing Bots
---------------------
sv rb [name] [all]
OR
sv removebot [name] [all]
 
removes a bot or all bots from the game. If the name contains white space 
enclose the name in double quotes, ie.
 
   sv rb "eric dolphy" 

removes the bot named eric dolphy. 


2.3.1.3 Killing Stuck Bots
--------------------------
Occasionally a bot will get stuck and cannot move (he may fall and get lodged
in a tight space) or a bot may fall into the void (the area outside the map).
The server command killbot will kill the specified bot and he'll respawn anew.

sv kb [name] [all]
OR
sv killbot [name] [all]
 
kills a bot or all bots in the game.


2.3.1.4 Re-spawning Bots across level changes
---------------------------------------------
save_bots
init_bots

The server operator can set the server cvar save_bots to 1 so bots who exist in
the game will re-join the game when the level changes. Setting save_bots to 0 
turns off persistant bots. Bots playing the game are stored to a temporary
disk file before the level changes and reloaded from the disk file when the 
new level starts. Note that two different disk files are used to store the
bots across level changes, one for CTF/teamplay and one for normal deathmatch;
if bots are playing normal deathmatch with save_bots set to 1 and subsequently
ctf is set to 1 and the map changes the teamless bots will be saved to the
CTF/teamplay file, when they load to the new map the bots will all join the
blue team and you might have problems if the bot's player model does not have
the ctf skins (ctf_r.pcx and ctf_b.pcx).

The default value for the save_bots cvar is 0.

If the server cvar init_bots is set to 1 when the server is initially started
and the cvar save_bots is set to 1 the bots saved to disk the last time the 
server was run with the save_bots cvar set to 1 will be loaded into the server. 
Note the dll sets the init_bots cvar to 1 internally as soon as the first level 
is loaded by the server anyway; set init_bots to 1 on the command line 
(+set init_bots 1) or in the autoexec.cfg file. The default value for the 
init_bots cvar is 0.


Syntax: save_bots 1
        init_bots 0


2.3.1.5 Other Bot Options
-------------------------
                
2.3.1.5.1 Bot Chat
------------------
bot_chat

When the server cvar bot_chat is set to 1 bots will say semi-witty things upon 
killing/being killed/suiciding. Setting bot_chat to 0 turns off bot chatting. 
The text file "botchat.txt" should be in your game directory, feel free to 
customize it. 

Default value: 1

2.3.1.5.1.1 Bot Chat Frequency
------------------------------
bot_chat_frequency

The server cvar bot_chat_frequency sets the minimum number of seconds between 
bot chats. Set to a low number (10) for chatty bots or a high number (60) for 
less chatty bots. 

Default value : 25

2.3.1.5.2 Bot Hazard Detection
------------------------------
hazard_checking 

The server cvar hazard_checking controls how much testing the bots do for lava, 
slime and my favorite, trigger_hurt. Hazard tests by bots grab precious clock 
cycles from the engine and on slower machines with many bots this may slow the 
game perceptably. This cvar will let you control how much hazard testing is 
performed by bots. Note that hazard_checking equal to 1 or 2 has a further 
requirement of a certain number of bots/players must actually be fragged from 
lava/slime/trigger_hurt before bots test for hazards; this was coded this way 
so with the default value set to 2 if there is no lava/slime/trigger_hurt on the 
map the bots won't spend clock cycles looking for hazards, they sort of "learn" 
the map has hazards from deaths by lava/slime/trigger_hurt. Setting 
hazard_checking equal to 3 turns on full time hazard_checking regardless of 
deaths due to lava/slime/trigger_hurt, setting hazard_checking to 0 disables 
almost all hazard_checking. Also note testing for lava/slime and trigger_hurt 
are independant; if you set hazard_checking to 2, 4 deaths must occur by lava 
or slime for lava/slime testing to begin and 4 deaths must occur before by 
trigger_hurt before testing for trigger_hurt begins.
 
      hazard_checking 0 - bots do hardly any hazard testing                          
                          (and lots of lava jumping)

      hazard_checking 1 - bots do hazard testing on places they
                          plan to go each time they decide to
                          attack, retreat, head for an item, etc.
                          no checking is done until 2 deaths by
                          lava/slime/trigger_hurt occur to bots/humans.
                                 
      hazard_checking 2 - bots do hazard testing on places they
                          plan to go AND do hazard testing 
                          each clock cycle in the direction they
                          are going; no checking is done until 4
                          deaths by lava/slime/trigger_hurt occur
                          to bots/humans
             
      hazard_checking 3 - the same as 2 except hazard testing is on
                          all the time without checking for any 
                          deaths by lava/slime/trigger_hurt.

I recommend you leave hazard_checking to the default of 2; on maps with no 
lava/slime/trigger_hurt no hazard testing occurs because no bots or players 
die from lava/slime/trigger_hurt so no clock cycles are ever wasted, maps where 
there is alot of lava/slime/trigger_hurt you'll get to 2/4 deaths by hazard 
pretty quickly and hazard_checking will kick in automatically. I suppose if you 
have a super-fast computer you could set this to 3 with no concern (you may not 
see any slow downs with full hazard_testing every clock cycle) but since I don't 
have a fast machine I don't really know. Amen. 

Default Value: 2

2.3.1.5.3 Bot Laser Site
------------------------
bot_site

When the server cvar bot_site is set to 1 all bots turn on their laser sites. 
This is just for show, the bots don't really use them for anything. A good way 
to use up those pesky free edicts. 

Default Value: 0.

2.3.1.5.4 Bot CTF Auto Role
---------------------------
red_auto_role
blue_auto_role

In a CTF game you can set the bots on either team to automatically assume a role 
of defend it's flag, attack the enemy flag or roam the level by setting the server 
cvars red_auto_role and/or blue_auto_role to 1. When a ctf bot spawns/respawns 
it's default role is roam. If the bot acquires enough weapons/ammo to get some 
frags and is somewhat healthy it will automatically change roles; the priority
is to defend the flag, so if the team needs some more flag defenders the bot 
would change roles to defense. If there are enough defenders on it's team and 
the team needs more members attacking the enemy base then the bot will choose a 
role of attack. If his team has enough attackers and defenders then the bot will
choose to remain a roamer, unless he has acquired tons of weapons/ammo, when he'll 
switch to the role of attacker. If blue_auto_role or red_auto_role is set to 0, 
the team member's roles will stay at roam until a human on the team orders him 
to assume a specific role (see the commands in 2.3.1.5.5.2); a bot with a role
of roam will still return the enemy flag to it's team's base.

If the game being played has the cvar ctf set greater than 0 and there are
no team flags present on the map red_auto_role and blue_auto_role should be 
set to 0.

Default value(s): 1

2.3.1.5.5 Explicit Bot CTF Roles
--------------------------------
You can command the bots on your CTF team to assume specific roles when the cvar 
for your team, red_auto_role or blue_auto_role, is set to either 0 or 1. The bot
stays in the role he is assigned until he is fragged or he is commanded to assume 
a different role or the role switches when he picks up the enemy team's flag. 
The roles are:
     
     defend - the bot heads back to his own base (the closest one if multiple
              team flags are present); when he reaches his base he switchs to
              patrolling his base (see the patrol role below). 

     attack - the bot heads for the enemy base. If it gets an enemy flag it will
              switch to role defend and head back to it's own base. If no flag is
              at the enemy base when the bot gets there it will hang around the
              base waiting for a flag to spawn.

     roam - the bot roams the level to acquire weapons, ammo, etc.; it may decide
            to head for the enemy base, it may not. If it gets an enemy flag it 
            will switch to role defend and head back to it's own base.

     patrol - the bot heads to his "patrol node"; when he reaches it he will
            randomly choose a node between 300 and 600 units away and heads for
            it. When he then reaches that random node he heads back to his patrol
            node. The bot will repeat this cycle of heading to a random node then
            heading to his patrol node for as long as he assumes the patrol role.

     travel - the "commander" of the bots specifies a sequence of nodes to follow
            with the "route" command (explained below). The bot first heads
            towards the first specified node; when he reaches it he then heads
            for the second specified node; when he reaches that node he heads for
            the third specified node etc. etc ... when he reaches the last  
            specified node he switchs roles to patrol the last node specified.

     auto - only when the cvar for the bot's team, red_auto_role or blue_auto_role,
            is set to 1, a bot that has been explicitly commanded will return to
            choosing his own role.


Note that a bot commanded to attack, defend or roam will immediately head for 
their own base if they happen to get the enemy flag; commanded bots with the role 
of patrol or travel who have the enemy flag will continue on patrolling or 
travelling their route unless explicitly commanded to change roles. The default 
role for a bot not explicitly commanded to assume a role when the auto role 
cvar for his team is set to 0 is roam. When a commanded bot is fragged he 
immediately forgets his last role and assumes a role of roam when respawning.

2.3.1.5.5.1 Commands For Displaying Node Locations
----------------------------------------------------
   Navigation nodes are data structures that describe the physical locations of  
points on the level; they aren't entities and can't normally be detected on
the map but a temporary entity can be spawned to show the position on the map 
the node data represents. You need to know what nodes are close or where nodes
are located on the level to specify the nodes for some of the ctf role commands.
   Nodes are differentiated by a unique integer node number for each node. The
3d coordinates of the location the node represents is stored in the node data
structure. Additionally, each node has an integer node type attached to it which 
specifies other properties of the node. The different node types and their 
meanings:

	Type#	Type		Properties 
	-----	-------		-------------------------------------
	0	move		a node which can be walked or run to

	1	ladder		<obsolete, jump nodes are placed at ladder tops>

	2	platform	a node at the bottom or top of a moving lift

	3	teleporter	a teleporter or teleporter destination is at this
				node
	
	4	item		a game item is at this node (weapon, ammo, 
				health, etc,)

	5	water		a node is directly above or submerged in water

	6	grapple		the bot uses the offhand hook to navigate to
				grapple nodes

	7	jump		the bot must jump to reach this node; jump nodes
				are placed at the TOP of ladders...
	8	<unused>

	9	door bottom	the node is just above the lowered position
				of a moving door that acts as a lift.

	10	door top	the node is just above the raised position
				of a moving door that acts as a lift

	11	shoot		the bot must shoot a secret door or button at
				the node's location

	12	door open	the node is at a location where a door must
				be opened with the "opendoor" command, mainly
				Action Quake2 maps; a few non-AQ2 maps have 
				door open nodes at rotating doors. The bot
				checks the door is in the open position before
				attempting to navigate thru the door.

  The "path" from one location on a map to another location on the map consists
of the sequence of nodes the bot must travel. The bot always plans the shortest
possible path when moving between map locations.
   The lOkO mod stores the navigation nodes to a disk file in the lokonav 
directory off the quake2 directory in "noodle" files with an extension of ".ndl";
The "noodle" files store node location, the node type and each node adjacent to
the node which can be navigated to from the node.
    When a map is loaded by the server which has not been "noded" the game dll 
creates an initial set of nodes, one node at the location of each item (ammo, 
weapons, health, etc.), at each teleporter and teleporter destination and at the 
top and bottom of each platform. 

See the LOKOPATHING.txt file for additional information about nodes and paths.

2.3.1.5.5.1.1 The findnode command
-----------------------------------------
The find node command finds the closest node to your position within 128 units
and displays in the console it's unique node number, it's node type number and 
the map coordinates the node represents; a colored sphere is displayed on the 
level at the node's location, the TOP of the sphere represents the exact position.
For example, the text displayed in the console for the findnode command might
look like this

  node 12 type 4 <120.000  300.000 24.125>

As an example, suppose you would like to command a bot on your team to patrol 
the BFG on q2ctf1. You first must determine the node at the BFG. Navigate to
the exact position of the BFG and issue the findnode command. A green sphere
should appear at the BFG's location and the node number, 3d coordinates and 
the node type (4) should be displayed in the console.

Bind a key to the findnode command, ie. bind F11 "findnode"


2.3.1.5.5.1.2 The shownode command
-----------------------------------------
The shownode command takes an integer argument of a node number and displays in 
the console node type number and the the map coordinates the node represents; a 
colored sphere is displayed on the level at the node's location, the TOP of the 
sphere represents the exact position. "sn" is a synonym for the shownode command.
Example:

	shownode 54        
     or
        sn 54

might display in the console:

  	node 54 type 3 <-1024.000 1600.000 324.125>


2.3.1.5.5.1.3 The shortpath command
-----------------------------------
The shortpath command takes two integer arguments representing the "from" node
number and the "destination" node number; the sequence of nodes representing
the shortest possible path from the "from" to the "destination" nodes is 
displayed in the console along with each node's node type number; a colored
sphere is displayed on the map at each node's location . Only the first 
fifteen nodes of the "path" are reported on and displayed. "sp" is a synonym
for the shortpath command. For example:

	shortpath 75 400
     or
	sp 75 100

might display in the console:

	node 76  type 4
	node 177 type 0
	node 178 type 0
	node 200 type 0
	node 199 type 0
	node 44  type 4
	node 42  type 4
	node 335 type 0
	node 400 type 0


2.3.1.5.5.1.4 The itematnode command
------------------------------------
The itematnode command takes an integer argument of a node number (of an item 
node) and displays on the console the classname of the item in the item table 
at the specified node.


2.3.1.5.5.2 Commands For Explicit Bot CTF Roles
-----------------------------------------------
There are two commands that control bots ; the stuff between <> is mandatory, 
between [] is optional (don't include the <> or [] in the actual command!):

   route <botname> <1st node> [2nd node] [3rd node] ... [8th node]

      The route command tells the bot to change to travel role and head for 
      <1st node>; when he reaches <1st node> he then heads for [2nd node],
      etc. You can specify up to eight nodes for the bot's route. It is not 
      necessary to specify each node of the route; rather, think of the nodes
      specified as check points or sign posts; the bots travels the shortest 
      path of nodes to whatever node is their current route node, then switches 
      route nodes to the next route node and travels the shortest path of nodes 
      to that node, etc. When the bot reaches the last node in his route he will
      switch roles to patrol and patrol the last node of his route.

      Note: you *cannot* specify node 0 as a route node; most noodle files have
      node 0 moved off the map so it is never encountered but some older noodle      
      files may have node 0 as an accessible node.

      Example:

          route b1 43 75 88 130 27

          commands the bot named b1 to use the specified nodes as a travel route.



   role <botname> <rolename> [patrol node] [patrol timeout]

      The role command tells the bot what role to assume.
     
        <botname> is the name of the bot to command

        <rolename> is the role he is commanded to assume; the possible roles are

            roam (or r)
            attack (or a)
            defend (or d)
            patrol (or p)
            travel (or t)
            auto (when the auto role cvar for his team is 1)

       The patrol role option with no node specified causes the bot to patrol 
       his own base until he is fragged or commanded to assume another role.                      
       Specifying a patrol node causes the bot to patrol the node specified 
       until he is fragged or commanded to assume another role. If a patrol 
       timeout is specified (in seconds) the bot will patrol the node for the 
       specified time period then revert to roaming. 

       The travel role option must be issued *after* a bot has been issued a 
       "route" command (see above) or else the travel command is ignored, ie. 
       a bot with role travel can be told to switch to another role; later he 
       can commanded to resume his travel route by issuing the role command 
       with the travel keyword.
  
      Examples

        role r2 roam
        or 
        role r2 r
              
            commands bot r2 to roam the level.
    

        role r1 attack
        or 
        role r1 a
              
            commands bot r1 to head for the nearest enemy base.


        role b4 defend
        or 
        role b4 d

           commands bot b4 to head for his team's nearest base. When he gets
           there he switches to the patrol role and patrols the base. 


        role b12 patrol
        or 
        role b12 p

           commands bot b12 to head for the his team's nearest base and patrol it.

        role r2d2 patrol 56
        or 
        role r2d2 p 56

           commands bot r2d2 to head for node 56; when he gets to node 56 he
           patrols around it until he is fragged or ordered to assume another role.


        role xxx patrol 300 120
        or 
        role xxx p 300 120

           commands bot xxx to head for node 300; when he gets to node 300 he
           patrols around it until 120 seconds have elapsed, he is fragged or is
           ordered to assume another role. If he is alive after 120 seconds have
           elapsed he switches roles to roam.


        role b3 travel
        or 
        role b3 t

           commands bot b3 to resume travelling along the route *previously
           specified* with the "route" command; when he gets to the last node of 
           his route he switches roles to patrol and the last node of his route
           becomes the node he patrols. He continues patrolling that node until 
           he is fragged or ordered to assume another role.


        role "Dirty Hairy" auto

           tells the previously commanded bot named Dirty Hairy to return to
           automatically choosing an appropriate role when the cvar for his
           team, red_auto_role or blue_auto_role, is set to 1; if set to 0
           the bot will assume a role of roam.

         

2.3.1.5.6 Bot Navigation Without the Off-Hand Hook
--------------------------------------------------
no_hook_navigation

When the server cvar no_hook_navigation is set to 1 bots will not use the off-hand 
hook for normal navigation around the level, but will still use it to get out of 
lava/slime. This is a 'latched' cvar that won't take effect until the level 
changes. Be forewarned, this has been added as an after thought; many levels I 
have made paths for in the past may have only 1 path to/from  an item which uses 
the hook, by turning no_hook_navigation on the bots won't be able to reach the 
item. If the game is Capture the Flag no_hook_navigation should *always* be set 
to 0.

Default : 0.

2.3.1.5.7 Bot Hydrophobia
-------------------------
bot_hydrophobia

The server cvar bot_hydrophobia controls the likelihood that a bot will choose a 
route that will take him through water when a land route is also available. This
is a 'latched' cvar that won't take effect until the level changes. The default 
value of 175 will cause the bots to give a small priority to land routes; setting 
bot_hydrophobia to a large value like 400 will cause bots to almost exclusively 
choose land routes; setting bot_hydrophobia to a value smaller than 175 will 
cause the bot to care less whether his route takes him through water or not. 
This cvar setting is most useful on ctf maps like q2ctf1, where the "euclidian"
shortest distances to all the best goodies are through water. On q2ctf1 setting 
bot_hydrophobia to 175 causes the bot's route from flag to flag to be 
exclusively over land; at 150 the bot's route from flag to flag will mostly
be  through water. The lowest possible value of bot_hydrophobia is 1. This is
uber-geeky stuff that only unusual people will be interested in.

Default Value: 175

2.3.1.5.8 Bots and the notarget command
---------------------------------------
notarget

Invoking the standard iD command notarget will cause bots to completely ignore 
you when choosing an enemy, even if you attack them. This command is a toggle,
subsequent invocation of the notarget command turns it on and off. Note that 
the server cvar cheats must be set to 1 for notarget to work, cheater.

2.3.1.5.9 Viewing Bot AI
------------------------
show_bot_ai

When using the chasecam to watch a bot you can view in the HUD the highest 
level movement AI the bot is executing when the server operator sets the server 
cvar show_bot_ai to 1. A short description of each AI move the bot executes
is displayed in the HUD, replacing location damage messages.

Default Value: 1

2.3.1.5.10 Verbose CTF Bots cvar
--------------------------------
verbose_ctf_bots

The server cvar verbose_ctf_bots controls how much CTF bots communicate with 
their human teammates, when set > 0 bots tell all humans on their team when they 
switch roles to attacking the enemy base or defending their base; when set > 1 
commanded bots also tell all humans on their team when they switch patrol nodes 
and when they reach intermediate nodes while traveling a route.

Default Value: 1

2.3.1.5.11 CTF botlocations command
-----------------------------------
The client command botlocations will cause all bots on a client's team to
report there location. If the server cvar freeze_time is set to a value of
30 or greater a bot will report that it's frozen as well as it's location.
"loc" is a synonym for the botlocations command.


2.3.1.5.12 Bot Sound Perception cvar
------------------------------------
The server cvar bot_sound_perception controls if bots sense sounds made by
other clients; set to 1 for bots to perceive sounds, 0 for deaf bots.
Bots never sense sound when playing Capture the Flag or other team play games,
as well as when the game is bots vs humans. Bots that are healthy, well armed
and without a visible enemy will sense and follow the sounds players/bots make 
when firing weapons, picking up items, entering/leaving water, using the 
jetpack, screaming from pain, etc. Bots never hear the sound of player footsteps.

Default Value: 1


2.3.1.5.13 bots_see_thru_water cvar
-----------------------------------
The server cvar bots_see_thru_water controls if bots can detect other players
or monsters through the surface of water; when bots_see_thru_water is set to
0 then bots submerged in water cannot detect other players or monsters above
the surface of water, and bots above the surface of water cannot  detect other
players or monsters submerged below the surface of water.

Default Value: 1

2.3.1.5.14 teleport_dislike cvar
--------------------------------
The server cvar teleport_dislike controls the bot's preference for using teleporters
to navigate the map. A bot uses the shortest route possible to it's destination.
When teleport_dislike is set to it's default value of 0, teleporters that move bots 
great distances are "rewarded" during the distance calculation between teleporters and
their target destinations, causing routes to be calculated that take the bot though 
teleporters; when teleport_dislike is set to a value above 0 the distance calculation 
between teleporters and their target destinations is "penalized" proportional to the
value, causing routes to be calculated that favor using teleporters less. The effect
on bot routes varies from map to map depending on how far the teleporter transports,
but usually setting teleport_dislike to a high value, say, 100 (as little as 20 on
some maps) will cause routes to be calculated that avoid teleporters totally, if 
possible. For example, on the map gotcha.bsp there are two teleporters that move the 
bot around the map; when teleport_dislike is set to 0 the bots constantly use the
teleporters to navigate the map, when teleport_dislike is set to 40 or above a bot
will never purposely use the teleporters on the map even if it's very close to a 
teleporter and the bot's destination is very close to the teleporter target 
destination. No matter what the value of teleport_dislike is, if the only route to a
bot's desired location goes through a teleporter then the bot will use the teleporter.

Default Value: 0


2.3.1.5.15 train_dislike cvar
--------------------------------
The server cvar teleport_dislike controls the bot's preference for using func_trains
to navigate the map; it functions much like the teleport_dislike cvar does for 
teleporters (see 2.3.1.5.14), though the distance calculation for a func_train is
never "rewarded". No matter what the value of train_dislike is, if the only route to a
bot's desired location requires riding a func_train then the bot will ride the train.

Default Value: 0


3.0 Sample Configuration Scripts
---------------------------------
Included in the zip file are a number of configuration scripts to help the server
operator quickly configure the server cvars for the desired game configuration.
The server operator runs the scripts from the console with the exec command:

   exec <scriptfilename>

Here are the names of the scripts and a description of what they do; note you may
want to alter some values to suit your taste, like the cvars weapons_mode, dmflags 
and pro_rocket. The scripts should be run at start up or before the level changes.


straightdm.cfg
    Unadorned vanilla deathmatch: no ctf techs spawn, no dropped back packs, no
    respawn safety, no air strikes, no bouncing blaster bolts, no pro-rocket
    (including fast weapon switching), no sticky grapple, no locational  damage, 
    no homing heads, weapons_mode 0 (only normal Q2 fire mode), max megahealth
    250, no hook, no grapple, no deathmatch monsters. Nothin' except shotgun shells
    and bullet casings ejecting.
   
dm_standard_techs.cfg
    Same as straightdm.cfg except the normal Q2 CTF techs spawn: auto doc, disruptor
    sheild, haste and power amplifier.

dm_all_techs.cfg
    Same as straightdm.cfg except all the techs spawn: auto doc, disruptor
    sheild, haste, power amplifier, voodoo, ammo regen, lightning defense, vampire
    and jetpack.

lithium_like.cfg
    Game play sorta like the lithium mod: same as straightdm.cfg except techs spawn: 
    haste, auto doc, disruptor shield, power amplifier and vampire;
    bots use the off-hand hook for navigation, pro-rocket turned on (including 
    fast weapon switching).

loko_standard.cfg
    The out-of-the-box lOkO config (defaults for all cvars): all techs spawn, respawn
    safety 3 sec., dropped back packs, bot hook navigation, air strikes, bouncing 
    blaster bolts, pro-rocket (including fast weapon switching), sticky grapple, 
    locational damage, weapons_mode 2 (cost mode), max megahealth 999, no
    deathmatch monsters.

loko_extreme.cfg
    A bit more extreme than the default lOkO config: same as loko_standard.cfg 
    except all players can toss homing heads, start with Haste (weapon fire 
    rate doubled) and have jetpacks enabled (hence no voodoo, haste or jetpack 
    techs spawn), max health set to 125, start health set to 125, monster_mode 
    is set to 1 for Monster Sidekicks which cost 1/2 the normal ammo cost,
    no_target_speaker 1 to avoid sound index overflow.

    For more extremeness, give all players 60 rockets at startup 
    (set start_rockets 60) and set the cost of an airstrike at 30 rockets 
    (set air_strike_cost 30), so each player spawns/respawns with two air strikes!

    With all players having the jet pack, it's best to play the extreme 
    configuration on large outdoor levels with lots of vertical action.
    The Fragtown maps and the Bunker maps (bk1 - bk9) are ideal. Many
    Action Quake2 maps play nicely using the extreme configuration too.

railonly.cfg
    An Insta-gib railgun only config: dmflags 8208 (infinite ammo and instant
    items), start with railgun and 50 slugs, all other weapons banned (hence no 
    weapons or ammo spawn on the map), bot hook navigation on, no dropped 
    backpacks, weapons_mode 0 (only the default Q2 railgun mode), all techs 
    spawn, no sticky grapple, no deathmatch monsters.

rocketonly.cfg
    An Insta-gib rocket launcher only config: dmflags 8208 (infinite ammo and
    instant items), start with rocket laucher and 100 rockets, all other weapons 
    banned (hence no weapons or ammo spawn on the map), bot hook navigation on, 
    no dropped backpacks, weapons_mode 2 (ammo cost, meaning *all* the different
    rocket launcher firemodes are available), all techs spawn, pro-rocket 
    enabled, no sticky grapple, no deathmatch monsters.
    
lokoaq2.cfg
    I like to play Action Quake2 levels with this config file; start with    
    body armor, random_health 1 to spawn a large health or mega health at 
    most spawn locations, aq2_doors 1 to make doors behave like AQ2 (doors 
    open with the opendoor command), weapons_mode 2 (cost mode), no_napalm 1 
    so weapon fire modes that produce flames are not available.


4.0 Known Problems
------------------

a. A few maps will not load properly using the default lOkO game configuration;
the message "SZ_GetSpace : overflow" will scroll down the console when the 
level is attempted to be rendered on the display. Many of these maps are guilty
of very high r_speeds due to huge open spaces with many game objects or 
"space" maps, platforms and such suspended over a trigger_hurt item. The problem
is that quake2 runs into problems rendering when many game objects are "visible"
to each other, ie. you can draw an imaginary line between the objects and not
touch any other object or the world. The solution is to reduce the amount of
game objects on the map and there a number of different ways to achieve this:

	1. Set the dmflags bits for DF_CTF_NO_TECH (524288) so no techs spawn.
           This almost always works because you eliminate nine game objects.
           A less drastic solution is to ban the five lOkO techs by their
           respective server cvar and see if the map loads.

	2. Play a game of Tag with game_tag set to 1; in this configuration
           no techs other than the tag tech appear in the game, a reduction
           of eight game objects. Also, dropped backpacks are not present on
           the map when playing Tag. This solution almost always works too.

	3. Run an 'Insta-Gib' server, banning all weapons except the railgun
           (or your preferred weapon), setting the dmflags bits for
           DF_INFINITE_AMMO (8192), start with the railgun with start_rg 1
           (or whatever), start with some slugs with start_slugs 50 (or
           whatever) and ban dropped backpacks with drop_backpacks 0; 
           configured like this the only game objects the server puts on the 
           map are techs, health, powerups and armor, no ammo or weapons are 
           present except the raiguns dropped by fragged players.

        4. Set the server cvar no_target_speaker to 1 to eliminate the 
           target_speaker, thus loading no sounds
         
Known maps with this problem: panzer1, endgame, ground3, resky, leray31,
a few others I can't remember...


b. Amazingly, there have been very few map bsp name duplications amongst the many
maps available for Quake2. I've found a few, here are the versions with lOkObot
supplied route files:

	1492annodomini.bsp - deathmatch version supported, there's a single
            player version with the same bsp name unsupported.

	downtown.bsp - DownTown Revival - remake of DOOM map supported; there
            is an Action Quake2 map with the same bsp name unsupported.

	ecdm1.bsp - The Torture Never Stops by Cows {EC} supported; there is a 
            map by another author with the same bsp name unsupported.

	meat.bsp - Pleased to meat you - supported; there is a 
            map by another author with the same bsp name unsupported.

	ruins.bsp - The Ruins of Ascenzia - supported; there is an Action Quake2 
            map with same bsp name unsupported.

	vertigo.bsp - Ziggurat Vertigo - remake of Quake 1 map supported; there 
            is another quake2 map with the same bsp name unsupported.

	ktdm1.bsp, ktdm2, ..., ktdm8.bsp: these great maps have been released 
            numerous times, once as a pak file with eight maps and then as
            seperate maps. When released seperately the names of some of the
            map bsp names got scambled, ie. a map released in the pak file had 
            a bsp name of ktdm6.bsp was released with a bsp name of ktdm5.bsp.
            The maps supported by the lOkO bot are named as released in the
            eight map pak file.

	bfgforever by sven - there are at least two versions released of this map;
            the main area of the maps are identical but the "back rooms" differ,
            one release has ladders in the "back rooms" and another release has 
            stairways; the loko bot supports the stairways version.

c. Occasionally a monster sidekick will enter a "zombie" state and walk around
the map unaware of any players and not take any damage; I think this only 
occurs when a player/bot spawns a monster sidekick and the player/bot is fragged 
in the same game frame. The monster is harmless and won't attack anyone; 
eventually it will just explode.

d. On rare occasions the machinegun trigger freezes in the fire position and
you can't stop firing or switch weapons until you've used all the bullets
in your inventory. WTF, I haven't found the offending code yet.

e. When using the ycam (third person perspective) the CTF grapple cable is
rendered starting from the position of the camera rather than starting from
the position of the player model being viewed by the ycam; the off-hand hook is 
drawn correctly starting from the player model, however. Weird ...

f. On rare occasions a bot may defy gravity for a few seconds trying to reach 
a jump node.

5.0 Tips and Tricks
-------------------

a. If you are running the lOkO mod on low end hardware there are a number of
methods to improve performance by limiting memory use, lowering cpu usage
and improving rendering speeds:

   1. Play on small maps; less items, less players and less for the game
      game engine to render. There are tons of levels where 4 or 5 players
      is optimal. Also, stay away from maps with huge open areas with high
      r_speeds.

   2. Limit the number of different player models used by bots/players in the
      game. Each different player model used uses a chunk of memory, the game
      will use less memory and run faster if you use one player model and 5
      different skins rather than using two or more player models. 

   3. Many player models come with their own set of sounds, which can consume
      much memory. Try to avoid these and use player models that use common
      sound files, ie. the supermale, actionmale, marine, messiah and other
      player models use the default player sounds of the id male model, the
      crakhor and other models of the fairer sex use the default player
      sounds of the id female model. Using different models that use a 
      common player sound set will lessen memory requirements.

   4. Set the maxclients server cvar as low as possible. The maxclients cvar 
      specifies the max number of players and bots allowed to connect to the
      server and reserves a large chunk of memory when the server starts
      to store client data; the higher the value of maxclients the larger
      the chunk of memory reserved for player data. If you never play against
      more than 7 players and bots then setting maxclients to 8 will limit 
      the memory reserved for client data to the minimium needed. If you can 
      set it even lower then all the better.

   5. Setting the rendering of shadows for game objects off will improve
      performance much on a machine with hardware on the borderline of
      usablilty. Using a lower video resolution may or may not improve
      performance...

   6. Banning weapons and CTF techs will improve game speed as less memory
      is used and less objects are needed to be rendered by the game engine.
      Running an 'Insta-Gib' server with all but one weapon banned, all techs
      banned and no items on the map and no dropped packs will yield the least 
      game memory needed and least game objects rendered on the map.

   7. Set the server cvar no_target_speaker to 1 to eliminate the target_speaker
      items the play sounds on the map; playing the sounds uses computer
      resources to render the sound and the sounds use memory. When 
      no_target_speaker is set to 1 the sounds for target_speakers are never 
      loaded so they never consume memory.

   8. Don't use deathmatch monsters, monster models and sounds use memory.


b. If you have a fast cpu with alot of memory you can improve game performace
a bit if you just want to play alone on your server against bots by starting a
dedicated server process on your machine, starting another Quake2 process and 
connecting to the dedicated server on your own machine. Since the dedicated server 
isn't connected to a display and doesn't have to actually render anything on a 
display and the "remote" connection the dedicated server is hosting is really
the same machine, the dedicated server only has to run the dll while the other 
Quake2 process connecting to it only has to render what the server tells it to 
render. This improves video performance a bit and the game dll zips along nicely.
