				- Expert Quake Version 1.0 -

----------------
Expert Quake Info
----------------

	Expert Quake is a QW mod originally based on JTEAM, or "The Complete Enhanced
Teamplay" by John Spickes.

	The goal of the Expert Quake patch is to turn Quake into the skillful combat game
it can be, rather than the item fetching game it is.  To that end, many previously
unbalanced items in the game have been evened out.  In Expert Quake, combatants are
almost always even, and skill and teamwork are the only things that can make the
difference in the outcome of combat. 

	For a fuller discussion of the design behind Expert Quake, see the Designer's
Guide to Multiplayer Gameplay at

http://www.myrkul.org/qgame.html

	Expert Quake supports all the teamplay options of JTEAM, and all deathmatch
enhancing behaviors can also be turned on and off individually.

The Expert Team is:
-------------------
Charles "Myrkul" Kendrick (myrkul@myrkul.org)
DaScott (dascott@infi.net)
Nelson "TheGriffin" Hicks (thegriffin@usa.net)
Micheal "Smeagol" Buttrey

Thanks go to:
-------------
John "Guru" Spickes of course, for writing JTEAM and writing it well

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

All contributors to ThreeWave CTF for some of the CTF code, the custom
models and sounds for the hook and flags, and the custom CTF levels.

---------------------------
Basic Configuration and Use
--------------------------- 

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

	In the folder "expert", there is a batch file called "expert.bat" which can
be run from your Quake directory.  This batch file will start up a server using
Expert Quake in teamplay mode with various options set.  There are also a multitude of
.cfg files in the "expert" folder, which can be used to start up servers with various
options set.  These config files are documented below, as are all the options you
could possibly set if you made your own config file.

	If you already confused at this point, please DO NOT email the authors.  There
are instructions for basic server configuration posted several places on the web;
a good place to start would be http://www.bluesnews.com/

	If you run an Expert Quake server, please drop us a line!  We try to keep track
of the servers running our patch so that we can point to them from web pages.

--------------------------------
Configuration for Veteran Admins   *** IMPORTANT ***
--------------------------------

	Expert Quake makes use of the the same custom models and sounds for the hook
as are used by Threewave CTF.  If you plan to enable the grappling hook, you may want
to set your servers "gamedir" to "ctf" rather than "expert", so that clients who have
the client packs for Threewave CTF will not have to download the custom hook.

	This release of Expert Quake is also a beta of Expert CTF (same codebase).
To enable Expert CTF, use the "ectf.cfg" file, set the gamedir to "ctf", and make sure
you have all the server-side Threewave 3.0 and 4.0 level packs, along with all the
id levels (e*m* dm*) with CTF entities.  You will also need one additional sound..
sound/expert/flagwave.wav
.. which is included with Expert Quake.

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

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

exdm.cfg----------------10 player enhanced deathmatch
	
	All deathmatch behavior set: item behavior similar to "deathmatch 3" mode from
	id, all balancing options and tweaks are active, Expert Hook enabled.

	This is the recommended Deathmatch mode.

exdmi.cfg---------------10 player enhanced deathmatch, no LoadMod

	As exdm.cfg, but extra health and armor will not be added to the level.

exdmh.cfg---------------10 player enhanced deathmatch, no Expert Hook

	As exdm.cfg, Expert Hook disabled.

ext.cfg-----------------9 player, 3 team enforced teamplay

	As exdm.cfg, but teamplay enabled, with 3 teams of 3 players.  Players can switch
	teams but only to a team with less players.

	This is the recommended teamplay mode.  The included batch file uses this mode.

exti.cfg----------------9 player, 3 team enforced teamplay, no LoadMod

	As ext.cfg, but extra health and armor will not be added to the level.

exth.cfg----------------9 player, 3 team enforced teamplay, no Expert Hook

	As ext.cfg, Expert Hook disabled.

It's easy to whip up your own configs for Expert Quake.  The following section describes
the options that are available, but to give a hint, you can quite easily enable tweaks
like chain-suicide prevention, enable the Expert Hook, perhaps a few other features that
tickle your fancy, and leave everything else untouched.

If you are a programmer, or if you just know enough to twiddle some constants and recompile,
be sure to check the last section.  Expert Quake is well written and well commented code that
is very easy to expand upon or modify.  Write something cool.. we'd love to integrate your
code into the next release.

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

Expert Quake is a highly configurable mod, with most features fully customizable from the
console.  Two internal variables (deathmatch and teamplay) and a serverinfo variable called
"loadmod" are used to turn various options on and off.  All these variables are bitfields,
with each bit toggling an associated feature.

------------------------------
Deathmatch Feature Description
------------------------------

Deathmatch features enhance combat by balancing the game, and are meant to be used in both
Deathmatch and Teamplay modes. 

