                  - Expert Quake2 Version 3.0 -

For detailed info on game behavior, for instance impulse commands and
exact damage values for weapons, see the client-side documentation,
user.txt

------------------
Expert Quake2 Info
------------------

	Expert Quake2 is the product of extended design focusing on game
depth and playability.  Through many means, including balance and
lowered lethality, simple-minded tactics such as camping and 
ambushing are eliminated in Expert because they are ineffective,
and reflexes and ping have a reduced role in the game.  Only through
great skill and teamwork can players excel at Expert.

Expert Quake web site at PlanetQuake:
http://www.planetquake.com/expert/

Expert News (also at PlanetQuake):
http://www.planetquake.com/eqnews/

Expert Quake Clans (clan hosting!)
http://www.eqclans.com/

The Coliseum (clan ladder)
http://coliseum.eqclans.com/

-----
Setup
-----

	Unzip the contents of the zip file into your Quake2 directory,
or if you have already unzipped the file, move the resulting folder
called "expert" into your Quake2 directory.

	In the folder "expert", there is a batch file called 
"expert.bat".  Move this file into your main Quake2 directory (i.e. 
where quake2.exe is) and you should be able to run "expert.bat"
and start an Expert server.  This batch file will start up a server 
using Expert Quake with the "Combat Deathmatch" config listed below.

	Several other configurations are provided, and are documented 
below, as are all the options you could possibly set if you made 
your own config file.

	If you intend to run an Expert CTF server, you need to move
any existing "ctf" folder out of the way, and either copy or 
rename the "expert" directory to "ctf".  You will also need to
grab the "pak0.pak" file from Threewave CTF for Quake2 and place
it in the "ctf" directory.  One location of an archive containing
this file is:
ftp://ftp.cdrom.com/pub/idgames/idstuff/quake2/ctf/q2ctf102.zip

	Please drop evilbob (evilbob@ocis.net) a note about your 
Expert Quake2 server.  Your server will be advertised on Expert
News and you can be added to the Expert Servers mailing list for
news and pre-release server updates.

--------------
Expert Configs
--------------

	The following .cfg files are provided with Expert Quake.
To use any of these, either replace "exdmc.cfg" in the provided 
"expert.bat" batch file to the config you want to use, or create
your own batch file.

	In the case of teamplay .cfgs other than Expert CTF, you 
must also edit "teams.txt".  See Enforced Teamplay below for
directions.

Small Strategy DM ------- exdms.cfg ------ 2-4 player deathmatch

Expert weapons, but not balanced items or alternate powerups.
Newly spawned players are not helpless, but the game revolves
around efficiently gathering armor and powerups.  All players
should be intimately familiar with level.  Going over 4 players 
will start to introduce randomness.

Combat DM --------------- exdmc.cfg -------- Any size deathmatch 

All balance options enabled and free gear.  Almost purely 
combat-based DM: a series of even fights.  Should scale to large 
numbers of players at high density without becoming very random.

Clan Strategy Teams ----- extms.cfg ------- 4-14 player teamplay

Like small strategy DM.  Intended only for team matches where
all players know the level intimiately and both teams have pre-
arranged strategies for controlling powerful items in the level.

Combat Teams ------------ extmc.cfg ---------- Any size teamplay

Like Combat DM.  Should scale to large numbers of players at
high density without becoming very random.

NOTE: Adding Expert Hook to any of the above should preserve
gameplay.

Expert CTF -------------- exctf.cfg ------------ 6-18 player CTF

Like Combat Teamplay, with flags and capture the flag scoring.

NOTE: on appropriate levels, Expert CTF without hook plays very 
well.

--------------------
Custom Configuration
--------------------

Expert Quake2 is a highly configurable mod, with most features
fully customizable from the console.  Console variables (cvars)
control the behavior of an Expert Quake2 server.  Each cvar
is a bit-field, with each bit toggling an associated feature.
To set a cvar, use the command "set <cvarname> <value>" at the
server console, for example "set expflags 80".

--------------------------
Expert Feature Description
--------------------------

The cvar "expflags" controls features that affect deathmatch
and basic teamplay.

Detailed descriptions of effects are given in user.txt

The bits controlling deathmatch features are as follows:

1					Expert Weapons
	Weapons left unbalanced by id (eg blaster) are balanced.
	Various changes reduce randomness, increase the skill 
	required to use weapons, increase control, and reduce the 
	importance of ammo.
	
2					Balanced Items
	With balanced items set, players cannot gain large
	endurance advantages by picking up armor or powerups,
	and health and armor is quickly restored to injured
	players to ensure even combat.

4					Free Gear
	Players are given all weapons and significant ammo on 
	spawn.

8					Expert Powerups
	The most powerful powerups (quad, invulnerability and power 
	shield) have different, less powerful effects so that they 
	do not become focal points of the game, and so that skill
	is required to make effective use of powerups.

16					No Powerups
	Prevents the most powerful powerups (quad, invulnerability,
	and power shield) from ever spawning into the level.

32					Expert Hook
	Expert treats the hook as an action, like jumping, which is 
	completely independent of weapons use.  The hook is a movement 
	tool.  Players are given a hook on spawn, which can be used
	by binding a key to "+hook".

64					No Hacks
	Various changes to reduce the utility of cheating.  Players
	and projectiles easier to see, especially in the dark.

128					Player ID
	When looking in the vicinity of another player, that player's
	name appears near the bottom of the screen.
	
256					Enforced Teams
	When players join, they will be assigned to one of a set of
	teams predefined in teams.txt.  Players will be prevented from
	changing model or skin to a setting not allowed for their 
	team.  Players may switch teams using the "team" command.
	SEE "Expert Teamplay" below

512					Fair Teams
	Players will be prevented from changing teams unless the team
	they are switching to has less members than the team they are 
	currently on.  Only valid with Enforced Teams.
	SEE "Expert Teamplay" below

1024				No Team Switch
	Prevents any team changes.  Players cannot change from the
	team they were assigned when they joined the server.  Only
	valid with Enforced Teams.  Overrides Fair Teams.
	SEE "Expert Teamplay" below

2048				Pogo
	The Pogo is a movement mechanism like the Expert Hook.
	When fired, the Pogo provides a sudden forward and upward 
	thrust that throws the player forward.  The force of Pogo can 
	be combined with jumping or rocket jumping.  When Pogo is 
	enabled, no players ever take falling damage.  Pogo cannot be 
	fired more often than every 0.5 seconds.  Pogo is fired with 
	the alias "+pogo".
	NOTE If both Pogo and Expert Hook are enabled, 
	     only Pogo functions.

4096				Slow Hook
	Only valid with the Expert Hook option.  Players are still 
	given a hook on spawn that is operated by +hook, but the 
	hook is very slow, only usable for getting past obstacles 
	that would otherwise be impassable on foot.  The slow hook is 
	not useful in combat and not useful to speed up travelling 
	where there is a path traversable on foot.  This option 
	is intended to create an effectively hookless game while
	still supporting maps that expect the presence of the hook.

8192				Sky Solid
	The sky will be considered solid for the hook and for 
	explosive projectiles.  This means the hook will stick
	to the sky, rockets will explode on impact with sky, and
	grenades can be bounced off the sky.

16384				No Plats
	Plats, that is, rising platforms, will be removed from the
	level.  Useful when Expert Hook or Pogo is enabled, since
	plats won't be needed to get around, and may get in the way.

32768				Team Distribution
	In CTF, a small graph will appear on the right side of the 
	player's HUD showing the rough distribution of teammates
	over the field, relative to the two bases.	Only valid in 
	CTF mode.

65536				Alternate Restore
	No health, armor or healing powerups spawn in the level.  
	Instead of grabbing items to heal themselves, players are
	healed only by fighting and killing enemy players and by
	regenerating.  This option should only be used with 
	Balanced Items.

131072				Ammo Regen
	All forms of ammo will be removed from the level.  Instead
	of picking up ammo, players regenerate ammo with much lower
	maximum ammo quantities.  The regeneration rates and 
	maximum ammo capacities are designed to prevent running out
	of ammo with any weapon as long as some ammo conservation
	is applied.  Abusing a weapon, such as by continuous 
	filling a corridor with grenades or rockets, will quickly
	lead to running out of that ammo type.
	
----------------------------
Utility Features Description
----------------------------

The cvar "utilflags" controls utility features independent
of gameplay.  Most of these flags turn features OFF, which
are otherwise on by default.