The bits controlling deathmatch features are as follows:

	1	Items Respawn
		When turned on, health and ammo will respawn after being collected.
		When off, health and ammo can be collected only once.
	2	Weapons Stay (persistent weapons)
		When on, weapons remain in place after being collected, and cannot
		be picked up multiple times to stockpile ammo.  When off, weapons
		respawn similarly to any other item, and can be grabbed multiple times.
	4	Balanced Weapons
		All weapons are "equalized" so that every weapon is of roughly equal
		power, although each weapon is more or less effective in different combat
		circumstances.  This adds more variety to weapon use, reduces weapon
		camping, and helps make skill determine combat outcome.  Other assorted
		effects, see description below for more details.
	8	Balanced Items
		The amount of armor given for each type is inversely proportional to
		the damage absorption.  For instance, red armor has the highest absorption,
		and so the least amount of armor.  Any armor remaining on dead players 
		ends up in their backpacks, and supershotguns are given on spawn.  See
		description below for more details.
	16	Expert Hook
		Players are given a hook on spawn, which can be used by binding a
		key to the alias "+hook".  Holding the button down extends the hook,
		while releasing the button releases the hook.  No weapon switching is
		required, the Expert Hook fires with any weapon out and that weapon can 
		be fired simultaneously. The hook bounces off other players, and can only
		hold to a surface for a little over 2 seconds before retracting.  Can 
		be used simultaneously with other weapons.  If a player attempts to 
		activate the hook through one of the methods used to activate the 
		old-style hook, such as by sending impulse 22 or by sending impulse 1
		with the axe selected, a message will be printed informing the player
		how to use the new hook.
	32	Randomize Powerups
		Powerups, specifically the Quad Damage, Pentagram of Protection, and Ring
		of Invisibility, will randomly respawn as a different powerup. The 
		probability of the Quad damage spawning is 40%, the Ring is 40%, and the
		Pentagram is 20%. This is for preventing optimal paths through levels,
		timed to pick up powerups.
	64	Alternate Powerups
		An alternate set of powerups will be used.  See below.
	128	Expert Levels
		A loop of levels hand-selected from the four original Quake episodes and
		the DM levels will run.  The list of maps can be changed in the file dm.qc
		(the DMNextLevel() function contains the listing).
	256	Frag Minimum
		Players who attempt to exit the level with less than a
		certain number of frags are killed.
	512	Armor Color
		Shirt colors will be forced to match the type of armor a player is
		wearing.
	1024	Swinging Hook
		Changes the grappling hook into a swinging hook.  This version of the
		swinging hook uses no extra impulses, and a simple physical model of
		acceleration toward the hook's anchor point.
	2048	Performance
		Changes to improve the rendering performance on clients (not network
		performance).  All flickering lights in a level are changed to 
		non-flickering lights of medium brightness to reduce surface redraw.
	4096	Realistic Physics
		More realistic physics are used, such as adding a player's velocity to
		the velocity of fired projectiles.  This has fairly drastic effects
		that may be difficult to get used to.  Recommended only when players are
		very aware that the physics have been are altered, such as in a LAN game.