1				ENABLE Gibstat logging
	Log frags and other events in GibStats 1.2 format to 
	the file specified by the cvar "giblog".  The default file is
	"gibstats.log".  The gibstats log always appears in the
	"game" directory, for example in quake2/ctf for a capture
	the flag game.

2				DISABLE Expert Client Obituaries
	Disables the Expert custom obituary system, reverting to
	the obituaries from id software.  For info about the
	custom obituary system, see "obituary.txt".  This file
	also contains all the obituary messages.

4				DISABLE MOTD
	Disable message of the day printing.  By default, if
	a file named "motd.txt" is present in "gamedir", it will
	be displayed to players on initial login.  If "motd.txt" is
	changed, the new message will appear after a level cycle.

8				DISABLE Spawn Message
	Disable messages on spawn.  By default, Expert servers print
	a one-line message on spawn telling users what the game mode is
	and how to get info about Expert features.  If you aren't using
	any Expert features and are running vanilla deathmatch, you
	might want to disable this.

-----------------
Selecting Options
-----------------

To select multiple options, add the numbers of the
options together.

Example:
expflags 96		Expert Hook, No hacks

-----
Modes
-----

Capture the Flag
----------------

Like Threewave CTF, with no "Tech Powerups", many scoring changes, and 
of course any Expert options you wish to enable.

To enable, "set ctf 1" on the server console or in a .cfg file

Arena coming soon
FlagTrack coming soon

--------------
Entmap loading
--------------

If a file is present in quake2/[game directory]/maps named after the
current map but with the extension ".ent", it will be loaded and
used as the entity map for the level.  For example, if a Capture
the Flag server (with a game directory of "ctf") were changing to 
the map base3, the file quake2/ctf/maps/base3.ent would be looked 
for and used if present.

Note: an entity map is a list of "entities" to be placed in a level.
Entities represent basically everything in a level except walls:
health, armor, ammo and powerups, ctf flags and banners.  Entity
maps are typically used to add CTF support to a deathmatch level
and/or to tweak item placement.

One place to get entity maps for use with the Quake2 DM and single
player levels is as part of Vanilla CTF
http://frag.com/vanctf/

-------------------
Flooding Protection
-------------------

Expert servers have a basic flooding protection (floodprot) 
mechanism.  It is automatically enabled and will silence players 
who send 5 messages in 3 seconds for 20 seconds.  In future 
versions of Expert, floodprot will be configurable.

--------------
Bot Protection
--------------

Expert server implement some basic detection of zbots and other
bots that use similar control mechanisms.  The cvar "botaction"
can be set to one of a number of values to indicate what action 
the server should take when a bot is detected:

botaction value         action
---------------         ------
"kick"                  kicks the player and prints a message
                        to the console
"log"                   prints a message to the console only

The default value of "botaction" is "kick".  In future versions
of Expert, better detection may be implemented, as well as more
options for actions when bots are detected (kick and ban for a
certain amount of time, for instance).

----------
Properties
----------

Expert servers have a "properties" system almost exactly like the
"localinfo" system implemented by QuakeWorld servers.

A property is a name/value pair, such as: 
base1 jail4
where "base1" is the name and "jail4" is the value.

Properties are defined with the console command "sv prop".  For
example, to define the example property above:
sv prop base1 jail4

To see the value of a property, use the command "sv prop [prop]".
For example:

sv prop base1
[Server reply]: "base1" is jail4

To remove a property, set it's value to "".  For example:

sv prop base1 ""

To see all currently set properties, simply type "sv prop".  To 
clear all property settings, type "sv clearprops".

Note that all properties are reset every time the server is 
reloaded, which includes every time the command "map" is used to
change the current level.  The command "gamemap" does not reload
the server, so properties persist when the level is changed with
"gamemap".

------------
Level Cycles
------------

Properties can be used to define level cycles.  If a property
is set with the same name as the current level being played
the server will attempt to go to the level that is the property's
value.  For example, a simple three-map level cycle:

sv prop jail1 base3
sv prop base3 mine1
sv prop mine1 jail1

---------------
Level Scripting
---------------

To enabled server operators to change settings on a per-level 
basis, Expert servers support a simple level scripting facility:
immediately before going to a new map, the command

exec [newlevel].cfg

is send to the server console.  Thus if the server is about to 
go to the map "base1", the .cfg file "base1.cfg" will be 
executed if present.