Balanced Weapons and Items

	Balanced weapons alters both the damage and armor-puncturing qualities of each
	weapon to try and even up the gaps in usefulness between each.

	- Modified weapon damages (especially explosives and axe)
	- Armor penetration for nails, buckshot and lightning
	- 50 Green armor given out on spawn (respawning players aren't as easy a target)
	- Super NailGun takes one nail per shot
	- Normal NailGun nails have higher airspeed
	- Less resistance to splash damage from one's own explosions
	- Less kickback on heavy weapons fire, but still full rocket jump height
	- Reduced lightning gun discharge damage

	Balanced items alters items other than weapons (such as armor) to achieve balance.

	- Armors with higher absorption have less amount:
		o Red armor 60% absorption, 100 amount
		o Yellow armor 45% absorption, 130 amount
		o Green armor 30% absorption, 160 amount
	- Remaining armor is placed in backpacks on death
	- Health gained from the 100 Health rots away at double the rate
	- Players are given the Super Shotgun on spawn in addition to the normal shotgun
	- Quad and Pentagram make sound periodically so they can be recognized

	Alternate Powerups are:
	o Quad becomes the Glyph of the Lich: you take back as health 1/2 of 
	the health damage you do to other players.
	o Pentagram becomes the Fiend Glide: ability to jump like a fiend
	o Ring becomes the Ring of Will: weapon hits don't push you around
	
	None of the alternate powerups cause the user to glow.  The alternate powerups
	are less inherently powerful in order to prevent them becoming focal points in 
	a deathmatch, and less dangerous to other players so they don't require
	the warning glow.

----------------------------
Teamplay Feature Description
----------------------------

Teamplay features control team setup and enforcement, and how teammates
can interact with each other.

The bits controlling teamplay features are as follows:

	1	Health Protect
		Players receive no health damage from teammates' attacks.
	2	Armor Protect
		Players receive no armor damage from teammates' attacks.
	4	Damage to Attacker
		A player who attacks his teammate will receive the same
		damage the teammate would have received, had he not been
		protected.
	8	Frag Penalty
		Any player who kills his teammate will be penalized frags.
		The number of frags to penalize is adjustable by a simple
		edit in the teamplay.qc file.
	16	Death Penalty
		Any player who kills his teammate will burst apart in a
		bloody mess.
	32	Team Color Lock
		Players will only be allowed to be certain colors.  Team
		colors can be specified for up to four teams in the
		teamplay.qc file.  Players who have illegal colors
		when they enter will be put into the team with the fewest
		members.  Any player who changes team (pants color) will
		be fragged and their frag count is reset to zero.
	64	Static Teams
		Players will not be allowed to change teams.
	128	Fair Teams
		Players are allowed to change to a team with fewer
		members than their current one.
	256	Shirt Enforcement
		Player's shirt color must match pant color.
	512	Drop Items
		Players will be allowed to drop ammo and weapons.  
		IMPULSE 20 will drop a backpack and IMPULSE 21 will 
		drop the current weapon.  You can't drop the axe or
		single-shotgun.
	1024	Boot Negs
		Boots players who get too many negative frags.  Useful
		on servers that allow friendly fire with negative frags
		for killing teammates, to prevent server abuse.
	2048	Friendly Fire Notification
		Players who shoot a teammate repeatedly will be informed
		that they are shooting a teammate.
	4096	Team Score Printing
		The Team score, as the total number of frags for all
		players on each team, will be printed periodically, and
		will be the basis for fraglimit.  This option is only
		valid with "Team Color Lock".

---------------------------
LoadMod Feature Description
---------------------------

LoadMod can be used to modify the items that appear on a level, including adding more items
to the level.  LoadMod options are set by defining a serverinfo variable "loadmod".  For
instance, placing the following in your server's .cfg file:

serverinfo loadmod 17

.. will cause loadmod to be active, enabling the options listed below by 1 and 16.

In the current release, LoadMod is severely under-utilized.  LoadMod can do just about
anything to the items that appear on a level, including, for instance, placing an
entirely new kind of item evenly throughout the level (with minor code modification).

The loadmod bits are as follows:

	1	Quota Add
		Health and Armor are added dynamically to a level to meet the
		demand of the number of players allowed in the game.  They will be spawned
		on top of other items as far from items of the same type as possible.
	2	Quota Remove [NOT CURRENTLY IMPLEMENTED]
		Health and Armor are removed dynamically from a level where there
		are surpluses.  They will be removed starting with those as close to other
		items of the same type as possible.  This can have unexpected behavior on
		large maps with few players.  
	4	Redo Items [NOT CURRENTLY IMPLEMENTED]
		Health, Ammo, and Armor are completely replaced to redistribute these
		powerups amongst the map.
	8	Remove Pentagram
		Removes any "Pentagram of Protection" artifacts from the current map.
	16	Remove Ring
		Removes any "Ring of Invisibility" artifacts from the current map.
		(Useful for team games)
	32	Remove Quad
		Removes any "Quad Damage" artifacts from the current map.

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

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

Examples:
teamplay 96		Team Color Lock, Static Teams
			This results in players being automatically assigned to
			teams and being prevented from changing to other teams.
teamplay 3		Health Protect, Armor Protect
			You can't hurt your teammates' health OR armor.
teamplay 28		Mirror Damage, Frag Penalty, Death Penalty
			When you shoot your teammates, you take damage and so
			do they.  If you kill a teammate, you'll take a frag
			penalty and you'll be killed.
teamplay 120		Static Teams, Color Lock, Frag Penalty, Death Penalty


----------------
Conflicting Bits
----------------

Obviously, not all of the available options make sense together.  Here 
is a listing of all conflicts between features, or features that nearly
cancel each other's effect.  Typically you don't want to use these together:

Shirt Enforcement (teamplay) and Armor Color (deathmatch)
	Causes the shirt color to shift constantly between your armor color and
	your team color.
Frag Penalty (teamplay) and Health Protect (teamplay)
Death Penalty (teamplay) and Health Protect (teamplay)
	Other than telefrags, you won't be able to kill your teammate due to
	Health Protect.  However, you probably _do_ want to set Frag Penalty
	with Health Protect, so that teammates can't get frags for telefragging
	each other.
Static Teams (teamplay) and Team Color Lock **OFF** (teamplay)
	Players will end up stuck with whatever team they happened to be when
	they joined the server.
Static Teams (teamplay) and Fair Teams (teamplay)
	Static teams overrides Fair Teams, so you won't be able to change teams.
	Period.
Remove Powerup (loadmod) and Randomize Powerups (deathmatch)
	You can do some interesting things with combinations of "Remove Quad" (loadmod), 
	"Remove Ring" (loadmod), "Remove Pentagrams" (loadmod), and "Randomize
	Powerups" (deathmatch).  Essentially, any powerups you opt to remove will be
	gone, but the remaining powerups (if any) can still respawn as any other powerup,
	INCLUDING the ones you removed.  Just be aware of this unusual condition.

------
Quirks
------

In the original QuakeWorld source, ammo respawns at different rates in
"deathmatch 1" mode vs "deathmatch 3" mode.  In this mod, ammo respawns
at the faster rate whenever the Respawn Items bit is set.

There is an engine-level bug in the current Quakeworld release (1.55 client)
that causes a single "missile" (rocket, nail, grenade, or any other munition
with hang time) to occasionally hit a target and do damage, and then somehow
hit that target and do damage AGAIN before the missile is removed from the
game.  This is most obvious with rockets, but happens with other weapons as
well.  We've dubbed this bug the "Duplicate Missile Touch", and we have code
in place to prevent more than one touch from counting.

Take a close look at the "conflicting bits" listing above and be sure you
know what you are doing before trying to use these features together.  They
can cause some REALLY bizarre effects if you don't.

In order to change teams, players must attempt to change color.
Attempting to change team name (by typing "team blah") will not
have an effect, nor will attempting to change skin.

--------
MOTD Use
--------

Most of the MOTD functionality resides in motd.qc.  If you want 
to change your MOTD, you can modify motd.qc.  It's a simple matter
of changing the print statements to say what you want.  

The MOTD is printed for players when they first join the server and 
after every level change.

------------
Future Plans
------------

Imagine CTF with the Expert Hook (optional), better balance, better scoring, and a
hand-picked level set!  This is coming soon.

---------------
For Programmers
---------------

Expert Quake adds several source files to the standard distribution:

teamplay.qc
	All the team setup and enforcement code.

dm.qc
	All the deathmatch enhancement code.

loadmod.qc
	All the code for LoadMod, which can modify the list of items in a level at load
	time, fulfilling quotas for types of items, disabling certain items, or anything
	else you can think to use the code for.

grapple.qc
	Grappling hook functions.

[BETA CODE FILES]

ctf.qc
	CTF control code.

status.qc
	Status bar for CTF.

ident.qc
	Player identify function, part of the status bar for CTF.

Wherever possible, we have tried to minimize the changes to the original codebase
(thank god for John Spickes starting this trend with JTEAM).  For instance, LoadMod
is only dependant upon a single small change in world.qc, so you could easily add it
to another mod (if you do so please let us know).  Wherever significant behavior
needed to be added, there are calls out to functions defined in one of the added
source files.

When searching for changes, use these keys:

	Expert
		Should hit all Expert Quake related code in standard distribution files.
	DM_
		Anything related to the "deathmatch" bitvector.
	TEAM_
		Anything related to the "teamplay" bitvector

The codebase for Expert Quake has been carefully factored and commented for easy
modification and porting.  If you make a good modification to Expert Quake, that
is, a modification that adds to the game without destroying balance, we'd love to
include it.

Expert Quake is also the ideal base on which to build your own custom mods, whether
the focus of the mod is balance or not.

--------------------
Source Code Settings
--------------------

	Besides the teamplay, deathmatch and loadmod settings, there are some 
other options that can be modified by editing the source.  These options
are constants at the beginnings of teamplay.qc, dm.qc, and loadmod.qc and
are marked so you can find them.  One such option specifies the default frag
penalty.  This is the number of frags that will be deducted for killing 
a teammate when the Frag Penalty setting is enabled.

	There are four constants in teamplay.qc which allow configuration of
the color that will be used for teams.  Up to four teams can be enabled, so
there are four colors:

float   COLOR1 =   4; // red
float   COLOR2 =   13; // blue
float   COLOR3 =   11; // green
float   COLOR4 =   12; // yellow

By default, the server will enforce that all players are wearing skins
that allow the players to be told apart by color.  Alternately,
teams can be told apart by the skin they are wearing.  To set this up,
go into teamplay.qc and edit the skin names in the function 
TeamSkinForTeam().  You may also want to edit the names of the teams in
TeamNameForTeam().  No understanding of the code is required.

The file dm.qc contains the damages of the equalized weapons and stats for
the modified armors, splash damage, weapon kickback, and suicide delay.
These constants are marked in dm.qc by the comment /** MODIFIABLE CONSTANTS **/

The file loadmod.qc contains the quotas for armor, health, and various ammos.
The numbers are a per-player fraction.  Again, look for the comment
/** MODIFIABLE CONSTANTS **/

If you change any of the constant values, you must recompile before
your changes will take effect.