In addition, if a config file named "eachlev.cfg" is present it
will be executed on every level cycle, immediately before the 
.cfg file named after the level that the server is about to 
transition to.  "eachlev.cfg" can be used to reset properties 
that are set by other .cfg file on a per-level basis.

For example, if during a level cycle the fraglimit is normally
40, but for some larger levels, you want to set the fraglimit
to 25, you could create these configs:

eachlev.cfg:
fraglimit 40

jail2.cfg, mine2.cfg, mine4.cfg:
fraglimit 25

Note if the "gamemap" or "map" command is used to change
levels, neither eachlev.cfg nor [mapname].cfg will be executed.

----------------
The "cycle" cvar
----------------

The "cycle" cvar can be used to avoid name collisions between 
files used in more than one game mode.  When the cvar "cycle"
is set, all per-level .cfg files (including eachlev.cfg) and 
some game-mode-specific data files will be looked for in the
subdirectory named by "cycle".  

As an example, say the Expert modification is installed in 
quake2/ctf.  If the cycle cvar is not set, when the server is 
transitioning to the level q2ctf5, the server will attempt to 
execute 

quake2/ctf/q2ctf5.cfg

If the cycle cvar has been set to "ctfbase" the server will 
attempt to execute

quake2/ctf/ctfbase/q2ctf5.cfg

In addition, when the cycle cvar is set, the following files
will be looked for under the subdirectory named by the cycle
cvar:

teams.txt
motd.txt 

--------------------
The "sv set" command
--------------------

As a convenience for use with the level scripting system, a
new server command "sv set" has been added that can be used
to change settings in the "expflags" bitfield.  The syntax
of the command is

sv set [feature] [off]

For examples:

sv set "Expert hook"

would turn the "expert hook" on.

sv set "alternate restore" off

would turn the "alternate restore" feature off.  The names
of features are not case-sensitive.

Here is a full list of the names of all the features
for use with "sv set":

expert weapons
balanced items
free gear
powerups
no powerups
expert hook
no hacks
playerid
enforced teams
fair teams
no team switch
pogo
slow hook
sky hook
no plats
ctf team distribution
alternate restore
ammo regen

Note that the "sv set" command cannot be used while the
server has not actually entered a map, that is, "sv set"
commands will not work if included in the .cfg that starts
the server.  For this reason the usefulness of the "sv set" 
is limited to level scripting.

--------------------
Server Pause Command
--------------------

The command "sv pause" can be used to pause and unpause play
on a server.  While a server is paused, all players are unable
to move, and players cannot take damage, although most other 
functions of the server continue normally.  For example, 
projectiles continue to fly.

-----------------
Disabling Weapons
-----------------

Weapons can be individually disabled so that they will not appear
when a level is loaded, or, if the Free Gear option is enabled,
will not be given to players on spawn.  To disable a weapon,
simply set a property with the name of the weapon and a value
of "remove".  For example

sv prop "Grenade Launcher" "remove"

would disable the Grenade Launcher.  The names of all the
weapons are as follows:

Shotgun
Super Shotgun
Machinegun
Chaingun
Grenade Launcher
Rocket Launcher
HyperBlaster
Railgun
BFG10K

Note that if a weapon is set as disabled while a level is being
played, players who still have the weapon will have it until
they die.  Similarly, if the server is not in Free Gear mode,
the weapon will continue to respawn if it exists in the level.

Note that weapon names that have a space in them, such as Grenade
Launcher, must be quoted: "Grenade Launcher".  Weapon names are
also case insensitive.  Also, any non-blank value, not just 
"remove", will disable the weapon.  

---------------
Expert Teamplay
---------------

The "Enforced Teams" setting enables Expert Teamplay.

When Enforced Teams is enabled, team definitions will be read
from a file called teams.txt.  The cvar "numteams" controls 
how many teams will be active out of all the teams defined in  
teams.txt.  If "numteams" is less than 2, teamplay is disabled.

The format of teams.txt is as follows:

# comment - will be ignored
teamName1=model1/skin1;model2/skin2
teamName2=model3/skin3;model4/skin4;model5/skin5

#another comment
#teamName4=model5/skin5 this definition is ignored

In this example, two teams, "teamName1" and "teamName2", are
defined.  Players assigned to "teamName1" will be forced to
use either "model1" with "skin1" or "model2" with "skin2".

More examples:

The basic CTF teams:

red=male/ctf_r;female/ctf_r
blue=male/ctf_b;female/ctf_b

Males vs Females vs Cyborgs:

male=male/claymore
female=female/jungle
cyborg=cyborg/oni911

Whitespace in a team definition is ignored.  That is:
red =  male/ctf_r      ;   female/ctf_r
is the same as
red=male/ctf_r;female/ctf_r

In Enforced Teamplay mode with "Model Teams", the server will 
enforce that each player assigned to a team use one of the 
models allowed for that team, but will allow the player to use
any skin.  The skin as specified in "teams.txt" will only be
used as a default in the case that a connecting player's model 
needs to change to match his assigned team. 

Note that the Quake2 client (3.14) defaults to model "male"
and skin "grunt" when it sees a skin it doesn't have.  This 
means that if a player on a team using only the female model 
sets his skin to a non-existant skin name, all other players 
would see the player with the bogus skin as "male/grunt" and 
get confused.  

Thus for now the Model Teams combined with Enforced Teams is
probably a LAN-party-only feature.  If you want to play teams
by models, set Skin Teams and enter a long list of allowed
skins for each model team in teams.txt.

Future versions of Quake2 should provide a workaround to this
problem. 

Further teamplay options, such as "Fair Teams", are documented
above. 

The console command "sv switch [playernum] [team]" allows team
switching from console (or via rcon).  A player's "playernum" 
can be determined using the console command "status".  Team
can be either the name of a team (case insensitive) or the 
number of team, numbered from 0 according to order of 
appearance in teams.txt.

For example, to switch player 3 to Blue team:
sv switch 3 blue

-------------------
TeamAudio Expansion
-------------------

The Expert TeamAudio system is primarily documented in "user.txt".

Server admins can make additions to the built-in set of TeamAudio
sounds by setting Properties.  The name of the property is the name
of the audio file to be played, and the value of the property 
indicates whether the sound is Short Range or Team-Wide, and what
gesture is associated with the sound.  For example:

sv prop cheer 3

In this case, if the player sends the command "ta cheer" to the 
server, the sound "cheer.wav" (male or female according to the
sex of the player) will be played for teammates within earshot
of the player who sent the "ta cheer" command.  The number "1"
indicates which gesture the player will do, as follows:

Number   Gesture
----------------------
0        Flipoff
1        Salute
2        Taunt
3        Wave
4        Point

So in this case of "sv prop cheer 3", the player will do the 
"Wave" gesture.  If no gesture should be done to accompany the 
sound, set the property to -1.  If the sound is to be played 
Team-Wide, set the property to 8; Team-Wide sounds don't include 
gestures since the entire team can't see the speaker.  Note that 
if a property is set to a null string ("") or is set to a non-
numeric value, the property will be treated as having the value 
"0".  Some examples:

sv prop retreat 3        // Short Range sound, player waves
sv prop regroupatbase 8  // Team-Wide sound (no gesture)
sv prop dman/needammo -1 // Short Range sound, no gesture.  Sound
						 // is in a subdirectory called "dman"
sv prop killme ""        // Short Range sound, player flipoff's

-----------------------
Modifying Expert Quake2
-----------------------

Source is included partly in the hopes that users will make useful
modifications and bugfixes that can be incorporated in later 
releases.  If you make a modification or bugfix to Expert please 
create a context diff of your changes to the source and send it to 
myrkul@myrkul.org.  You will be credited in this file and on the 
web.

Before sending modifications, please consider the balance and
game depth theme of the Expert patch.  Changes that ruin the
balance of the game will not be accepted even if implemented as
options.  Design-neutral utility patches are always welcome.

Also note that we have endeavored to keep as much code outside of
the original source base as possible.  Please follow that pattern
in your modifications.

The Expert Programming Team is:
-------------------------------

Charles "Myrkul" Kendrick (myrkul@myrkul.org) 
Rich "Publius" Tollerton (rtollert@tranquility.net)
Tim "Blitherakt!" Adamec (blitherakt@blitherakt.com)
Michael "Smeagol" Buttrey (zephyralfredo@agt.net) 
Nelson "TheGriffin" Hicks (thegriffin@usa.net)

Thanks go to:
-------------

Mr. Peach, Spacetec Quake server admin, who came up 
with the idea behind the Expert Hook and implemented it
on his server.

id software for driving the industry toward configurable
game engines.

